Apa perbedaan antara Set dan Ketik dalam Coq? [Tutup]


13

Jenis AFAIU dapat berupa Setelemen yang merupakan program atau propositionelemen yang merupakan Bukti. Jadi berdasarkan pemahaman ini:

Inductive prod (X Y: Type) : Set := 
| pair: X -> Y -> prod X Y.

Kode berikut harus dikompilasi tetapi itu bukan karena kesalahan berikut. Jika saya berubah Setdengan Typeatau yang lain Typedengan Setitu mengkompilasi dengan baik. Dapatkah seseorang membantu saya memahami apa arti kesalahan berikut? Saya mencoba untuk belajar sendiri Coq menggunakan buku Yayasan Perangkat Lunak.

Kesalahan:

Error: Large non-propositional inductive types must be in Type.

2
Provers teorema selalu menjadi area abu-abu untuk CS.SE, tapi saya menduga ini adalah kandidat yang baik untuk mod untuk bermigrasi ke StackOverflow.
jmite

Pertanyaan ini memiliki beberapa jawaban di sini .
Anton Trunov

@ jmite Mengingat bahwa pertanyaan ini adalah tentang kalkulus konstruksi dengan Coq hanya berfungsi sebagai sintaksis konkret, saya pikir ini pada topik di sini.
Gilles 'SO- stop being evil'

Jawaban:


12

Coq memiliki 3 tipe "besar":

  • Propp1,p2:Pp1=p2
  • Set1=2Set
  • Type adalah supertype dari keduanya, memungkinkan Anda untuk menulis kode setelah itu bekerja dengan baik

Saya cukup yakin kesalahan Anda karena Anda mendefinisikan Setparameter yang bisa Type, yang artinya bisa Prop, yang tidak diizinkan. Jika Anda mengubah ini:

Inductive prod (X Y: Set) : Set := 
| pair: X -> Y -> prod X Y. 

kode Anda harus berfungsi.


3
Coq tidak memiliki bukti yang tidak relevan Propkecuali Anda menambahkannya sebagai aksioma.
Geoff
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.