कड़े सकारात्मकता पर क्यों सहमत और कूक असहमत हैं?


24

मैं अगाडा और कोक के बीच एक भ्रामक असहमति पर ठोकर खाई है, जो स्पष्ट रूप से उनके प्रकार के सिद्धांतों (जैसे, (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 ), लेकिन मुझे इस बात का कोई स्पष्टीकरण नहीं मिला है कि यह एक सिस्टम में ध्वनि क्यों है, लेकिन अन्य नहीं है, या केवल एक अंतर है।

इसलिए मुझे लगता है कि मेरे पास कई सवाल हैं:

  1. क्या यह एक मोनोटोन का उदाहरण है, लेकिन गैर-सख्ती से-सकारात्मक प्रकार? (कोक में; स्पष्ट रूप से अगाडा इसे सख्ती से सकारात्मक मानता है)
  2. जब कोक इसे अस्वीकार करता है तो एजडा इसकी अनुमति क्यों देता है? यह "कड़ाई से सकारात्मक" की व्याख्या में केवल एक अज्ञात अंतर है, क्या कॉग और एग्दा के बीच एक सूक्ष्म अंतर है जो इसे एग्डा में ध्वनि देता है और कोक में अनसोल्ड है, या यह विशेष सैद्धांतिक प्राथमिकताओं द्वारा संचालित स्वाद का मामला है?
  3. क्या ऊपर की पहली परिभाषा और नीचे की समान प्रेरक-पुनरावर्ती परिभाषा के बीच एक सार्थक अंतर है?

प्रेरक-पुनरावर्ती परिभाषा:

  mutual
    data U : Set0 -> Set0 where
      c : (i : Fin 2) -> U (T i)
    T : Fin 2 -> Set0
    T zero = ℕ
    T (suc zero) = U ℕ

मुझे प्रासंगिक साहित्य की ओर संकेत करते हुए खुशी हो रही है।

अग्रिम में धन्यवाद।


1
जहां तक ​​मुझे पता है, कोक अंतर्निहित सिद्धांत की अनुमति देता है की तुलना में सख्त है, क्योंकि इसे लागू करना आसान था और व्यवहार में पर्याप्त उपयोगी था। यह एक अलग लेकिन संबंधित मामले के बारे में जवाब है जहाँ तक मेरी समझ है।
गिल्स एसओ- बुराई को रोकना '

1
इस परिभाषा को Ty is not strictly positive, because it occurs in an index of the target type of the constructor c2 in the definition of Ty.
अगाडा

2
हां, आप सही कह रहे हैं, कल रात किसी और ने मेरी ओर इशारा किया। मैं डेबियन के 2.3.0.1 पैकेज का उपयोग कर रहा था, लेकिन काबाल से 2.3.2.1 प्रत्यक्ष और आईआर दोनों परिभाषाओं को अस्वीकार करता है। ऐसा लगता है कि यह अनिश्चित रूप से असंबंधित बग बनाया गया है जो सूचकांकों की सख्ती पर सकारात्मकता की जाँच कर रहा है: code.google.com/p/agda/issues/detail?id=690 चूंकि स्पष्ट रूप से एक ध्वनि समस्या के रूप में चिह्नित किए बिना सूची पर चर्चा की गई थी, इसलिए मैं अभी भी सोच रहा था कि प्रकार ही ध्वनि है।
कॉलिन गॉर्डन

जवाबों:


10

इस मुद्दे को दो कारकों के संगम से उत्पन्न भ्रम प्रतीत होता है:

  1. मैं Agda (2.3.0.1) के बासी संस्करण का उपयोग कर रहा था। ऐसा प्रतीत होता है कि 2.3.2 से पहले, Agda बस निर्माण परिणामों के सूचकांकों की सख्त सकारात्मकता की जांच नहीं कर रहा था (देखें कि बग मैं थ्रेड में कहीं और जुड़ा हुआ है)।
  2. डाइब्जर इंडक्टिव फैमिलीज पेपर के एक करीबी रीडिंग से पता चलता है कि उन्होंने इरादा किया होगा कि कंस्ट्रक्टर रिजल्ट के सूचकांकों को टाइप करते समय इंडक्टिव टाइप को परिभाषित नहीं किया जाए । धारा 3.2.1 गद्य में प्रेरक निर्माणकर्ताओं के लिए योजना देता है, और जाहिर है कि मैं योजना के प्रत्येक भाग के बाध्यकारी वातावरण का वर्णन करने वाली भाषा को गलत तरीके से बताता हूं।

यह नज़दीकी रीडिंग निश्चित रूप से उस चेक के अनुरूप है जो कि Coq और (हाल के संस्करण) Agda प्रदर्शन करते हैं, जो अपने स्वयं के सूचकांकों में T की किसी भी उपस्थिति को रोकते हैं।


4

अंतर का एक संभावित कारण, जैसा कि आपकी खुद की टिप्पणी संकेत देती है, अप्रत्यक्षता है। Coq ऐतिहासिक रूप से एक impredicative सेट था (अभी भी एक ध्वज के रूप में उपलब्ध है जो मुझे विश्वास है!)

एडम चिपलला की किताब http://adam.chlipala.net/cpdt/html/Universes.html

Coq उपकरण एक कमांड-लाइन फ़्लैग -प्रिमेडेरेटिव-सेट का समर्थन करते हैं, जो सेट इंप्रैडिव बनाकर गैलिना को अधिक मौलिक तरीके से संशोधित करता है। Forall T: Set, T जैसे शब्द का सेट होता है, और सेट में आगमनात्मक परिभाषा में ऐसे निर्माता हो सकते हैं जो किसी भी प्रकार के तर्कों को निर्धारित करते हैं। स्थिरता बनाए रखने के लिए, एक उन्मूलन प्रतिबंध लगाया जाना चाहिए, इसी तरह प्रोप के लिए प्रतिबंध। यह प्रतिबंध केवल बड़े प्रेरक प्रकारों पर लागू होता है, जहां कुछ निर्माता एक प्रकार के प्रकार पर मात्रा निर्धारित करते हैं। ऐसे मामलों में, इस आगमनात्मक प्रकार का एक मूल्य केवल परिणाम-प्रकार का उत्पादन करने के लिए पैटर्न-मिलान किया जा सकता है जिसका प्रकार सेट या प्रोप है। यह नियम प्रोप के लिए नियम के विपरीत है, जहां प्रतिबंध गैर-बड़े प्रेरक प्रकारों पर भी लागू होता है। और जहां परिणाम प्रकार में केवल Prop टाइप हो सकता है। Coq के पुराने संस्करणों में, सेट डिफ़ॉल्ट रूप से अनुकरणीय था। बाद के संस्करण कुछ शास्त्रीय स्वयंसिद्ध शब्दों के साथ असंगति से बचने के लिए सेट विधेय बनाते हैं। विशेष रूप से, किसी को पसंद के स्वयंसिद्ध सेट के साथ impredicative सेट का उपयोग करते समय देखना चाहिए। अपवर्जित मध्य या बाहर की विस्तृतता के साथ संयोजन में असंगति हो सकती है। अंतर्निहित सेटिंग अंतर्निहित रूप से गणितीय गणितीय अवधारणाओं के लिए मॉडलिंग के लिए उपयोगी हो सकता है, लेकिन लगभग सभी Coq विकास इसके बिना ठीक से मिलते हैं।


बग फिक्स की आवाज़ जो मुझे ऊपर मिली थी, उससे लगता है कि एग्दा बस कंस्ट्रक्टर परिणामों के लिए सूचकांकों की सकारात्मकता की जांच नहीं कर रही थी। जो वास्तव में इंगित नहीं करता है कि क्या मेरा प्रस्तावित प्रकार एकरसता में है, लेकिन यह बताता है कि यह impredicativity से संबंधित नहीं है।
कॉलिन गॉर्डन

2
और हां, -impredicative-set, Coq में Set impredicative बनाता है।
कोलिन गॉर्डन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.