लैम्ब्डा कैलकुलस: संदर्भों और मूल्यांकन संदर्भों के बीच अंतर


12

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

बूलियनों के साथ एक अप्रकाशित लैम्ब्डा कैलकुलस पर विचार करें और यदि-कथन जिनके वाक्य इस वाक्य रचना द्वारा दिए गए हैं:

 t ::= v | t t | if t t t | x
 v ::= \x.t | #t | #f

इस मामले में संदर्भ C इस सिंटैक्स के अनुसार दिया जाएगा:

C ::= [-] | \x. C | C t | t C | if C t t | if t C t | if t t C 

इसके अतिरिक्त, एक मूल्यांकन संदर्भ ई को इस अन्य वाक्यविन्यास के अनुसार परिभाषित कर सकता है:

E ::= [-] | \x. E | v E | E t | if E t t 

मैंने अपने प्रश्न को तीन उप-बिंदुओं में विभाजित किया है जिन्हें मैं संबोधित करना चाहूंगा।

  1. दो धारणाओं का उपयोग कब किया जाता है? मैं उदाहरण के लिए जानता हूं कि मूल्यांकन संदर्भों का उपयोग पथरी के शब्दार्थ को परिभाषित करने के लिए किया जाता है, लेकिन संदर्भों का उपयोग अभी भी कुछ हद तक मुझे प्रभावित करता है। इसके अलावा मैं यहाँ अपने ज्ञान की कुछ पुष्टि करना चाहता हूँ।
  2. कब एक को दूसरे को पसंद किया जाए और क्यों?
  3. क्या आप उन प्रासंगिक लेखों की ओर इशारा कर सकते हैं जो मुझे इस मामले को सुलझाने में मदद कर सकते हैं?

जवाबों:


15

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

कार्यक्रम समानता को परिभाषित करने में से एक औपचारिक तरीके से दो कार्यक्रमों कहना है और एन हैं प्रासंगिक रूप से बराबर वे व्यवहार में बदलाव के बिना प्रत्येक संदर्भ में एक दूसरे की जगह ले सकता। इस प्रकार हम इस को परिभाषित कर सकते हैं: एम और एन प्रासंगिक रूप से कर रहे हैं सभी समापन संदर्भों के लिए प्रदान की बराबर सी [ ⋅ ] के लिए एम और एन : सी [ एम ] ⇓ टी यदि और केवल यदि सी [ एन ] ⇓ टी । हम कहते हैं कि एक संदर्भ M , N के लिए बंद हैमएनमएनसी[⋅]मएनसी[म]⇓टीसी[एन]⇓टीम,एनयदि न तो और न ही सी [ एन ] के मुफ्त चर हैं। अभिव्यक्ति एम ⇓ टी मतलब है कि कार्यक्रम एम मूल्य के लिए कदम की एक सीमित संख्या में कम कर देता है टी । (एक तरफ के रूप में, ध्यान दें कि प्रासंगिक तुल्यता की परिभाषा संगणना की समृद्ध धारणाओं के लिए अधिक शामिल है, जैसे समवर्ती प्रक्रियाएं।)सी[म]सी[एन]म⇓टीमटी

इसके विपरीत, मूल्यांकन संदर्भ ऐसे संदर्भ हैं जो मूल्यांकन को अवरुद्ध नहीं करते हैं। अधिक सटीक रूप से, एक मूल्यांकन संदर्भ उस बिंदु पर छेद के साथ एक शब्द है जहां अगला परमाणु कटौती कदम होना चाहिए (या गैर-नियतात्मक संगणना के लिए जगह ले सकता है)। अतः निम्नलिखित नियम को मूल्यांकन संदर्भों के लिए धारण करना चाहिए: मूल्यांकन संदर्भों का उपयोग करने के एक उदाहरण के रूप में, कॉल-बाय-वैल्यूλ-calculus केलिए कमी नियमों पर विचार करें, जहां हमλ केतहत कम नहीं करते हैं। इसलिए जब भीएम→एन, हमारे पास एक कमीλx नहीं है। एम→λएक्स। एन। यह आसानी से ऊपर सामान्य संदर्भ नियम के साथ व्यक्त किया जा सकता है, साथ में मूल्यांकन संदर्भों के लिए एक व्याकरण है जोλ-expressionsको छोड़ देता है। मूल्यांकन संदर्भों का पहली बार उपयोग किया गया था

म→एनइ[म]→इ[एन]
λλम→एनλएक्स।म→λएक्स।एनλफेलिसन और हाइब द्वारा अनुक्रमिक नियंत्रण और राज्य के सिंथेटिक सिद्धांतों पर संशोधित रिपोर्ट ।

14

एक संदर्भ एक वाक्यगत धारणा है। एक संदर्भ एक शब्द है जिसमें एक छेद है। (कभी कभी वहाँ बहु छेद संदर्भों कर रहे हैं, परिभाषा स्पष्ट रूप से उस मामले में दिया जाएगा।) संदर्भों की वाक्य रचना शब्दों के वाक्य रचना ले रहे हैं और एक subterm एक छेद होना करने की अनुमति देकर परिभाषित किया गया है एक शब्द के बजाय। BNF में (मैं एक उदाहरण के रूप लैम्ब्डा-पथरी का उपयोग करें, बूलियन्स बिना और बयानों जो उदाहरण के लिए कुछ भी नहीं लाते हैं।): सी : : = [ ] | x | टी[]

C::=[]∣x∣tC∣Ct∣λx.C

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

