मैं अगाडा और कोक के बीच एक भ्रामक असहमति पर ठोकर खाई है, जो स्पष्ट रूप से उनके प्रकार के सिद्धांतों (जैसे, (im) भविष्यवाणी, प्रेरण-पुनरावृत्ति, आदि) के बीच सबसे प्रसिद्ध भेदों से संबंधित नहीं है।
विशेष रूप से, Agda द्वारा निम्नलिखित परिभाषा को स्वीकार किया जाता है:
data Ty : Set0 -> Set0 where
c1 : Ty ℕ
c2 : Ty (Ty ℕ)
जबकि समतुल्य Coq परिभाषा को अस्वीकार कर दिया जाता है क्योंकि c2 में स्वयं के सूचकांक के रूप में [Ty _] की उपस्थिति को सख्त सकारात्मकता का उल्लंघन माना जाता है।
Inductive Ty : Set -> Set :=
| c1 : Ty nat
| c2 : Ty (Ty nat).
वास्तव में, यह मामला सख्ती से उल्लंघन की Coq'Art धारा 14.1.2.1 से एक उदाहरण है।
Inductive T : Set -> Set := c : (T (T nat)).
लेकिन मैं इस प्रकार के सिद्धांतों के बीच अंतर के कारणों को नहीं देखता। एक रचनात्मक तर्क में एक प्रकार की नकारात्मक घटना का उपयोग करके गलत साबित करने का क्लासिक उदाहरण मेरे लिए स्पष्ट है, लेकिन मैं यह नहीं देख सकता कि किसी को अनुक्रमण की इस शैली से कोई विरोधाभास कैसे प्राप्त हो सकता है (भले ही कड़े सकारात्मक रचनाकार तर्कों की परवाह किए बिना)।
साहित्य के इर्द-गिर्द घूमते हुए, डायबज़र के प्रारंभिक प्रेरक परिवारों के पेपर में सीआईडी पेपर में पॉलिन-मोहिंग के समाधान के बारे में एक अपमानजनक टिप्पणी की गई है, जिसमें थोड़ा अलग प्रतिबंध है और अस्पष्ट रूप से पता चलता है कि मतभेद impredicativity से संबंधित हो सकते हैं, लेकिन आगे विस्तृत नहीं है। डायबज़र का पेपर इसकी अनुमति देता प्रतीत होता है, जबकि पॉलिन-मोहिंग स्पष्ट रूप से इसे प्रतिबंधित करता है।
जाहिर तौर पर मैं इस अंतर को नोटिस करने वाला पहला व्यक्ति नहीं हूं, और कुछ का मानना है कि इस परिभाषा को या तो सिस्टम में अनुमति नहीं दी जानी चाहिए ( https://lists.chalmers.se/pipermail/agda/2012/004249.html ), लेकिन मुझे इस बात का कोई स्पष्टीकरण नहीं मिला है कि यह एक सिस्टम में ध्वनि क्यों है, लेकिन अन्य नहीं है, या केवल एक अंतर है।
इसलिए मुझे लगता है कि मेरे पास कई सवाल हैं:
- क्या यह एक मोनोटोन का उदाहरण है, लेकिन गैर-सख्ती से-सकारात्मक प्रकार? (कोक में; स्पष्ट रूप से अगाडा इसे सख्ती से सकारात्मक मानता है)
- जब कोक इसे अस्वीकार करता है तो एजडा इसकी अनुमति क्यों देता है? यह "कड़ाई से सकारात्मक" की व्याख्या में केवल एक अज्ञात अंतर है, क्या कॉग और एग्दा के बीच एक सूक्ष्म अंतर है जो इसे एग्डा में ध्वनि देता है और कोक में अनसोल्ड है, या यह विशेष सैद्धांतिक प्राथमिकताओं द्वारा संचालित स्वाद का मामला है?
- क्या ऊपर की पहली परिभाषा और नीचे की समान प्रेरक-पुनरावर्ती परिभाषा के बीच एक सार्थक अंतर है?
प्रेरक-पुनरावर्ती परिभाषा:
mutual
data U : Set0 -> Set0 where
c : (i : Fin 2) -> U (T i)
T : Fin 2 -> Set0
T zero = ℕ
T (suc zero) = U ℕ
मुझे प्रासंगिक साहित्य की ओर संकेत करते हुए खुशी हो रही है।
अग्रिम में धन्यवाद।
Ty is not strictly positive, because it occurs in an index of the target type of the constructor c2 in the definition of Ty.