Saya sering ingin mencoba dan merangkum setiap dimensi dari kubus dan apa yang mereka wakili, jadi saya akan mencoba yang ini.λ
Tetapi pertama-tama, seseorang mungkin harus mencoba untuk menguraikan berbagai masalah. Prover teorema interaktif Coq didasarkan pada teori tipe yang mendasarinya, kadang-kadang dengan penuh kasih disebut kalkulus konstruksi induktif dengan alam semesta . Anda akan perhatikan bahwa ini lebih dari sekadar “Kalkulus Konstruksi”, dan memang, ada lebih banyak hal di sana daripada hanya CoC. Secara khusus, saya pikir Anda bingung tentang fitur mana yang ada di CoC yang tepat. Secara khusus, pembedaan Set / Prop dan alam semesta tidak muncul dalam CoC.
Saya tidak akan memberikan gambaran lengkap tentang Sistem Jenis Murni di sini, tetapi aturan penting (untuk PTS fungsional seperti CoC) adalah sebagai berikut
Γ⊢A:sΓ,x:A⊢B:kΓ⊢Πx:A.B : k (s,k)∈R
di mana adalah elemen dari set tetap S dari macam , dan pasangan ( s , k ) adalah dalam satu set tetap R pasang S , yang disebut aturan .s,kS(s,k)RS
The wawasan penting adalah bahwa pilihan hati-hati dan R membuat perbedaan besar dalam apa jenis produk Π x : A . B sebenarnya mewakili!SRΠx:A.B
Secara khusus, dalam kalkulus konstruksi, himpunan macam adalah
{ ∗ , ◻ }
Sering disebut Prop dan Tipe (meskipun terminologi ini agak membingungkan bagi pengguna Coq karena alasan saya akan bicarakan nanti), dan lengkap seperangkat aturan:
R = { ( ∗ , ∗ ) , ( ◻ , ◻ ) , ( ◻ , ∗ ) , ( ∗ , ◻ ) }S
{∗,□}
R={(∗,∗),(□,□),(□,∗),(∗,□)}
Dan jadi kami memiliki 4 aturan yang sesuai dengan 4 tujuan berbeda:
: Jenis fungsi(∗,∗)
(□,□)
(□,∗)
(∗,□)
Saya akan menjelaskan masing-masing lebih terinci.
A→BΠx:A.BxB
∗natboolx=yxy∗
Ketik keluarga : ini memberikan Anda kemampuan untuk berbicara tentang familly sendiri, memang sebagai istilah juga diketik l i s t : * → * , bukan hanya contoh l i s t n al i s tl i s t :*→*l i s tn a t, L i s tb o o l∗ → ∗( □ , □ )
Π t : ∗ . t → t
λ ( t : ∗ ) ( x : t ) . xΠ t : ∗ . _( □ , ∗ )t → t(∗,∗)
A∧B:=Πt:∗. (A→B→t)→t
A ∨ B : = Π t : ∗ . ( A → t ) → ( B → t ) → t
⊥ : = Π t : ∗ . t
⊤ : = Π t : ∗ . t → t
∃ x : A . P ( x ) : = Π t : ∗ . ( Π y : A . P ( y)→t)→t
(∗,□)
∗∗(□,∗)
(□,□)
Πc:∗→∗. c nat→c nat
Jenis dependen : Ini adalah bagaimana Anda mendapatkan proposisi-sebagai-jenis0=1
= : nat→nat→∗
= : Πt:∗. t→t→∗
nat→nat→∗(∗,□)
□→□□ □□ii=1,2,3,…□i:□i+1
Aturan apa yang kita inginkan untuk ini? Satu aturan alami adalah(□i,□i)
Γ⊢A:□iΓ⊢A:□j i≤j
Dengan jenis dan aturan ekstra ini, Anda mendapatkan sesuatu yang bukan PTS, tetapi sesuatu yang dekat. Ini adalah (hampir) Kalkulus Konstruksi yang Diperluas , yang lebih dekat dengan basis Coq. Bagian besar yang hilang di sini adalah tipe induktif, yang tidak akan saya bahas di sini.
Sunting: Ada referensi yang agak bagus yang menggambarkan berbagai fitur bahasa pemrograman dalam kerangka PTS, dengan menjelaskan PTS yang merupakan kandidat yang baik untuk representasi perantara dari bahasa pemrograman fungsional:
Henk: Bahasa Antara yang Diketik , SP Jones & E. Meijer.
soft-question
. Saya tidak melihat pertanyaan teknis yang sebenarnya di sini. Mungkin Anda bisa sedikit lebih spesifik dengan apa yang Anda tanyakan?