अधिगम स्वचालित सिद्धान्त


44

मैं अपने आप से ऑटोमेटेड प्रमेय साबित / श्रीमती सॉल्वर / प्रूफ असिस्टेंट सीख रहा हूं और यहां से शुरू होने वाली प्रक्रिया के बारे में प्रश्नों की एक श्रृंखला पोस्ट कर रहा हूं।

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

मैंने Coq को देखा और दूसरों के बीच इसाबेल को परिचय का पहला अध्याय पढ़ा ; स्वचालित प्रमेय के प्रकार

मैं कुछ दशकों से प्रोलॉग जानता हूं और अब F # सीख रहा हूं, इसलिए ML, O'Caml और LISP एक बोनस हैं। हास्केल एक अलग जानवर है।

मेरे पास निम्नलिखित पुस्तकें हैं

एलन रॉबिन्सन और आंद्रेई वोर्नकोव द्वारा संपादित "हैंडबुक ऑफ़ ऑटोमेटेड रीज़निंग"

जॉन हैरिसन द्वारा "हैंडबुक ऑफ प्रैक्टिकल लॉजिक एंड ऑटोमेटेड रीजनिंग"

फ्रांज बाडर और टोबियास निपको द्वारा "टर्म रिवरिटिंग एंड ऑल दैट"

  1. Coq और इसाबेल के बीच अंतर क्या हैं?

  2. मैं या तो इसाबेल या Coq, या दोनों सीखना चाहिए?

  3. क्या इसाबेल या कोक को पहले सीखने का कोई फायदा है?

श्रृंखला का अगला प्रश्न यहाँ खोजें


7
यह ध्यान रखना महत्वपूर्ण है कि आपके द्वारा उल्लिखित उपकरण स्वचालित सिद्धकर्ता नहीं हैं, लेकिन सबूत सहायक हैं (हालांकि वे अपने दम पर आसान सामान साबित कर सकते हैं)।
राफेल

@DaveClarke डुप्लिकेट?
राफेल

@ राफेल: हां (अब मेरे जवाब में नया डेटा शामिल है)।
डेव क्लार्क

@DaveClarke क्या आपको लगता है कि हमें इसे बंद करना चाहिए और दोनों को मिलाना चाहिए?
राफेल

@ राफेल: हां। मैंने अभी उत्तर के पाठ को दूसरे प्रश्न के लिए अपने उत्तर में कॉपी किया है।
डेव क्लार्क

जवाबों:


25

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

अंततः, जो आपके लिए सबसे उपयुक्त है, वह इस बात पर निर्भर हो सकता है कि आप क्या साबित करना चाहते हैं। दोनों भाषाओं में बहुत सारे पुस्तकालय समर्थन और सक्रिय समुदाय हैं जो सभी प्रकार के विकास और उदाहरण सिद्धांतों को करते हैं। यदि एक भाषा आपके द्वारा विकसित किए जाने वाले सिद्धांत के प्रकार के लिए पर्याप्त पुस्तकालय (या अन्य) सहायता प्रदान करती है, तो मैं उस भाषा का चयन करूँगा।

एक रणनीति दोनों भाषाओं में एक सरल ट्यूटोरियल करना है और सबसे अच्छा महसूस करने वाले का पालन करना है। उदाहरण के लिए,

यहाँ एक ब्लॉग पोस्ट है जो दो लोगों की तुलना करता है जो अंततः इसाबेल को पसंद करते हैं।

यह सुनिश्चित करें कि आप कमांड लाइन पर चीजों को करने के बजाय एक उचित IDE (जैसे कि ProofGeneral ) का उपयोग करते हैं ।

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


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

4
हमने एक कोर्स के लिए पिछले साल इसाबेल / एचओएल विकी की स्थापना की थी; यह अन्यथा द्वारा आने के लिए कठिन कुछ अच्छा साक्षात्कार है।
राफेल

18

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

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

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

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

इसलिए तय करें कि आप क्या करना चाहते हैं: पहले क्रम तर्क में मॉडल और प्रमेय सत्यापित करें, या अपने कार्यक्रमों की शुद्धता (या रचनात्मक तर्क में प्रमेय) के बारे में तर्क करने के लिए एक शक्तिशाली प्रकार के सिद्धांत का उपयोग करें। यदि यह पहला है, तो अधिक स्वचालित कटौती आधारित तकनीकों के बारे में जानें, यदि यह दूसरा है, तो Coq, HOL, आदि के बारे में अधिक जानें ... वैसे, यदि आप Coq सीखना चाहते हैं, जबकि उपरोक्त संदर्भ अच्छे हैं, तो मुझे लगता है कि Coq सीखने के लिए वास्तव में दो मुख्य संदर्भ हैं:

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

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


15

