प्रूफ असिस्टेंट में 'रणनीति' कैसे काम करती है?


44

प्रश्न: प्रूफ असिस्टेंट में 'रणनीति' कैसे काम करती है? वे यह निर्दिष्ट करने के तरीके प्रतीत होते हैं कि किसी शब्द को एक समतुल्य शब्द ('समतुल्य' की कुछ परिभाषा के लिए) कैसे फिर से लिखना है। संभवतः इसके लिए औपचारिक नियम हैं, मैं कैसे सीख सकता हूं कि वे क्या हैं और वे कैसे काम करते हैं? क्या वे बीटा-कमी के लिए आदेश की पसंद से अधिक शामिल हैं?

मेरी रुचि के बारे में पृष्ठभूमि: कई महीने पहले, मैंने फैसला किया कि मैं औपचारिक गणित सीखना चाहता हूं। मैंने टाइप थ्योरी के साथ जाने का फैसला किया क्योंकि प्रारंभिक शोध से ऐसा लगता है कि द राइट वे टू डू थिंग्स (टीएम) और क्योंकि यह प्रोग्रामिंग और गणित को एकीकृत करने के लिए लगता है जो आकर्षक है । मुझे लगता है कि मेरा अंतिम लक्ष्य कोक जैसे प्रमाण सहायक का उपयोग करने और समझने में सक्षम होना है (मुझे लगता है कि विशेष रूप से निर्भर प्रकारों का उपयोग करने में सक्षम होने के कारण मैं चीजों के बारे में उत्सुक हूं जैसे कि मैट्रिक्स के प्रकारों का प्रतिनिधित्व करना)। मैंने बहुत कम जानना शुरू किया, अल्पविकसित कार्यात्मक प्रोग्रामिंग भी नहीं, लेकिन मैं धीमी प्रगति कर रहा हूं। मैंने प्रकार और प्रोग्रामिंग लैंग्वेज (पियर्स) के बड़े हिस्से पढ़े और समझे हैं और कुछ हास्केल और एमएल सीखे हैं।


1
यह मेरे Coq वीडियो ट्यूटोरियल्स, math.andrej.com/2011/02/22/… के
Andrej Bauer

जवाबों:


36

बुनियादी रणनीति या तो पीछे या पीछे की ओर एक प्रवेश नियम चलाते हैं (उदाहरण के लिए, हाइपोथेसिस और को परिवर्तित करें या लक्ष्य को दो लक्ष्यों और में परिवर्तित करें।बी बी बी बीABABABABएक ही परिकल्पना के साथ), एक लेम्मा लागू करें (~ फंक्शन एप्लीकेशन), प्रत्येक कंस्ट्रक्टर के लिए एक केस में कुछ आगमनात्मक प्रकार के बारे में एक लेम्मा को विभाजित करें, और इसी तरह। मूल रणनीति उस संदर्भ के आधार पर सफल या विफल हो सकती है जिसमें वे लागू होते हैं। अधिक उन्नत रणनीति छोटे कार्यात्मक कार्यक्रमों की तरह हैं जो मूल रणनीति को चलाते हैं, लक्ष्य और / या मान्यताओं में शर्तों के साथ मेल खाते हुए पैटर्न का प्रदर्शन करते हैं, रणनीति की सफलता या विफलता के आधार पर विकल्प बनाते हैं, और इसके आगे। अधिक उन्नत रणनीति अंकगणित और अन्य विशिष्ट प्रकार के सिद्धांतों से निपटती है। Coq की सामरिक भाषा पर मुख्य पेपर निम्नलिखित है:

  • डी। डेलहाये। सिस्टम कोक के लिए एक रणनीति भाषा । प्रोग्रामिंग और ऑटोमेटेड रीजनिंग (LPAR) के तर्क की कार्यवाही में, पुनर्मिलन द्वीप, कंप्यूटर विज्ञान में व्याख्यान नोट्स की मात्रा 1955, पृष्ठ 85-95। स्प्रिंगर-वेरलाग, नवंबर 2000।

