आंशिक शुद्धता को समाप्त करना कितना कठिन है?


14

यदि आप कार्यक्रम सत्यापन से परिचित हैं, तो आप पृष्ठभूमि से पहले प्रश्न को पढ़ना पसंद करेंगे । यदि आप कार्यक्रम सत्यापन से परिचित नहीं हैं तो आप अभी भी इस प्रश्न का उत्तर देने में सक्षम हो सकते हैं, लेकिन आप पहले पृष्ठभूमि को पढ़ना पसंद करेंगे ।

पृष्ठभूमि

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

हम कहते हैं कि एक प्रोग्राम आंशिक रूप से सही होता है जब प्रत्येक नोड x को किसी पूर्व शर्त के साथ एनोटेट करने का एक तरीका होता है (x) और पोस्टकॉन्डीशन b (x) जैसे कि (१) प्रारंभिक नोड का पूर्वानुभव मान्य होता है, (२) { एक (एक्स) } x { ख (x) } के लिए सभी आदेशों रखती एक्स , और (3) ( ख (x) का अर्थ है एक (y) ) से सभी किनारों के लिए मान्य है एक्स के लिए वाई । यहाँ Hoare triples को इस प्रकार परिभाषित किया गया है:

  • { p } assert q { r } का अर्थ है कि ( p का अर्थ है ( q और r )) मान्य है
  • { p } मान q { r } का अर्थ है कि (( p और q का तात्पर्य r है ) मान्य है
  • { पी } v: = ई { r } का मतलब है कि (( पी के साथ के लिए प्रतिस्थापित v ) का तात्पर्य आर ) मान्य है

यहाँ इस आंशिक शुद्धता को जाँचने का एक तर्कपूर्ण तर्क अचूक है: एक बार जब आप कुछ (x) और कुछ b (x) को भरते हैं, तो आपको यह जाँचने की आवश्यकता होती है कि क्या कुछ फ़ोल सूत्र मान्य हैं, और यह अयोग्य है।

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

अब, यदि प्रगति के दावे वाला कार्यक्रम अभी भी आंशिक रूप से सही है, तो हम जानते हैं कि मूल कार्यक्रम समाप्त हो गया है।

सवाल

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

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


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

यह मेरे लिए भी अविश्वसनीय लगता है। जो मैं पूछ रहा हूं, वह इस बात का प्रमाण है कि यह निर्विवाद है।
रादु GRIGore

जवाबों:


7

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

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

लिंक:


1
मुझे आशा है कि आप अपने उत्तर को संपादित करने और लिंक को सक्रिय बनाने में कोई आपत्ति नहीं करेंगे।
लेडी बाउर

4

आंशिक गैर-समाप्ति के लिए आवश्यक गैर-समाप्ति से एक स्पष्ट कमी है , अर्थात्:

पी जब एक प्रारंभिक राज्य को संतुष्ट करने में शुरू किया था समाप्त हो जाता है कभी नहीं φ iff { φ } पी {झूठी} मान्य है।

मुझे पता है कि यह एक और गैर-जवाब है। इसका लाभ यह है कि यह ऊपर वालों की तुलना में कम है।


3

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

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

मेरी धारणा है कि पैट्रिक कूसोट द्वारा अग्रणी सार व्याख्या पर काम इस क्षेत्र में सबसे अधिक गतिशील रहा है, लेकिन मैं विशेषज्ञ होने का दिखावा नहीं करता।


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

@Radu: वहाँ स्वत: समाप्ति साक्ष्यों पर काम किया गया है, प्रोलॉग के लिए कुछ अच्छा काम किया जा रहा है। समय मिलने पर मैं कुछ रेफरी खोद सकता हूं।
चार्ल्स स्टीवर्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.