कार्यक्रम विश्लेषण में कम से कम निश्चित बिंदु (एलएफपी) महत्वपूर्ण क्यों है


11

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

विशेष रूप से, विकिपीडिया में यह लेख: नस्टर - टार्स्की प्रमेय में उल्लेख है कि lfp का उपयोग कार्यक्रम शब्दार्थ को परिभाषित करने के लिए किया जाता है।

यह महत्वपूर्ण क्यों है? कोई भी सरल उदाहरण मेरी मदद करता है। (मैं एक बड़ी तस्वीर पाने की कोशिश कर रहा हूं)।

संपादित करें

मुझे लगता है कि मेरा कहना गलत है। मैं lfp के महत्व को चुनौती नहीं देता। मेरा सटीक प्रश्न (शुरुआती) है: कंप्यूटिंग एलएफपी प्रोग्राम विश्लेषण में कैसे मदद करता है? उदाहरण के लिए, क्यों / कैसे अमूर्त व्याख्या lfp का उपयोग करता है? क्या होता है अगर सार डोमेन में कोई lfp नहीं है?

उम्मीद है कि मेरा सवाल अब और ठोस है।


@DW यह प्रोग्राम एनालिसिस में एक शुरुआती सवाल है। मैंने सवाल पोस्ट करने से पहले खुद से कई बार बहस की अगर यह बहुत अस्पष्ट लगता है। मैं क्या देख रहा हूँ: कार्यक्रम विश्लेषण में एलएफपी क्या भूमिका निभाता है (यह सुनिश्चित करना महत्वपूर्ण है, लेकिन कैसे?)। मैं एक ऐसे उत्तर की तलाश कर रहा हूं जो बहुत सारे गणित विवरणों में न हो। मुझे लगता है कि मेरे प्रश्न में शब्दांकन भी स्पष्ट नहीं है। मैं प्रश्न संपादित करूंगा।
राम

@ मैं मानता हूँ कि यह अच्छी तरह से शोध प्रश्न नहीं हो सकता है। हालाँकि जब भी मैं पेपर पढ़ता रहता हूं, तो गणित के बहुत सारे विवरण और मैं बड़ी तस्वीर को जल्दी से ढीला कर देता हूं। उदाहरण के लिए, अधिक संक्षेप में , यह पत्र [नियंत्रण-प्रवाह के लिए चौड़ीकरण ] ( berkeleychurchill.com/research/papers/vmcai14.pdf ) मेरे लिए बहुत सार प्रतीत होता है। यह सीधे कंप्यूटिंग को कम से कम फिक्स पॉइंट की अपील करता है। कार्यक्रम विश्लेषण में अधिकांश कागजात इसी तरह की लाइनों में इस सवाल से चिंतित लगते हैं। मैंने बड़ी तस्वीर खो दी। मुझे यह जानकर प्रसन्नता होगी कि कंप्यूटिंग एलएफपी महत्वपूर्ण क्यों है।
राम

जवाबों:


13

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

while b do c done  ≡  if b then (c ; while b do c done)

जो कहना है कि समीकरण while b do c doneका एक समाधान Wहै

W  ≡  Φ(W)

जहां Φ(x) ≡ if b then (c ; x)। लेकिन क्या होगा अगर Φहै कई निश्चित बिंदु,? कौन सा whileलूप से मेल खाता है ? प्रोग्रामिंग शब्दार्थ की बुनियादी अंतर्दृष्टि में से एक यह है कि यह सबसे कम निश्चित बिंदु है।

एक सरल उदाहरण लेते हैं, इस बार पुनरावृत्ति। हास्केल का उपयोग करूंगा। fद्वारा परिभाषित पुनरावर्ती कार्य

f :: a -> a
f x = f x

हर जगह अपरिभाषित समारोह है, क्योंकि यह सिर्फ हमेशा के लिए चलता है। हम इस परिभाषा को और अधिक असामान्य तरीके से फिर से लिख सकते हैं (लेकिन यह अभी भी हास्केल में काम करता है)

f :: a -> a
f = f

तो fपहचान समारोह का एक निश्चित बिंदु है:

f ≡ id f

लेकिन हर फ़ंक्शन एक निश्चित बिंदु है id। सामान्य डोमेन-सिद्धांत संबंधी आदेश के तहत, "अपरिभाषित" सबसे कम तत्व है। और वास्तव में, हमारा कार्य fहर जगह अपरिभाषित फ़ंक्शन है।