औपचारिक नियम जो मूल रणनीति का सार बनाते हैं, वे Coq उपयोगकर्ताओं को यहां या पीडीएफ के अध्याय 4 में परिभाषित करते हैं ।

रणनीति और रणनीति को लागू करने पर एक काफी शिक्षाप्रद पेपर (अनिवार्य रूप से रणनीति जो अन्य रणनीति को तर्क के रूप में लेती है) है:

Coq की सामरिक भाषा की सीमा है कि इसके द्वारा लिखे गए प्रमाण शायद ही किसी के हाथ से किए गए सबूतों से मिलते जुलते हों। स्पष्ट प्रमाणों को सक्षम करने के लिए कई प्रयास किए गए हैं। इनमें इसार (इसाबेल / HOL के लिए) और मिजार की प्रूफ भाषा शामिल है।

एक तरफ: क्या आप यह भी जानते हैं कि प्रोग्रामिंग भाषा एमएल मूल रूप से LCF प्रमेय कहावत के लिए रणनीति को लागू करने के लिए डिज़ाइन किया गया था ? एमएल के लिए विकसित किए गए कई विचारों, जैसे कि टाइप इंफ़ेक्शन, ने आधुनिक प्रोग्रामिंग भाषाओं को प्रभावित किया है।


3
बहुत बढ़िया जवाब। एडम चिप्पला का डिपेंडेंट टाइप ( adam.chlipala.net/cpdt ) के साथ प्रमाणित प्रोग्रामिंग , Coq में रणनीति के उपयोग पर एक और अच्छा संसाधन है।
jbapple

16

