Coq'ta Set ve Type arasındaki fark nedir? [kapalı]


13

AFAIU türleri Set, öğeleri program propositionolan veya öğeleri Prova olan bir olabilir . Bu anlayışa dayanarak:

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

Aşağıdaki kod derlenmelidir, ancak aşağıdaki hatadan kaynaklanmaz. Şunu değiştirirsem Setile Typeveya diğer Typeile Setbunun cezası derler. Birisi aşağıdaki hatanın ne anlama geldiğini anlamama yardımcı olabilir mi? Yazılım Vakıfları kitabını kullanarak kendime Coq öğretmeye çalışıyorum.

Hata:

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

2
Teorem kanıtları her zaman CS.SE için gri bir alan olmuştur, ancak bunun modların StackOverflow'a taşınması için iyi bir aday olduğunu düşünüyorum.
jmite

Bu sorunun bazı cevapları var .
Anton Trunov

@jmite Bu sorunun Coq ile sadece somut sözdizimi olarak hizmet veren yapıların hesabı ile ilgili olduğu düşünüldüğünde, bunun konuya geldiğini düşünüyorum.
Gilles 'SO- kötü olmayı kes

Yanıtlar:


12

Coq'un 3 "büyük" tipi vardır:

  • Propp1,p2:Pp1=p2
  • Set1=2Set
  • Type her ikisinin de bir süpertipidir ve

Eminim senin hatanın Setkimin parametrelerini olabileceğini tanımladığından emin olabilirsiniz Type, yani olabilirler Prop, izin verilmiyor. Bunu değiştirirseniz:

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

kodunuzun çalışması gerekir.


3
PropBir aksiyom olarak eklemediğiniz sürece Coq'un kanıt ilgisizliği yoktur .
Geoff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.