क्या एक प्रेरक प्रकार के मामले में घोषणाओं का क्रम है?


9

मैं सोच रहा था कि क्या एक प्रेरक प्रकार की घोषणाओं का क्रम मायने रख सकता है।

Coq में उदाहरण के लिए आप Natया तो द्वारा परिभाषित कर सकते हैं :

Inductive Nat :=
  | O : Nat
  | S : Nat -> Nat.

या

Inductive Nat :=
  | S : Nat -> Nat
  | O : Nat.

यह संभवतः स्वचालित रूप से उत्पन्न एलिमिनेटर में मापदंडों के क्रम को बदल देगा, लेकिन यह कोई बड़ी बात नहीं है।

मैं सोच रहा हूँ कि क्या यह संभव है कि एक घोषणा लिखी जाए

Inductive typewhereordermatters :=
  | cons1 : type1
  | cons2 : type2.

type2आश्रित प्रकार कहां पर निर्भर करता है cons1? (और इस मामले में, घोषणाओं को दूसरे क्रम में लिखें, इसका कोई अर्थ नहीं होगा, क्योंकि type2इसका उल्लेख होगा cons1जो अभी तक मौजूद नहीं है)।

जवाबों:


10
  1. आदेश मायने नहीं रखता। मैं एक ऐसे मामले के बारे में नहीं सोच सकता जहाँ यह होगा। जैसा कि लेडी बाउर एक टिप्पणी में बताती हैं, यदि आप क्रम बदलते हैं तो परिणाम मूल रूप से कैनोनिक रूप से आइसोमॉर्फिक है

  2. एक मामला दूसरे मामले पर निर्भर नहीं कर सकता। योग के तत्व एक विकल्प का प्रतिनिधित्व करते हैं, इसलिए यह समझ में नहीं आता है कि लिया गया विकल्प उस विकल्प पर निर्भर करता है जो नहीं लिया गया है।


2
आप अपने पहले बिंदु के बारे में अधिक विशिष्ट हो सकते हैं। आदेश मायने नहीं रखता। यदि आप ऑर्डर बदलते हैं तो परिणाम मूल रूप से कैनॉमिक रूप से आइसोमॉर्फिक होता है।
लेडी बाउर

2
@Dave: धन्यवाद! मैं इस सवाल (उच्च प्रयोगात्मक सिद्धांत के) उच्च आगमनात्मक प्रकारों के कारण पूछ रहा था, जहां यह घटना प्रतीत होती है , और मैं जानना चाहता था कि क्या यह नियमित प्रेरक प्रकारों के साथ भी हो सकता है।
गिलियूम ब्रूनरी

1
@ गिलूम: मुझे यकीन नहीं है कि आप किस घटना को लिंक से इंगित कर रहे हैं। डेटाटाइप परिभाषा की विभिन्न निर्माण खंड एक-दूसरे पर निर्भर नहीं कर सकते हैं, चाहे यह उच्च-क्रम डेटाटाइप हो या नहीं। शायद आप आश्रित रिकॉर्ड के बारे में सोच रहे हैं (जो लिंक पर उपयोग किया जाता है, और एजडा और कोक में उपलब्ध हैं )?
नोआम ज़िलबर्गर

1
@ नोम: उच्च आगमनात्मक प्रकार के उदाहरण में circle, loopकंस्ट्रक्टर का प्रकार कंस्ट्रक्टर पर निर्भर करता है base
गिलोय ब्रूनरी

2
@ गिलियूम: मैं अब देख रहा हूं (वे एक प्रायोगिक वाक्य रचना पेश कर रहे हैं), पता नहीं कैसे मैं चूक गया।
नोआम ज़िलबर्गर

6

क्या आप जिस तरह से पूछते हैं उसमें आदेश मायने रखता है? नहीं।

लेकिन क्या आदेश प्रमाण सहायक के कामकाज के लिए पूरी तरह अप्रासंगिक है? फिर से, नहीं। Matita में, Coq के समान एक प्रमाण सहायक, जिस क्रम में एक प्रेरक परिभाषा में रचनाकारों को लिखा जाता है, वह प्रकार की जाँच के लिए मायने रखता है, विशेष रूप से जब मैच अभिव्यक्ति की जाँच करता है।

मैटिता को पहले यह जांचना होगा कि सभी कंस्ट्रक्टरों का मिलान मैच के दौरान किया जा रहा है। यह निर्माणकर्ताओं द्वारा उस क्रम में साइकिल चलाने के द्वारा करता है जिस क्रम में उन्हें घोषित किया जाता है। फिर, मैच अभिव्यक्ति को उचित रूप से जांचने के लिए यह आता है, जो रिवर्स ऑर्डर में होता है, पहले अंतिम घोषित कंस्ट्रक्टर के लिए मामले की जांच करना। इस प्रकार को तब आगे बढ़ाया जाता है और अन्य मामलों की जांच के लिए उपयोग किया जाता है।

यह अक्सर एक बड़े मैच की अभिव्यक्ति लिखते समय दिखाई देता है। आप पहले आसान मामलों को भरना चाहते हैं, एक वाइल्डकार्ड के तहत कठिन मामलों को छोड़ रहे हैं, समय-समय पर जांच कर रहे हैं कि आपने क्या लिखा है यह सुनिश्चित करने के लिए। कभी-कभी मतिता अपूर्ण मिलान अभिव्यक्ति के प्रकार का पता लगाने में असमर्थ होती है, लेकिन यदि आप प्रेरक प्रकार में परिभाषित अंतिम निर्माणकर्ता के मामले में भरते हैं, तो बहुत खुशी से ऐसा करेंगे।

मुझे लगता है, हालांकि मुझे यकीन नहीं है, कि Coq कुछ ऐसा ही करता है।

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