LCF वास्तव में इन सभी प्रणाली के ग्रैंड-फादर हैं: Coq, Isabelle, HOLs, जिसमें ML प्रोग्रामिंग भाषा (जिसे हम आज OCaml, SML, F # के रूप में भी देखते हैं) शामिल हैं। हाँ, मैं अधिक से अधिक LCF परिवार के सदस्य के रूप में Coq को शामिल कर रहा हूँ। यूएस-अमेरिकन प्रूफ असिस्टेंट (विशेष रूप से ACL2), या पूरी तरह से असंबंधित मिज़ार की तुलना में, कॉक सांस्कृतिक रूप से इसाबेल और होल्स के काफी करीब है, मुख्य रूप से रणनीति के साझा विचार के कारण ।

तो क्या रणनीति वैसे भी हैं, जो पुनर्मिलन, रूपांतरण, संयोजनों को शुरू करने या समाप्त करने के बारे में आकस्मिक टिप्पणियों से छीन लिए गए हैं?

यहाँ मुख्य लेयरिंग सिद्धांत मिलनर के LCF से विरासत में मिला है:

  • कोर इनफॉर्न्स (फॉरवर्ड रीजनिंग), या तो thmमूल LCF- एप्रोच में अमूर्त डेटाटाइप के रूप में, या परिवार की टाइप-थ्योरी शाखा में सबूत की शर्तों की अलग-अलग जाँच के साथ (Coq, Matita)। यह आपको परिणामों के लिए एक निश्चित तार्किक आधार देता है जो कि नीतिवचन प्रमेय के रूप में मानता है। तो आपके पास एक आदिम इंजेक्शन हो सकता है जो ⊢ ए और gives बी लेता है और आपको ∧ ए Another बी देता है। एक और आदिम इंजेक्शन आपको ⊢ t = u दे सकता है, जहां u t का बीटा-सामान्य रूप है। इन तंत्रों में से कोई भी रणनीति नहीं है, हालांकि, वे मानक तर्क के रूप में इंजेक्शन नियम हैं ।

  • लक्ष्य-निर्देशित सबूत (पीछे की ओर तर्क)। विचार यह है कि आप "लक्ष्य राज्य" की कुछ धारणा पर काम कर रहे हैं, इसे परिष्कृत करके, इसे अधिक से अधिक सबगोअल्स, करीबी सबगोल्स में विभाजित करके, जब तक कि यह सब हल न हो जाए। लक्ष्य अवस्था को समाप्त कर, एक निश्चित प्रमेय को प्रक्रिया से बाहर कर देगा। LCF ने लक्ष्यों के लिए कुछ अतिरिक्त तार्किक बुनियादी ढाँचा पेश किया है, जो अभी भी HOLs में है: एक रणनीति कुछ एमएल फ़ंक्शन है जो एक लक्ष्य को परिष्कृत करता है, और शोधन के लिए कुछ औचित्य पैदा करता है। सबूत के बहुत ही अंत में, ऊपर दिए गए स्केच के रूप में आदिम संदर्भों के अनुसार आगे के तरीके से एक सबूत का उत्पादन करने के लिए औचित्य को उल्टे क्रम में दोहराया जाता है।

Coq और Matita अभी भी इस LCF सिद्धांत के काफी करीब हैं। इसाबेल यहाँ अलग है: 1989 की शुरुआत में, लैरी पॉलसन ने लक्ष्य की रणनीति में सुधार किया और उन्हें तर्क के करीब लाने के लिए युक्ति की, जो यहाँ इसाबेल का "शुद्ध" तार्किक ढांचा है। इसाबेल / शुद्ध निहितार्थ ==> और क्वांटिफायर के साथ न्यूनतम उच्च-क्रम तर्क प्रदान करता है !! जो प्राकृतिक कटौती नियमों और लक्ष्य राज्यों की संरचना को इंगित करता है।

उदाहरण के लिए, तार्किक ढांचे के प्रमेय के रूप में example A ==> B ==> A the B संयोजन परिचय नियम (वस्तु तर्क का) है।

लक्ष्य अवस्थाएँ केवल प्रमेय हैं, जो आपके प्रारंभिक दावे C के लिए = C ==> C से शुरू होता है, जो कि, X ==> Y ==> Z ==> मध्यवर्ती राज्यों में, जहाँ X, Y, Z से परिष्कृत किया जाता है। वर्तमान उप-समूह हैं, और प्रक्रिया with C (कोई सबगोअल्स) के साथ समाप्त होती है।

अब वापस रणनीति के लिए, जो इन सभी सिद्धों के लिए अधिक समान हैं: लक्ष्य राज्य की कुछ धारणा (उदाहरण के लिए इसाबेल एक से ऊपर) को देखते हुए, एक रणनीति एक फ़ंक्शन है जो लक्ष्य राज्य के लिए (0, 1, या अधिक) का अनुसरण करती है लक्ष्य बताता है। इसके अलावा, एक सामरिक ऐसे सामरिक कार्यों का एक संयोजक है, उदाहरण के लिए अनुक्रमिक संरचना, विकल्प, दोहराने आदि को व्यक्त करने के लिए। वास्तव में, रणनीति और रणनीति की भाषा पार्सर कॉम्बिनेटरों की "सफलताओं की सूची" से संबंधित है।

सामरिक रूप से लक्ष्य शोधन की कुछ रणनीतियों का वर्णन करने के लिए रणनीति की अनुमति है। 1970/80-ies में एलसीएफ में उनके आविष्कार के बाद से वे काफी सफल रहे, लेकिन वे कुख्यात अपठनीय प्रूफ स्क्रिप्ट का उत्पादन करते हैं।

हाल ही में ए असपरती एट अल, पीएलएमएमएस 2009 द्वारा पेपर में भाषा के कुछ पहलुओं का अवलोकन दिया गया है, कार्यशाला की कार्यवाही पृष्ठ 22 देखें।

मिज़ार और इसाबेल / इसार को मानव-पठनीय संरचित तर्क के लिए वैकल्पिक दृष्टिकोण के रूप में उल्लेख किया गया है , और वे उस अर्थ में रणनीति पर आधारित नहीं हैं। Mizar LCF परिवार से असंबंधित है, इसलिए यह उस सामरिक शब्दावली को नहीं जानता है। इसाबेल / इसार सामरिक परंपरा को कुछ हद तक शामिल करता है, लेकिन इसकी प्रमाण पद्धति की धारणा थोड़ी अधिक संरचित है (स्पष्ट ईसर प्रमाण संदर्भ के साथ, जंजीर तथ्यों के स्पष्ट संकेत और तर्क के दौरान आंतरिक लक्ष्य-हैकिंग से बचना)।

पिछले कुछ दशकों में सामरिक भाषाओं के कई और सुधार और पुनर्विचार हुए हैं। उदाहरण के लिए, कोक समुदाय की एक हालिया शाखा पारंपरिक Ltac के बजाय SSReflect (जी। गॉंटियर द्वारा) का पक्षधर है।


12

प्रूफ असिस्टेंट में 'रणनीति' कैसे काम करती है?

मुझे लगता है कि यह जवाब थोड़ा टेढ़ा होगा।

सबसे पहले, यह पूछना पर्याप्त नहीं है कि "सबूत सहायकों में रणनीति कैसे काम करती है" क्योंकि वे विभिन्न प्रमाण सहायकों में अलग तरह से काम करते हैं। आज उपयोग किए जाने वाले सहायक के दो मुख्य वर्ग हैं: वे मूल एलसीएफ से प्राप्त होते हैं, जैसे इसाबेल, एचओएल और एचओएल लाइट, और कोक और मतिता जैसे सिद्धांत आधारित प्रमाण सहायक। प्रूफ असिस्टेंट के इन दो अलग-अलग वर्गों में रणनीति अलग-अलग तरीके से काम करती है, एक प्रतिबिंब जो कि उदाहरण के लिए बोनट के नीचे क्या चल रहा है, इसाबेल, जैसे कि मैटनेट में बोनट के नीचे क्या चल रहा है, के लिए काफी अलग है।

अपने आप से पूछें: जब हम मतिता में प्रस्ताव पी को साबित करने की कोशिश कर रहे हैं तो क्या हो रहा है? हम टाइप पी के साथ एक metavariable X को पेश करते हैं। हम तब एक गेम खेलते हैं, इसलिए बोलने के लिए, जहां हम एक्स को परिष्कृत करते हैं, अधूरे शब्द में अधिक से अधिक संरचना को जोड़ते हैं, जब तक कि हमें एक पूर्ण लैम्ब्डा-टर्म नहीं मिलता है (यानी जिसमें अधिक मेटाबॉलिबल नहीं हैं)। एक बार जब हम एक पूर्ण लंबो-टर्म के कब्जे में होते हैं, तो हम इसे पी के संबंध में जांचते हैं, यह सुनिश्चित करते हैं कि यह आवश्यक प्रकार का निवास करता है। फिर हम देखते हैं कि Coq और Matita में, एक युक्ति केवल अधूरे प्रमाण शब्दों से अधूरे प्रमाण शब्दों तक का एक कार्य है, जो उम्मीद है कि आवेदन के बाद इस पद के लिए थोड़ा सा ढांचा जोड़ देता है (इस अवलोकन ने हाल ही के काम को प्रेरित किया है जैसे Jjgov द्वारा , पियंटका, और अन्य)।

उदाहरण के लिए, मटीटा रणनीति "इंट्रो" मौजूदा शब्द पर एक लंबो-एब्स्ट्रैक्शन का परिचय देती है, "केस" शब्द में एक मैच अभिव्यक्ति का परिचय देता है, और "लागू" एक शब्द का दूसरे के लिए एक आवेदन प्रस्तुत करता है। अधिक जटिल कार्यों को बनाने के लिए, उच्च-क्रम के कार्यों का उपयोग करते हुए, ये बुनियादी रणनीति एक साथ लड़ी जा सकती है। मूल विचार हमेशा एक जैसा होता है: एक युक्ति हमेशा एक अपूर्ण प्रमाण शब्द में थोड़ी संरचना जोड़ने का लक्ष्य रखता है।

ध्यान दें कि, कार्यान्वयनकर्ताओं का लक्ष्य है कि वह एक शब्द दें जो हर रणनीति के बाद फिर से टाइपकास्ट करता है। कड़ाई से बोलते हुए, उनके लिए ऐसा करने की कोई आवश्यकता नहीं है, क्योंकि सभी प्रकार के सिद्धांत आधारित प्रमाण सहायकों के लिए मायने रखता है, जब उपयोगकर्ता प्रूफ को Qed करने के लिए आता है, तो हम एक सबूत शब्द के कब्जे में होते हैं जो प्रस्ताव पी। हम कैसे रहते हैं इस सबूत पर पहुंचे शब्द काफी हद तक अप्रासंगिक है। हालाँकि, Coq और Matita दोनों का लक्ष्य उपयोगकर्ता को एक (संभवत: अपूर्ण) सबूत शब्द देना है जो हर रणनीति के बाद टाइपकास्ट करता है। फिर भी यह अपरिवर्तनीय (और अक्सर करता है) विफल हो सकता है, विशेष रूप से उन दो वाक्यात्मक जांचों के संबंध में जो सीआईसी आधारित प्रमाण सहायकों को लागू करना चाहिए।

विशेष रूप से, हम बाहर ले जा सकते हैं जो एक वैध सबूत प्रतीत होता है, रणनीति की एक श्रृंखला को लागू करना जब तक कोई खुले लक्ष्य नहीं बचे हैं। उसके बाद हम कथित प्रमाण को देखने के लिए आते हैं, केवल यह पता लगाने के लिए कि मतिता की समाप्ति की जाँच करने वाला, या उसके सख्त सकारात्मकता की जाँच करने वाला, शिकायत करता है, क्योंकि रणनीति द्वारा उत्पन्न किए गए प्रमाण शब्द ने इनमें से एक वाक्यगत जाँच (अर्थात तर्क स्थिति में एक परिवर्तनशील स्थिति) को अमान्य कर दिया है एक पुनरावर्ती कॉल को एक ऐसे शब्द के साथ त्वरित रूप से जोड़ा गया था जो मूल तर्क से वाक्यगत रूप से छोटा नहीं है)। यह एक प्रतिबिंब है कि सीआईसी प्रकार का सिद्धांत कुछ अर्थों में है, "पर्याप्त रूप से मजबूत" नहीं है, और इसके प्रकारों में सकारात्मकता या आकार की वाक्यात्मक आवश्यकताओं को प्रतिबिंबित नहीं करता है (एक अवलोकन जो एबेल के आकार प्रकारों को प्रेरित करता है, और कुछ हाल ही में सकारात्मक दृष्टिकोणों पर काम करता है। )।

