Coq memiliki Prop jenis bukti proposisi tidak relevan yang dibuang selama ekstraksi. Apa alasan untuk memiliki ini jika kita menggunakan Coq hanya untuk bukti. Prop adalah impredikatif, jadi Prop: Prop, bagaimanapun, Coq secara otomatis menyimpulkan indeks alam semesta dan kita dapat menggunakan Tipe (i) sebagai gantinya di mana-mana. Sepertinya Prop menyulitkan semuanya.
Saya membaca bahwa ada alasan filosofis untuk memisahkan Set dan Prop dalam buku Luo, namun, saya tidak menemukannya dalam buku itu. Apakah mereka?
coq
dependent-type
Konstantin Solomatov
sumber
sumber
Jawaban:
sort
yang membawa daftar ke daftar,verify
pi
pi
Sementara hal-hal tambahan tidak sepenuhnya tidak berguna, dalam banyak aplikasi kami ingin menyingkirkannya dan tetap adilProp k k ℓ ℓ k
sort
. Hal ini dapat dicapai jika kita menggunakan ke negara " k memerintahkan" dan " k adalah permutasi dari ℓ ", tapi tidak "untuk semua ℓ ada k ".Secara umum, cara umum untuk mengekstrak kode adalah dengan mempertimbangkan pernyataan bentuk mana x adalah input, y adalah output, dan ϕ ( x , y ) menjelaskan apa artinya bagi y menjadi output yang benar. (Dalam contoh di atas A dan B adalah jenis daftar dan ϕ ( ℓ , k ) adalah " k dipesan dan k adalah permutasi dari ℓ .") Jika ϕ ada di P r o p maka ekstraksi memberikan peta f :∀x:A.∃y:B.ϕ(x,y) x y ϕ(x,y) y SEBUAH B ϕ ( ℓ , k ) k k ℓ ϕ P r o p sehingga φ ( x , f ( x ) ) berlaku untuk semua x ∈ A . Jika ϕ ada di S e t maka kita juga mendapatkan fungsi g sedemikian sehingga g ( x ) adalah bukti bahwa ϕ ( x , f ( x ) ) berlaku, untuk semua x ∈ Af: A → B ϕ ( x , f( x ) ) x ∈ A ϕ S e t g g( x ) ϕ ( x , f( x ) ) x ∈ A . Seringkali buktinya tidak berguna secara komputasional dan kami lebih suka membuangnya, terutama ketika itu bersarang jauh di dalam beberapa pernyataan lainnya. memberi kita kemungkinan untuk melakukannya.P r o p
Ditambahkan 2015-07-29: Ada pertanyaan apakah kita bisa menghindari sama sekali dengan secara otomatis mengoptimalkan "kode tidak berguna diekstraksi". Hingga taraf tertentu kita dapat melakukan itu, misalnya semua kode yang diekstraksi dari fragmen negatif dari logika (barang-barang yang dibangun dari tipe kosong, tipe unit, produk) tidak berguna karena hanya bergerak di sekitar unit. Tapi ada desain keputusan asli seseorang harus membuat ketika menggunakan P r o p . Berikut ini adalah contoh simpe, di mana Σ berarti bahwa kita berada dalam T y p e dan ∃ berarti kita berada dalam P r o p . Jika kita ekstrak dariP r o p P r o p Σ T y p e ∃ P r o p
kita akan mendapatkan program yang menguraikan n menjadi bit terendah b dan bit yang tersisa k , yaitu, ia menghitung semuanya. Jika kita mengekstrak dari
Π n : N Σ b : { 0 , 1 } ∃ k : N
sumber
adalahimpredikatif, yang menciptakan sistem bukti yang sangat ekspresif. Namun "terlalu" ekspresif dalam arti berikut:Prop
tidak konsisten. Biasanya Anda ingin menjaga kemungkinan untuk menambahkan tengah yang dikecualikan, jadi salah satu solusinya adalah menjaga eliminasi besar dan membuat Prop predikatif. Yang lainnya adalah untuk menekan eliminasi besar.
Coq melakukan keduanya! Mereka mengganti nama Prop menjadi Prop untuk Set, dan menonaktifkan eliminasi besar di Prop.
Ekspresi yang diperoleh oleh impredicativity adalah "meyakinkan" dalam arti 99% dari matematika "masuk akal" dapat diformalkan dengannya, dan itu diketahui relatif konsisten dengan teori yang ditetapkan. Ini memungkinkan mereka tidak akan melemahkannya menjadi sesuatu seperti Agda, yang hanya memiliki alam semesta predikatif.
sumber
Prop : Prop
, itu tidak konsisten. Sebaliknya kuantifikasi atas semua proposisi lagi-lagi merupakan proposisi.Bahkan jika Anda tidak tertarik untuk mengekstraksi program, fakta bahwa
Prop
impredikatif memungkinkan Anda membangun beberapa model yang tidak dapat Anda bangun menggunakan menara predikatif alam semesta. IIRC Thorsten Altenkirch memiliki model Sistem F menggunakan impredicativity Coq.sumber