शॉल बनाम डीप एंबेडिंग


47

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

  • विभिन्न दृष्टिकोणों के फायदे और सीमाएं क्या हैं?
  • क्या निर्धारित करने के लिए कोई दिशानिर्देश उपलब्ध हैं जिनका उपयोग करना है?
  • क्या किसी भी व्यवस्थित फैशन में दो अभ्यावेदन के बीच स्विच करना संभव है?

प्रेरणा के रूप में, मैं विभिन्न सुरक्षा संबंधी लॉजिक्स कोक में सांकेतिक शब्दों में बदलना चाहूंगा और सोच रहा हूं कि विभिन्न दृष्टिकोणों के पेशेवरों और विपक्ष क्या हैं।

जवाबों:


28

विभिन्न दृष्टिकोणों के फायदे और सीमाएं क्या हैं?

  • गहरी एम्बेडिंग के पेशेवरों: आप सूत्रों की संरचना पर प्रेरण द्वारा चीजों को साबित और परिभाषित कर सकते हैं। हितों के उदाहरण एक सूत्र के आकार हैं।

  • डीप एम्बेडिंग की विपक्ष: आप चर के बंधन से स्पष्ट रूप से निपटते हैं। यह आमतौर पर बहुत श्रमसाध्य है।

क्या निर्धारित करने के लिए कोई दिशानिर्देश उपलब्ध हैं जिनका उपयोग करना है?

वस्तु तर्क में सिद्ध परिणाम आयात करने के लिए उथला एम्बेडिंग बहुत उपयोगी है। उदाहरण के लिए, यदि आपने एक छोटे तर्क (जैसे जुदाई तर्क) में कुछ साबित किया है, तो उथले एम्बेडिंग Coq में आपके परिणाम को आयात करने के लिए पसंद का एक उपकरण हो सकते हैं।

दूसरी ओर, जब आप ऑब्जेक्ट लॉजिक के बारे में मेटा-प्रमेय साबित करना चाहते हैं (उदाहरण के लिए कट-एलिमिनेशन जैसे) तो गहरी एम्बेडिंग लगभग अनिवार्य है।

क्या किसी भी व्यवस्थित फैशन में दो अभ्यावेदन के बीच स्विच करना संभव है?

उथले एम्बेडिंग के पीछे का विचार वास्तव में ऑब्जेक्ट फॉर्मूले के एक मॉडल में सीधे काम करना है। आमतौर पर लोग Prop के एक निवासी को सीधे एक ऑब्जेक्ट फॉर्मूला P (नोटेशन या हाथ से ट्रांसलेशन का उपयोग करके) मैप करते हैं, बेशक, Prop के निवासी हैं जो ऑब्जेक्ट लॉजिक के फॉर्मूला को एम्बेड करके प्राप्त नहीं किया जा सकता है। इसलिए आप किसी तरह की पूर्णता खो देते हैं।

तो एक व्याख्या फ़ंक्शन के माध्यम से एक गहरी एम्बेडिंग सेटिंग में प्राप्त प्रत्येक परिणाम भेजना संभव है।

यहाँ एक छोटा सा उदाहरण है:

आगमनात्मक सूत्र: सेट: =
    Ftrue: सूत्र
  | Ffalse: सूत्र
  | कंद: सूत्र -> सूत्र -> सूत्र
  | के लिए: सूत्र -> सूत्र -> सूत्र।

फ़िक्सपॉइंट व्याख्या (एफ: सूत्र): प्रोप: = एफ के साथ मैच 
    Ftrue => सच है
  | फफ़लसे => मिथ्या
  | फैंड एब => (व्याख्या ए) / \ (व्याख्या बी)
  | Ab => के लिए (a) \ / (व्याख्या b)
 समाप्त।

प्रेरक व्युत्पन्न: सूत्र -> सहारा: = 
    deep_axiom: व्युत्पन्न Ftrue
  | deep_and: forall ab, derivable a -> derivable b -> derivable (फैंड एब)
  | deep_or1: forall ab, derivable a -> व्युत्पन्न (ab के लिए)
  | deep_or2: forall ab, derivable b -> derivable (ab के लिए)।

आगमनात्मक sderivable: Prop -> Prop: = 
    उथला_अक्षय: सुंदर सच्चा 
  | shallow_and: forall ab, sderivable a -> sderivable b -> sderivable (a / a)
  | shallow_or1: forall ab, sderivable a -> sderivable (a / a / b)
  | shallow_or2: forall ab, sderivable b -> sderivable (a (a / b)।

(* आप निम्नांकित निम्नांकित सिद्ध कर सकते हैं: *)
लेम्मा उथले_दीप: 
   forall F, derivable F -> sderivable (व्याख्या एफ)।

(* आप निम्न लिम्मा को साबित नहीं कर सकते: *)
लेम्मा टी: 
   forall P, sderivable P -> F से मौजूद है, F = P की व्याख्या करें।

22

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

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

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

  • (3) पर कुछ महीने लेने की योजना बनाएं यदि यह आपका पहली बार है। आपको रहने के लिए अपने प्रमाण सहायक के फैंसी विशेषताओं से परिचित होना होगा । (लेकिन यह एक निवेश है जो सामान्य रूप से भुगतान करेगा।)
  • यदि आपके प्रमाण सहायक पर निर्भर प्रकार नहीं हैं, तो स्तर 2 पर रहें।
  • यदि आपकी ऑब्जेक्ट लैंग्वेज स्वयं ही निर्भर है, तो स्तर 2 पर बने रहें।

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

संपादित करें: यहाँ एक टिप्पणी है जो बताती है कि सीढ़ी धीरे-धीरे ऊपर क्यों जा रही है, इतना लुभावना है, और क्यों यह (सामान्य रूप से) दुख की ओर ले जाता है।

ABIABBA(AB)CA(BC)(IA)(BC)A(B(CI))

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

यह सबसे बड़ा टुकड़ा लक्षित करने के लिए बेहतर है जिसे आप उचित प्रयास के साथ संभाल सकते हैं, और बस कर सकते हैं।


इस शानदार उत्तर के लिए धन्यवाद, नील। काश मैं दो उत्तर स्वीकार कर पाता (मैंने दूसरों के वोटों के आधार पर निर्णय लिया)।
डेव क्लार्क

कोई दिक्कत नहीं है। मुझे बस कुछ याद है जो मुझे इस उत्तर में जोड़ने की आवश्यकता है, कि क्यों वृद्धिशील रूप से इतना आकर्षक है।
नील कृष्णस्वामी

एसीयूआई गुणों से निपटना हमेशा एक उपद्रव होता है। कॉड, मौड की किताब से एक पत्ता क्यों नहीं निकाल सकता?
डेव क्लार्क

14

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

उदाहरण के लिए, जब आप होरे लॉजिक के बारे में तर्क करना चाहते हैं, तो आप अभिव्यक्ति भाषा को उथले तरीके से मॉडल कर सकते हैं, लेकिन असाइन-अगर-जबकि भाषा की रूपरेखा एक ठोस डेटाटाइप होनी चाहिए। आपको x + y या a <b की संरचना में प्रवेश करने की आवश्यकता नहीं है, लेकिन आपको whileआदि के साथ काम करने की आवश्यकता है ।

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

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

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