दूसरी ओर, एलसीएफ-स्टाइल प्रूफ असिस्टेंट काफी अलग हैं। यहाँ, कर्नेल में एक मॉड्यूल होता है (आमतौर पर ML के एक प्रकार में लागू किया जाता है), जिसमें एक अमूर्त प्रकार "thm" होता है, और ऐसे कार्य जो प्रमाण सहायक के तर्क के अनुमान नियमों को लागू करते हैं, "thm" को "thm" में मैप करते हैं, और इसी तरह आगे। हम यह सुनिश्चित करने के लिए एमएल के टाइपिंग अनुशासन पर भरोसा करते हैं कि इन अनुमान नियमों (मूल रणनीति) के माध्यम से "thm" प्रकार का मान बनाने का एकमात्र तरीका है। इसाबेल की गिरी यहाँ है

सबूत तो इन बुनियादी रणनीति (या अधिक जटिल, बड़ी रणनीति के अनुप्रयोगों की एक श्रृंखला से मिलकर बनता है, जो फिर से उच्च-क्रम के कार्यों का उपयोग करके सरल रणनीति को एक साथ जोड़कर बनाया जाता है --- इसाबेल में, उच्च-क्रम के कार्यों, जिन्हें सामरिक कहा जाता है, यहाँ देखा जा सकता है )। प्रकार के सिद्धांत आधारित प्रूफ असिस्टेंट के विपरीत, एक स्पष्ट प्रूफ टर्म गवाह को रखने के लिए एलसीएफ-शैली सहायक की आवश्यकता नहीं है। सबूत की शुद्धता निर्माण की गारंटी है, और एमएल के टाइपिंग डिसिप्लिन (कई सहायक, जैसे इसाबेल, हालांकि, उनके प्रमाण के लिए प्रमाण शब्द उत्पन्न करते हैं) में हमारा भरोसा है।

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