सबसे पहले, एक संभावित संज्ञानात्मक असंगति को दूर करने के लिए: अनंत संरचनाओं के बारे में तर्क देना कोई समस्या नहीं है, हम इसे हर समय करते हैं। जब तक संरचना सूक्ष्म रूप से वर्णन योग्य है, तब तक यह समस्या नहीं है। यहां कुछ सामान्य प्रकार की अनंत संरचनाएं हैं:
- भाषाएँ (कुछ वर्णमाला पर तार के सेट, जो परिमित हो सकती हैं);
- पेड़ की भाषाएँ (कुछ वर्णमाला के ऊपर पेड़ों के सेट);
- एक गैर-नियतात्मक प्रणाली के निष्पादन निशान;
- वास्तविक संख्याये;
- पूर्णांक के सेट;
- पूर्णांक से पूर्णांक तक फ़ंक्शन के सेट; ...
सबसे बड़ी नियतांक के रूप में सह-अस्तित्व
जहां आगमनात्मक परिभाषाएं प्राथमिक निर्माण खंडों से एक संरचना का निर्माण करती हैं, वहीं सहसंयोजक परिभाषाएं संरचनाओं से यह बताती हैं कि उन्हें कैसे निकाला जा सकता है। उदाहरण के लिए, सूचियों के प्रकार जिनके तत्व एक सेट A
में हैं, कोक् में निम्नानुसार परिभाषित किया गया है:
Inductive list (A:Set) : Set :=
| nil : list A
| cons : A -> list A -> list A.
अनौपचारिक रूप से, list
प्रकार सबसे छोटा प्रकार है, जिसमें nil
और मानों से निर्मित सभी मान शामिल होते हैं cons
, जिसमें स्वयंसिद्ध है कि । इसके विपरीत, हम सबसे बड़े प्रकार को परिभाषित कर सकते हैं जिसमें इन कंस्ट्रक्टरों से निर्मित सभी मान शामिल हैं, जो भेदभाव को बनाए रखते हैं।∀xy,nil≠consxy
CoInductive colist (A:Set) : Set :=
| conil : colist A
| cocons : A -> colist A -> colist A.
list
का एक सबसेट के लिए आइसोमॉर्फिक है colist
। इसके अलावा, colist
के साथ सूची: अनंत सूचियों में शामिल है cocons
पर cocons
।
CoFixpoint flipflop : colist ℕ := cocons 1 (cocons 2 flipflop).
CoFixpoint from (n:ℕ) : colist ℕ := cocons n (from (1 + n)).
flipflop
अनंत (गोलाकार सूची) ; प्राकृतिक संख्याओं की अनंत सूची है ।1::2::1::2::…from 0
0::1::2::…
यदि परिणाम छोटे ब्लॉकों से बनाया गया है तो एक पुनरावर्ती परिभाषा अच्छी तरह से बनाई गई है: पुनरावर्ती कॉल को छोटे इनपुट पर काम करना चाहिए। यदि परिणाम बड़ी वस्तुओं का निर्माण करता है तो एक corecursive परिभाषा अच्छी तरह से बनाई जाती है। इंडक्शन कंस्ट्रक्टर्स को देखता है, कोइंडक्शन डिस्ट्रक्टर्स को देखता है। ध्यान दें कि कैसे द्वैत न केवल छोटे से बड़े में बदलता है, बल्कि आउटपुट के लिए भी इनपुट करता है। उदाहरण के लिए, उपरोक्त कारण flipflop
और from
परिभाषा अच्छी तरह से बनाई गई है कि cocons
दोनों ही मामलों में कॉर्सेर्सिव कॉल को कंस्ट्रक्टर को कॉल द्वारा संरक्षित किया जाता है ।
जहां आगमनात्मक वस्तुओं के बारे में कथनों में आगमनात्मक साक्ष्य होते हैं, कोइंडिक्टिव वस्तुओं के बारे में कथनों में सहवर्ती प्रमाण होते हैं। उदाहरण के लिए, आइए कॉलिंस पर अनंत विधेय को परिभाषित करें; सहज ज्ञान युक्त, अनंत colists हैं कि साथ खत्म नहीं कर रहे हैं conil
।
CoInductive Infinite A : colist A -> Prop :=
| Inf : forall x l, Infinite l -> Infinite (cocons x l).
यह साबित करने के लिए कि फॉर्म के कॉलिस्ट from n
अनंत हैं, हम सहवास के द्वारा तर्क कर सकते हैं। from n
के बराबर है cocons n (from (1 + n))
। यह दिखाता है कि from n
से बड़ा है from (1 + n)
, जो सह-परिकल्पना from n
से अनंत है , इसलिए अनंत है।
बिसिमिलरिटी, कोइंडिक्टिव प्रॉपर्टी
प्रमाण तकनीक के रूप में सहसंबंध भी वित्तीय वस्तुओं पर लागू होता है। सहज रूप से बोलना, किसी वस्तु के बारे में आगमनात्मक प्रमाण इस बात पर आधारित होते हैं कि वस्तु का निर्माण कैसे किया जाता है। Coinductive सबूत इस बात पर आधारित होते हैं कि ऑब्जेक्ट को कैसे विघटित किया जा सकता है।
नियतात्मक प्रणालियों का अध्ययन करते समय, आगमनात्मक नियमों के माध्यम से समतुल्यता को परिभाषित करना आम है: दो प्रणालियां समान हैं यदि आप एक से दूसरे में परिवर्तन की श्रृंखला द्वारा प्राप्त कर सकते हैं। इस तरह की परिभाषाएं कई अलग-अलग तरीकों को पकड़ने में विफल होती हैं, गैर-नियतात्मक प्रणालियां अलग-अलग आंतरिक संरचना होने के बावजूद एक ही (अवलोकनीय) व्यवहार को समाप्त कर सकती हैं। (Coinduction गैर-समाप्ति प्रणाली का वर्णन करने के लिए भी उपयोगी है, भले ही वे निर्धारक हों, लेकिन यह वह नहीं है जो मैं यहां ध्यान केंद्रित करूंगा।)
Nondeterministic सिस्टम जैसे समवर्ती सिस्टम अक्सर लेबल किए गए संक्रमण सिस्टम द्वारा मॉडलिंग की जाती हैं । एलटीएस एक निर्देशित ग्राफ है जिसमें किनारों को लेबल किया जाता है। प्रत्येक किनारे प्रणाली के संभावित संक्रमण का प्रतिनिधित्व करता है। एलटीएस का एक निशान ग्राफ में एक पथ पर बढ़त लेबल का अनुक्रम है।
दो एलटीएस समान रूप से व्यवहार कर सकते हैं, इसमें उनके समान संभव निशान हैं, भले ही उनकी आंतरिक संरचना अलग हो। ग्राफ समरूपता उनकी समानता को परिभाषित करने के लिए बहुत मजबूत है। इसके बजाय, एक LTS को एक और LTS का अनुकरण करने के लिए कहा जाता है, अगर दूसरे LTS का प्रत्येक संक्रमण पहले में एक संबंधित संक्रमण को स्वीकार करता है। औपचारिक रूप से, चलो दो LTS, के राज्यों में से संबंध तोड़ना संघ हो (सामान्य) लेबल और के सेट संक्रमण संबंध। संबंध एक सिमुलेशन है यदि
ABSL→R⊆S×S
∀(p,q)∈R, if p→αp′ then ∃q′,q→αq′ and (p′,q′)∈R
A simulates अनुकरण जिसमें के सभी राज्यों वहाँ है अगर में एक राज्य से जुड़े हुए हैं । यदि दोनों दिशाओं में एक अनुकार है, तो इसे द्विभाजन कहा जाता है । सिमुलेशन एक सहसंयोजक संपत्ति है: एक तरफ किसी भी अवलोकन का दूसरी तरफ एक मैच होना चाहिए।BBAR
एलटीएस में संभावित रूप से कई बिसिमुलेशन हैं। अलग-अलग bisimulations विभिन्न राज्यों की पहचान कर सकते हैं। दो bisimulations और को देखते हुए , रिलेशन ग्राफ़ के मिलन से दिया गया संबंध अपने आप में एक द्वि-अनुकरण है, क्योंकि संबंधित राज्य दोनों संबंधों के लिए संबंधित राज्यों को जन्म देते हैं। (यह अनंत संघों के लिए भी है। खाली संबंध एक अविच्छिन्न द्विबिंदु है, जैसा कि पहचान का संबंध है।) विशेष रूप से, सभी द्विभाजनों का मिलन अपने आप में एक द्वंद्वात्मकता है, जिसे बिस्मिलरिटी कहा जाता है। Bisimilarity एक प्रणाली का निरीक्षण करने का सबसे अच्छा तरीका है जो अलग-अलग राज्यों के बीच अंतर नहीं करता है।R1R2R1∪R2
Bisimilarity एक coinductive गुण है। इसे एक ऑपरेटर के सबसे बड़े निर्धारण बिंदु के रूप में परिभाषित किया जा सकता है: यह सबसे बड़ा संबंध है, जब समकक्ष राज्यों की पहचान करने के लिए विस्तारित किया जाता है, तो वही रहता है।
संदर्भ