Coq में Set और Type के बीच क्या अंतर है? [बन्द है]


13

AFAIU प्रकार वे हो सकते हैं Setजिनके तत्व प्रोग्राम हैं या propositionजिनके तत्व प्रूफ हैं। तो इस समझ पर आधारित:

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

निम्नलिखित कोड को संकलित करना चाहिए लेकिन यह निम्नलिखित त्रुटि के कारण नहीं है। अगर मैं इसके Setसाथ Typeया दूसरे के Typeसाथ बदलता हूं तो Setठीक संकलन करता है। क्या कोई मुझे यह समझने में मदद कर सकता है कि निम्नलिखित त्रुटि का क्या मतलब है? मैं सॉफ़्टवेयर फ़ाउंडेशन बुक का उपयोग करके खुद को कोक सिखाने की कोशिश कर रहा हूं।

त्रुटि:

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

2
प्रमेय हमेशा CS.SE के लिए एक ग्रे क्षेत्र रहा है, लेकिन मुझे लगता है कि यह मॉड्स के लिए StackOverflow के लिए एक अच्छा उम्मीदवार है।
19

इस प्रश्न के कुछ उत्तर यहां दिए गए हैं
एंटोन ट्रूनोव

@jmite यह देखते हुए कि यह प्रश्न केवल ठोस वाक्यविन्यास के रूप में काम कर रहे Coq के साथ निर्माणों की गणना के बारे में है, मुझे लगता है कि यह यहाँ विषय पर है।
गिल्स एसओ- बुराई को रोकें '

जवाबों:


12

Coq के 3 "बड़े" प्रकार हैं:

  • Propp1,p2:Pp1=p2
  • Set1=2Set
  • Type इन दोनों का एक सुपरस्क्रिप्ट है, जो आपको एक बार कोड लिखने की अनुमति देता है जो या तो काम करता है

मुझे पूरा यकीन है कि आपकी त्रुटि है क्योंकि आप परिभाषित कर रहे हैं कि Setकिसका पैरामीटर हो सकता है Type, जिसका अर्थ है कि वे हो सकते हैं Prop, जिसकी अनुमति नहीं है। यदि आप इसे बदलते हैं:

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

आपका कोड काम करना चाहिए।


3
Propजब तक आप इसे एक स्वयंसिद्ध के रूप में नहीं जोड़ते , तब तक Coq के पास अप्रासंगिकता नहीं है ।
ज्योफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.