इंटरएक्टिव थ्योरी प्रोमिंग (ITP) के लिए कई तरह के सिस्टम हैं - उस नाम का कॉन्फ्रेंस भी देखें - Coq, Isabelle, HOLs, ACL2, PVS आदि।

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

"हत्यारा सुविधा" भी हो सकती है जो आपको अपने काम के लिए आवश्यक है।

यह इन प्रणालियों में से किसी एक पर साथी विशेषज्ञों को रखने में भी मदद करता है।

  • Coq और इसाबेल के बीच अंतर क्या हैं?

दोनों स्टैनफोर्ड / एडिनबर्ग / कैम्ब्रिज से एलसीएफ सिस्टम के वंशज हैं। 1985 में, जी। Huet और L. Paulson कैम्ब्रिज LCF के अंतिम संस्करण पर एक साथ काम कर रहे थे। फिर विभाजन फ्रांस में Coc / CIC / COQ (अब Coq) और कैम्ब्रिज और म्यूनिख में इसाबेल की ओर हुआ। ध्यान दें कि HOL4, HOL- लाइट, HOL-XYZ LCF के अन्य संबंधित वंशज हैं।

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

  • मैं या तो इसाबेल या Coq, या दोनों सीखना चाहिए?

आपको दोनों को देखना चाहिए , और यह महसूस करने की कोशिश करनी चाहिए कि क्या आपको अधिक वाइन और पनीर, या ब्रैटवुर्स्ट और सॉकरूट पसंद है। (इसाबेल के पीछे के लोगों में से एक के रूप में, लेकिन वर्तमान में फ्रांस में, मुझे आश्चर्य है कि वास्तव में कितने फ्रांसीसी लोग सौकरकूट पसंद करते हैं, जब वे निजी तौर पर घर पर हैं और कोई भी नहीं है :-)

  • क्या इसाबेल या कोक को पहले सीखने का कोई फायदा है?

मुझे ऐसा नहीं लगता। एक खतरा हो सकता है कि आप पहले प्रयास करने वाले के साथ फंस जाते हैं और दूसरे की कोशिश नहीं करते हैं, या कि आप पहले के साथ बहुत जल्दी निराश हो जाते हैं और इसे बहुत जल्दी खारिज कर देते हैं। किसी भी मामले में, आपको सिस्टम के साथ उत्पादक बनने के लिए समय और दृढ़ता की आवश्यकता होगी।

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


10

यहाँ कुछ अच्छा वीडियो Coq ट्यूटोरियल है जो कि बीर बाउर द्वारा दिया गया है। यह किसी भी तरह से पूर्ण नहीं है, लेकिन मुझे लगता है कि यह एक अच्छा परिचय है।


1
महान! "कोक के साथ पहला प्रमाण" में एक केंद्रीय वाक्य पर ध्यान दें: "यह सोचें कि आप इसे कागज पर कैसे करेंगे।" सबसे अच्छी सलाह कभी।
राफेल

4

इसाबेल के लिए यह परिचय काफी संपूर्ण है।

इसाबेल का यह परिचय भी देखें

सामान्य तौर पर, इसाबेल के साथ शुरू करना अपेक्षाकृत आसान है, क्योंकि कई उपलब्ध उदाहरण हैं। उदाहरण के लिए, आधिकारिक वेबसाइट में

PS - मैं इसाबेल के साथ किसी भी तरह से संबद्ध नहीं हूं, मैं औपचारिक तरीकों में एक सैद्धांतिक हूं, लेकिन मुझे पता है कि इसाबेल एक डिफ़ॉल्ट शुरुआती बिंदु के रूप में अक्सर आती है।


1
"मुझे पता है कि इसाबेल अक्सर एक डिफ़ॉल्ट शुरुआती बिंदु के रूप में सामने आती है।": मैं बल्कि कहूंगा, एचओएल अक्सर एक डिफ़ॉल्ट प्रारंभिक बिंदु के रूप में आता है, और एक प्रमाण सहायक के रूप में, बल्कि बल्कि यह है कि अक्सर एक डिफ़ॉल्ट के रूप में आता है। यह सोचकर, कि यह मज़ेदार है ... सबसे प्रसिद्ध तर्क (सीओसी से अधिक प्रसिद्ध) और सबसे प्रसिद्ध प्रमाण सहायक (इसाबेल की तुलना में अधिक प्रसिद्ध), मेल नहीं खाते (सीओसी, एचओएल पर सीओसी और इसाबेल पर आधारित है)।
हिबू ५

2

λ

इसके अलावा, डीपस्पेक समर स्कूल के सॉफ्टवेयर फ़ाउंडेशन में कुछ बेहतरीन व्याख्यान हैं:

सॉफ़्टवेयर नींव श्रृंखला पर आधारित कुछ व्याख्यान, जो पहले ही उल्लेख किए गए थे।

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