Tôi đã thường muốn thử và tóm tắt mỗi chiều của -cube và những gì mà họ đại diện, vì vậy tôi sẽ cung cấp cho này một một shot.λ
Nhưng trước tiên, có lẽ nên cố gắng khắc phục các vấn đề khác nhau. Câu tục ngữ định lý tương tác Coq dựa trên một lý thuyết kiểu cơ bản, đôi khi được gọi một cách đáng yêu là phép tính của các cấu trúc quy nạp với vũ trụ . Bạn sẽ lưu ý rằng đây là một câu nói hay hơn là "Tính toán công trình", và thực sự, có rất nhiều thứ trong đó hơn là chỉ có CoC. Cụ thể, tôi nghĩ rằng bạn đang bối rối về chính xác các tính năng trong CoC thích hợp. Cụ thể, sự phân biệt Set / Prop và vũ trụ không xuất hiện trong CoC.
Tôi sẽ không cung cấp tổng quan đầy đủ về Hệ thống loại thuần túy ở đây, nhưng quy tắc quan trọng (đối với các PTS chức năng như CoC) là như sau
Γ⊢A:sΓ,x:A⊢B:kΓ⊢Πx:A.B : k (s,k)∈R
nơi là những yếu tố của một tập cố định S của các loại , và các cặp ( s , k ) là trong một tập cố định R của cặp S , được gọi là quy tắc .s,kS(s,k)RS
Sự thấu hiểu rất quan trọng là sự lựa chọn cẩn thận của và R tạo sự khác biệt rất lớn trong những loại sản phẩm Π x : Một . B thực sự đại diện!SRΠx:A.B
Đặc biệt, trong tính toán của các công trình xây dựng, các thiết lập của các loại là
{ * , ◻ }
Thường được gọi là Prop và Type (mặc dù thuật ngữ này là một chút khó hiểu đối với người dùng Coq vì lý do tôi sẽ nói về sau), và đầy đủ bộ quy tắc:
R = { ( ∗ , ∗ ) , ( ◻ , ◻ ) , ( ◻ , ∗ ) , ( ∗ , ◻ ) }S
{∗,□}
R={(∗,∗),(□,□),(□,∗),(∗,□)}
Và do đó, chúng tôi có 4 quy tắc tương ứng với 4 mục đích khác nhau:
: Các loại chức năng(∗,∗)
(□,□)
(□,∗) : Các loại đa hình
(∗,□)
Tôi sẽ giải thích từng điều này một cách chi tiết hơn.
A→BΠx:A.BxB
∗natboolx=yxy∗
listlist:∗→∗listnat,listbool∗→∗(□,□)
Π t : * . t → t
λ ( t : * ) ( x : t ) . xΠ t : * . _( □ , ∗ )t → t( ∗ , ∗ )
Một ∧ B : = Π t : * . ( A → B → t ) → t
Một ∨ B : = Π t : * . ( A → t ) → ( B → t ) → t
⊥ : = Π t : * . t
⊤ : = Π t : * . t → t
∃ x : Một . P ( x ) : = Π t : ∗ . ( Π y : Một . P ( y)→t)→t
(∗,□) cai trị), nhưng điều này sẽ cung cấp cho bạn một ý tưởng về sức mạnh của đa hình.
∗∗(□,∗)
(□,□)
Πc:∗→∗. c nat→c nat
0=1
= : nat→nat→∗
= : Πt:∗. t→t→∗
nat→nat→∗(∗,□) .
□→□□ □□ii=1,2,3,…□i:□i+1 .
(□i,□i)
Γ⊢A:□iΓ⊢A:□j i≤j
Với các loại và quy tắc bổ sung này, bạn sẽ có được thứ gì đó không phải là PTS, mà là thứ gì đó gần gũi. Đây là (gần như) Tính toán mở rộng của các công trình , gần với cơ sở của Coq. Phần còn thiếu lớn ở đây là các loại quy nạp, mà tôi sẽ không thảo luận ở đây.
Chỉnh sửa: Có một tài liệu tham khảo khá hay mô tả các tính năng khác nhau của ngôn ngữ lập trình trong khung PTS, bằng cách mô tả PTS là ứng cử viên tốt để thể hiện trung gian ngôn ngữ lập trình chức năng:
Henk: Một ngôn ngữ trung cấp đánh máy , SP Jones & E. Meijer.
soft-question
. Tôi không thấy một câu hỏi kỹ thuật thực tế ở đây. Có lẽ bạn có thể cụ thể hơn một chút về những gì bạn đang hỏi?