अनुरोध पर जोड़ा गया: टिप्पणियों में ओपी ने शब्दार्थ whileलूप के लिए आंशिक आदेश के बारे में पूछा (आपने माना कि यह एक जाली थी लेकिन इसकी आवश्यकता नहीं है)। एक अधिक सामान्य प्रश्न यह है कि एक प्रक्रियात्मक भाषा की डोमेन-थ्योरिटिक व्याख्या क्या है जो चर को हेरफेर कर सकती है और इसमें बुनियादी नियंत्रण संरचनाएं (सशर्त और लूप) हैं। ऐसा करने के कई तरीके हैं, इस पर निर्भर करता है कि आप वास्तव में क्या कैप्चर करना चाहते हैं, लेकिन चीजों को सरल रखने के लिए, मान लें कि हमारे पास वैश्विक चर निश्चित संख्या हैnx1,,xnयह कार्यक्रम पढ़ सकता है और अपडेट कर सकता है, और कुछ नहीं (कोई I / O या अपवाद, या नए चर का आवंटन)। उस स्थिति में एक कार्यक्रम को अंतिम अवस्था में चर की प्रारंभिक स्थिति के परिवर्तन के रूप में देखा जा सकता है, या यदि कार्यक्रम चक्र को अपरिभाषित मूल्य। इसलिए, यदि प्रत्येक चर सेट का एक तत्व रखता है, तो एक प्रोग्राम मैपिंग अनुरूप होगा : प्रत्येक प्रारंभिक कॉन्फ़िगरेशन चरों के में, प्रोग्राम या तो विचलन करेगा और उत्पादन करेगा, या यह अंतिम स्थिति को समाप्त करेगा और उत्पादन करेगा, जो कि का एक तत्व है । सभी मानचित्रों का सेट एक डोमेन है:VVnVn{}(v1,,vn)VnVnVnVn{}

  • हम पर फ्लैट ऑर्डरिंग का उपयोग करते हैं, जिसके तल पर होता है और इसके ऊपर "फ्लैट" के सभी तत्व होते हैं , और फिरVn{}VnVnVn{} को बिंदुवार आदेश दिया जाता है,
  • while true do skip done
  • हर बढ़ते क्रम में एक वर्चस्व होता है

बस आपको यह अंदाजा लगाने के लिए कि यह कैसे काम करता है, कार्यक्रम के शब्दार्थ

x_1 := e

(v1,,vn)Vnvee(v1,,vn)(ve,v2,,vn)


1
जबकि उदाहरण के लिए +1। हालांकि, मैं थोड़ा उलझन में हूं। But what if Φ has many fixed points?जबकि मैं निश्चित बिंदु समीकरण को समझता हूं, इस संदर्भ में, L में W \ _ है? हम यहाँ जाली को कैसे परिभाषित करते हैं? मैं उस पर आपके और विस्तार की सराहना करता हूं।
राम

उपरोक्त टिप्पणी में, मैं एक जाली (या एक पोज़) के लिए खड़े होने के लिए "L" का उपयोग कर रहा हूँ
राम

मैंने जवाब में संशोधन किया।
बाउर

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

6

यहाँ अंतर्ज्ञान है: कम से कम निश्चित अंक आपको छोरों का विश्लेषण करने में मदद करते हैं।

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

मुश्किल सा है जब आप एक पाश के लिए मिलता है। लूप कई बार निष्पादित कर सकता है। आमतौर पर, आप अपने प्रोग्राम विश्लेषण को लूप के उन सभी पुनरावृत्तियों को निष्पादित नहीं करना चाहते हैं, क्योंकि तब प्रोग्राम विश्लेषण में लंबा समय लगेगा ... या समाप्त भी नहीं हो सकता है। तो, यह वह जगह है जहाँ आप कम से कम निश्चित बिंदु का उपयोग करते हैं। कम से कम निश्चित बिंदु मूल रूप से यह दर्शाता है कि आप जो कह सकते हैं, वह लूप के खत्म होने के बाद सही होगा, यदि आप नहीं जानते हैं कि लूप कितनी बार होगा।

यही सबसे कम निश्चित बिंदु के लिए प्रयोग किया जाता है। क्योंकि लूप पूरे कार्यक्रमों में मौजूद होते हैं, इसलिए पूरे विश्लेषण में कम से कम निश्चित बिंदुओं का उपयोग किया जाता है। कम से कम निश्चित बिंदु महत्वपूर्ण हैं क्योंकि लूप हर जगह हैं, और लूप का विश्लेषण करने में सक्षम होना महत्वपूर्ण है।

संयोग से, पुनरावृत्ति और पारस्परिक पुनरावृत्ति लूप का एक और रूप है - इसलिए वे भी कम से कम निश्चित बिंदु के साथ नियंत्रित होते हैं।

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