शब्दार्थ में विभिन्न परिभाषाओं को बनाने के लिए प्रसंगों का उपयोग किया जाता है। एक सामान्य उदाहरण यह है कि मूल्यांकन की अधिकांश धारणाओं में परिभाषित संदर्भ शामिल हैं जिसमें मूल्यांकन किया जा सकता है। उदाहरण के लिए, लैम्ब्डा-पथरी पर विचार करें। मूल्यांकन के मौलिक धारणा बीटा कमी शासन द्वारा दिया जाता है: जहां एम { x ← एन } है प्रतिस्थापन एक्स ↦ एन करने के लिए लागू एम ।

(λएक्स।म)एन→βम{एक्स←एन}
म{एक्स←एन}एक्स↦एनम

यह बीटा-रिडक्शन की पूरी परिभाषा नहीं है: एक टर्म दिया गया है , अगर यह सब- एम और एन और एक वेरिएबल x जैसे t = ( λ x M ) है तो बीटा-कम कर सकते हैं ।टीमएनएक्स ; लेकिन अधिक आम तौर पर टी बीटा कम कर सकते हैं, अगर वहाँ एक subterm है टी ' ऐसी है कि टी ' = ( λ एक्स । एम )टी=(λएक्स।म)एनटीटी'टी'=(λएक्स।म)एन । एक अन्य तरीका यह व्यक्त करने के लिए वह यह है कि कर सकते हैं बीटा को कम अगर वहाँ एक संदर्भ सी और कुछ शर्तों एम और एन और एक चर x ऐसी है कि टी = सी [ ( λ एक्स । एम )टीसीमएनएक्स । जब इस तरह के एक कमी है, दाएँ हाथ की ओर है सी [ एम { x ← एन } ] । औपचारिक अंकन का उपयोग करने के लिए, बीटा-कटौती को निम्नलिखित कटौती नियमों द्वारा परिभाषित किया गया है: टी=सी[(λएक्स।म)एन]सी[म{एक्स←एन}] एक ही परिभाषा स्पष्ट संदर्भों के सभी प्रकार बनाने के द्वारा व्यक्त किया जा सकता:

(λएक्स।म)एन→βम{एक्स←एन}(β)म→βएनसी[म]→βसी[एन](γ)
(λएक्स।म)एन→βम{एक्स←एन}(β)म→βएनλएक्स।म→βλएक्स।एन(सीλ)म→βएनमपी→βएनपी(सी@<)म→βएनपीम→βपीएन(सी@>)

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

डी:: =[]|एक्स|टीडी|डीटी
हम इसे विस्तार करके भी प्रस्तुत कर सकते हैं, जैसे हमने पूर्ण बीटा कमी के लिए ऊपर किया था:
(λएक्स।म)एन→nपीम{एक्स←एन}म→nपीएनडी[म]→nपीडी[एन]
Dको मूल्यांकन संदर्भ कहा जाएगा क्योंकि इसका उपयोग मूल्यांकन की धारणा को परिभाषित करने के लिए किया जाता है। एक मूल्यांकन संदर्भ एक विशेष प्रकार का संदर्भ नहीं है; इसके बजाय,इसे एक मूल्यांकन संदर्भ कहा जाता है जो संदर्भ के लिए उपयोग किया जाता है।
(λएक्स।म)एन→nपीम{एक्स←एन}(β)म→nपीएनमपी→nपीएनपी(सी@<)म→nपीएनपीम→nपीपीएन(सी@>)
डी

मैं संदर्भ का एक और उदाहरण देता हूँ। के परिभाषित करते हैं मानों निम्न सिंटैक्स के अनुसार: वी : : = एक्स वी 1 ... वी एन | λ एक्स । एम : अब के संदर्भों का एक और प्रकार को परिभाषित करते हैं ई : : = [ ] | एमवी

वी:: =एक्सवी1...वीn|λएक्स।म
इ:: =[]|मइ|इवी
डी
(λएक्स।म)वी→सीखvएम{एक्स←वी}(βसीखvए)म→βएनइ[म]→सीखvएइ[एन](γसीखvए)

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

@DaveClarke एक तरफ के रूप में, आप अभिकलन के गैर-नियतात्मक धारणाओं के लिए मूल्यांकन को परिभाषित करने के लिए मूल्यांकन संदर्भों का भी उपयोग कर सकते हैं, जहां आपके पास मूल्यांकन संदर्भ और रीडेक्स में एक अद्वितीय अपघटन नहीं है।
— मार्टिन बर्जर

@MartinBerger: वास्तव में।
— डेव क्लार्क

@DaveClarke क्या आपका मतलब है "एक निर्धारणात्मक मूल्यांकन संदर्भ एक विशेष प्रकार का संदर्भ है"? मैं संदर्भों का एक मनमाना सेट ले सकता हूं और इसके आधार पर मूल्यांकन रणनीति को परिभाषित कर सकता हूं।
— गिल्स एसओ- बुराई को रोकना '

@ गिल्स: मूल्यांकन संदर्भ एक नियतात्मक कमी रणनीति को परिभाषित कर सकते हैं। मुझे नहीं लगता कि मैंने "निर्धारक मूल्यांकन संदर्भ" वाक्यांश देखा है। वे निश्चित रूप से एक विशेष प्रकार के संदर्भ हैं। मैं आपकी टिप्पणी से सहमत हूं; बिंदु अधिक है कि आपका उत्तर मूल्यांकन संदर्भों के ऐतिहासिक महत्व को याद करता है, जो कि कमी की निर्धारणवादी धारणा को परिभाषित करना था।
— डेव क्लार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.