क्रिवाइन मशीन: Difference between revisions
(Created page with "{{Short description|Abstract machine}} thumb|क्रिवाइन मशीन का एक चित्र दृश्यसैद्...") |
No edit summary |
||
(12 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
[[सैद्धांतिक कंप्यूटर विज्ञान]] में, '''क्रिवाइन मशीन''' ''[[अमूर्त मशीन]]'' है (कभी-कभी इसे ''[[ आभासी मशीन |आभासी मशीन]]'' भी कहा जाता है)। अमूर्त मशीन के रूप में, यह [[ट्यूरिंग मशीन]] और [[एसईसीडी मशीन]] के साथ सुविधाएँ साझा करती है। क्रिवाइन मशीन ऐसी प्रतिष्ठानिक मशीन है जो रिकर्सिव फ़ंक्शन को कैसे कंप्यूट करती है को परिभाषित करने का प्रयास करती है। अधिक विशेष रूप से इसका उद्देश्य [[नाम से बुलाओ]] कमी का उपयोग करके [[लैम्ब्डा कैलकुलस|लैम्ब्डा गणना]] के सामान्य रूप में कमी को सख्ती से परिभाषित करना है। इसकी औपचारिकता के कारण, यह विवरण में बताता है कि प्रकार की कमी कैसे काम करती है और [[कार्यात्मक प्रोग्रामिंग]]भाषाओं के [[परिचालन शब्दार्थ]] की सैद्धांतिक नींव निर्धारित करती है। दूसरी ओर, क्रिवाइन मशीन कॉल-बाय-नाम को लागू करती है इसमें β-[[ कम करने योग्य अभिव्यक्ति | कम करने योग्य अभिव्यक्ति]] को उसके पैरामीटर पर लागू करने से पहले उसे निर्धारित किया जाता है। अन्य शब्दों में, अभिव्यक्ति (''λ'' ''x''. ''t'') ''u'' में यह पहले ''λ'' ''x'' को निर्धारित किया जाता है और फिर उसे u पर लागू किया जाता है। फ़ंक्शनल प्रोग्रामिंग में, यह यह तात्पर्य होता है कि पैरामीटर पर लागू किए गए फ़ंक्शन को मूल्यांकित करने के लिए, इसे पहले फ़ंक्शन को मूल्यांकित किया जाता है। | |||
क्रिवाइन मशीन को 1980 के दशक की | क्रिवाइन मशीन को फ्रांसीसी तार्किक विद्वान जीन-लुई क्रिवाइन ने 1980 के दशक की प्रारंभिक में डिज़ाइन किया था। | ||
== नाम और सिर से बुलाएं सामान्य रूप में कमी == | == नाम और सिर से बुलाएं सामान्य रूप में कमी == | ||
{{more| | {{more|लैम्ब्डा कैलकुलस}} | ||
क्रिवाइन मशीन लैम्ब्डा | क्रिवाइन मशीन लैम्ब्डा गणना से संबंधित दो अवधारणाओं पर आधारित है, अर्थात् हेड रिडक्शन और नाम से कॉल पर आधारित है| | ||
=== सिर सामान्य रूप में कमी === | === सिर सामान्य रूप में कमी === | ||
रेडेक्स<ref>{{Citation | |||
|last=Barendregt | |last=Barendregt | ||
|first=Hendrik Pieter | |first=Hendrik Pieter | ||
Line 26: | Line 25: | ||
|archivedate=2004-08-23 | |archivedate=2004-08-23 | ||
}} [ftp://ftp.cs.ru.nl/pub/CompMath.Found/ErrataLCalculus.pdf Corrections]. | }} [ftp://ftp.cs.ru.nl/pub/CompMath.Found/ErrataLCalculus.pdf Corrections]. | ||
</ref> ( | </ref> (बीटा-रेडेक्स भी कहा जाता है) लैम्बडा गणना का पद होता है जिसकी रूप में (''λ'' ''x''. ''t'') ''u'' होता है। यदि पद की आकृति (''λ'' ''x''. ''t'') ''u''<sub>1</sub> ... ''u<sub>n</sub>'' होती है, तो उसे हेड रेडेक्स कहा जाता है। [[बीटा सामान्य रूप]] लैम्ब्डा गणना का पद है जो हेड रिडेक्स नहीं है।{{efn|If one only deals with closed terms, these terms take the form ''λ'' ''x''. ''t''.}} हेड रीडक्शन पद के (गैर खाली) क्रमबद्ध श्रिंखला होती है जो पद के हेड रेडेक्स को श्रिंकलेट करती है। पद t की हेड रीडक्शन (जिसे हेड साधारण फ़ॉर्म में नहीं होने का समझा जाता है) हेड रीडक्शन है जो पद t से प्रारंभ होती है और हेड साधारण फ़ॉर्म पर समाप्त होती है। अभिकल्पिक दृष्टिकोण से, हेड रीडक्शन प्रोग्राम की प्रक्रिया है जब वह पुनरावृत्तिशील उप-प्रोग्राम का मूल्यांकन करता है। इस प्रकार की श्रिंकलन को कैसे कार्यान्वित किया जा सकता है, इसे समझना महत्वपूर्ण है। क्रिवाइन मशीन का उद्देश्य हेड साधारण फ़ॉर्म में पद को श्रिंकलने की प्रक्रिया प्रस्तावित करना है और इस प्रक्रिया को समय-समय पर वर्णित करना है। जैसे [[एलन ट्यूरिंग]] ने अवकाशी मशीन का उपयोग करके सामान्यता की नीति को समय-समय पर वर्णित किया, क्रिवाइन ने अवकाशी मशीन का उपयोग करके हेड साधारण फ़ॉर्म श्रिंकलन की नीति को समय-समय पर वर्णित किया जाता है। | ||
==== | ==== '''उदाहरण''' ==== | ||
पद ((λ 0) (λ 0)) (λ 0) (जो स्पष्ट प्रत्यक्ष चर का उपयोग करता है, इसके लिए पद (λx.x) (λy.y) (λz.z) होता है) हेड साधारण फ़ॉर्म में नहीं है क्योंकि (λ 0) (λ 0) को श्रिंकलित करके (λ 0) का उत्पादन होता है, जिससे हेड रेडेक्स (λ 0) (λ 0) होता है जो (λ 0) में श्रिंकलित होता है और जो इसलिए ((λ 0) (λ 0)) (λ 0) का हेड साधारण फ़ॉर्म होता है। अन्य शब्दों में, हेड साधारण फ़ॉर्म का श्रिंकलन है: | |||
: ((λ 0) (λ 0)) (λ 0) ➝ (λ 0) (λ 0) ➝ λ 0, | : ((λ 0) (λ 0)) (λ 0) ➝ (λ 0) (λ 0) ➝ λ 0, | ||
जो | जो इसके लिए है: | ||
: (λx.x) (λy.y) (λz.z) ➝ (λy.y) (λz.z) ➝ λz.z. | : (λx.x) (λy.y) (λz.z) ➝ (λy.y) (λz.z) ➝ λz.z. | ||
हम | आगे चलकर हम देखेंगे कि क्रिवाइन मशीन कैसे अवधि ((λ 0) (λ 0)) (λ 0) को संक्षेपित करती है। | ||
=== नाम से पुकारें === | === नाम से पुकारें === | ||
अवधि u v की हेड रेडक्शन को कार्यान्वित करने के लिए, जो आवेदन है, किन्तु जो रेडेक्स नहीं है, हमें पहले अवधि u को संक्षेपित करके अव्यवहार्यता दिखाने के लिए u को संक्षेपित करना होगा, और इस प्रकार v के साथ रेडेक्स बनाना होगा। जब रेडेक्स प्रकट होता है, तो हम उसे संक्षेपित करते हैं। आवेदन के शरीर को सदैव पहले संक्षेपित करना, नाम से कॉल लागू करती है। क्रिवाइन मशीन नाम से कॉल लागू को कार्यान्वित करती है। | |||
== विवरण == | == विवरण == | ||
यहां दी गई क्रिवाइन मशीन की प्रस्तुति लैम्ब्डा शब्दों के नोटेशन पर आधारित है जो डी ब्रूजन सूचकांकों का उपयोग करती है और मानती है कि जिन शर्तों से यह सिर के सामान्य रूपों की गणना करती है वे लैम्ब्डा | यहां दी गई क्रिवाइन मशीन की प्रस्तुति लैम्ब्डा शब्दों के नोटेशन पर आधारित है जो डी ब्रूजन सूचकांकों का उपयोग करती है और मानती है कि जिन शर्तों से यह सिर के सामान्य रूपों की गणना करती है वे लैम्ब्डा गणना परिभाषा मुक्त और बाध्य चर हैं।<ref name="Curien">{{cite book | first1 = Pierre-Louis | ||
| last1 = Curien | | last1 = Curien | ||
| title = Categorical Combinators, Sequential Algorithms and Functional | | title = Categorical Combinators, Sequential Algorithms and Functional | ||
| publisher = Birkhaüser | | publisher = Birkhaüser | ||
| year = 1993 | | year = 1993 | ||
| edition = 2nd}}</ref> यह वर्तमान स्थिति को तब तक संशोधित करता है जब तक कि वह ऐसा नहीं कर सकता, जिस स्थिति में इसे | | edition = 2nd}}</ref> यह वर्तमान स्थिति को तब तक संशोधित करता है जब तक कि वह ऐसा नहीं कर सकता, जिस स्थिति में इसे सामान्य रूप प्राप्त होता है। यह शीर्ष सामान्य रूप गणना के परिणाम को दर्शाता है या त्रुटि उत्पन्न करता है, जिसका अर्थ है कि जिस पद से इसकी प्रारंभिक हुई है वह सही नहीं है। चूँकि, यह संक्रमणों के अनंत अनुक्रम में प्रवेश कर सकता है, जिसका अर्थ है कि यह जिस पद को कम करने का प्रयास करता है उसका कोई सामान्य रूप नहीं है और यह गैर-समाप्ति गणना से मेल खाता है। | ||
प्रमाणित हो चुका है कि क्रिवाइन मशीन लैम्बडा-कैलकुलस में कॉल बाय नेम हेड साधारण फ़ॉर्म श्रिंकलन का सही अनुपालन करती है। इसके अतिरिक्त, क्रिवाइन मशीन निर्णायक है, क्योंकि प्रत्येक स्थिति के पैटर्न का अधिकांश एक मशीन ट्रांजिशन के साथ संबंधित होता है। | |||
=== | === स्थिति === | ||
स्थिति के तीन होते हैं<ref name="Curien" />: | |||
:# | :# शब्द, | ||
:# | :# स्टैक | ||
:#वातावरण | |||
शब्द डी ब्रुयन सूचकांकों के साथ लैम्बडा-शब्द होता है। स्टैक और वातावरण एक ही पुनरावृत्तिशील डेटा संरचना में होते हैं। अधिक सटीक रूप से, पर्यावरण और स्टैक को ''<अवधि, पर्यावरण>'' के जोड़ों की सूची के रूप में प्रस्तुत किया जाता है, जिन्हें ''क्लोज़र'' कहा जाता है। निम्नलिखित में, किसी तत्व a की सूची ℓ ( स्टैक या पर्यावरण) के प्रमुख के रूप में प्रविष्टि a'':ℓ'' लिखी जाती है, चूँकि खाली सूची □ लिखी जाती है। स्टैक वह स्थान है जहां मशीन क्लोजर को संग्रहीत करती है जिसका मूल्यांकन किया जाना चाहिए, चूँकि पर्यावरण मूल्यांकन के समय निश्चित समय पर सूचकांक और क्लोजर के बीच संबंध है। पर्यावरण का पहला तत्व अनुक्रमणिका ''0'' से जुड़ा क्लोजर है, दूसरा तत्व अनुक्रमणिका ''1'' आदि से जुड़े क्लोजर से मेल खाता है। यदि मशीन को किसी अनुक्रमणिका का मूल्यांकन करना है, तो वह वहां जोड़ी लाती है। ''<अवधि, पर्यावरण>'' वह समापन जो मूल्यांकन किए जाने वाले पद को उत्पन्न करता है और वह वातावरण जिसमें इस पद का मूल्यांकन किया जाना चाहिए।{{efn|Using the concept of closure, one may replace the triple ''<term,stack, environment>'', which defines the state, by a couple ''<closure,stack>'', but this change is cosmetic.}} यह सरल स्पष्टीकरण मशीन के संचालन नियमों को समझने की अनुमति देता है। यदि कोई पद के लिए t, स्टैक के लिए p लिखता है,{{efn|p is for ''pile'', the French word for stack, which we do not want to mix up with ''s'', for state.}} और पर्यावरण के लिए e, इन तीन संस्थाओं से जुड़े स्थितियों को t, p, e लिखा जाएगा जाता है। नियम बताते हैं कि कैसे मशीन स्थितिों के बीच नमूना की पहचान करने के बाद स्थिति को दूसरे स्थिति में बदल देती है। | |||
प्रारंभिक | प्रारंभिक स्थिति एक शब्द t को मूल्यांकित करने का उद्देश्य रखती है, यह ''t'',□,□, की स्थिति है, जिसमें शब्द t है और स्टैक और वातावरण खाली हैं। अंतिम स्थिति (त्रुटि की अनुपस्थिति में) एक लैम्बडा''λ t'', □, e की आकृति होती है, अन्य शब्दों में, परिणामी शब्द एक विचारशक्ति के साथ होती है जिसका वातावरण होता है और एक खाली स्टैक होती है। | ||
=== परिवर्तन === | === परिवर्तन === | ||
क्रिवाइन मशीन<ref name="Curien" /> में चार स्थानांतरण होते हैं: ''ऐप'', ''एब्स'', ''शून्य'', ''सुक्क'' । | |||
{| class="wikitable center" style = "width:50%" | {| class="wikitable center" style = "width:50%" | ||
|+ | |+ क्रिवाइन मशीन के स्थानांतरण | ||
|- | |- | ||
! scope=col | | ! scope=col |नाम | ||
! scope=col | | ! scope=col |पहले | ||
! scope=col | | ! scope=col |बाद में | ||
|- | |- | ||
| width="20%" | | | width="20%" |''ऐप'' | ||
| width="40%" | | | width="40%" | | ||
''t u'', p, e | ''t u'', p, e | ||
Line 74: | Line 73: | ||
''t'', <''u'',e>:p, e | ''t'', <''u'',e>:p, e | ||
|- | |- | ||
| | |''एब्स'' | ||
| | | | ||
''λ t'', <''u'',e'>:p, e | ''λ t'', <''u'',e'>:p, e | ||
Line 81: | Line 79: | ||
''t'', p, <''u'',e'>:e | ''t'', p, <''u'',e'>:e | ||
|- | |- | ||
| | |''शून्य'' | ||
| | | | ||
''0'', p, <''t'', e'>:e | ''0'', p, <''t'', e'>:e | ||
Line 88: | Line 85: | ||
''t'', p, e' | ''t'', p, e' | ||
|- | |- | ||
| | |''सक्स'' | ||
| | | | ||
''n+1'', p, <''t'',e'>:e | ''n+1'', p, <''t'',e'>:e | ||
Line 95: | Line 91: | ||
n, p, e | n, p, e | ||
|} | |} | ||
संक्रमण ''ऐप'' किसी आवेदन के पैरामीटर को हटा देता है और इसे आगे के मूल्यांकन के लिए स्टैक पर रख देता है। परिवर्तन ''एबीएस'' पद के λ को हटा देता है और स्टैक के शीर्ष से क्लोजर को पॉप अप करता है और इसे पर्यावरण के शीर्ष पर रख देता है। यह समापन नए परिवेश में डी ब्रुइज़न सूचकांक ''0'' से मेल खाता है। संक्रमण ''शून्य'' पर्यावरण का पहला समापन लेता है। इस समापन की अवधि वर्तमान अवधि बन जाती है और इस समापन का वातावरण वर्तमान परिवेश बन जाता है। संक्रमण सुक्क पर्यावरण सूची के पहले समापन को हटा देता है और सूचकांक के मूल्य को कम कर देता है। | |||
=== दो उदाहरण === | === दो उदाहरण === | ||
हम (λ 0 0) (λ 0) पद का मूल्यांकन करें जो पद (λ x. x x) (λ x. x) के साथ होता है। नीचे दिए गए स्थिति से प्रारंभ करेंगे: | |||
(''λ'' 0 0) (''λ'' 0), □, □. | |||
{|class="wikitable center" style= "width:30%" | {|class="wikitable center" style= "width:30%" | ||
|+ | |+ पद का मूल्यांकन ''(λ 0 0) (λ 0)'' | ||
|- | |- | ||
| | | | ||
Line 128: | Line 126: | ||
|- | |- | ||
|} | |} | ||
निष्कर्ष यह है कि पद (λ 0 0) (λ 0) का शीर्ष सामान्य रूप λ 0 है। यह चर के साथ अनुवाद करता है: पद | निष्कर्ष यह है कि पद (λ 0 0) (λ 0) का शीर्ष सामान्य रूप λ 0 है। यह चर के साथ अनुवाद करता है: पद (λ x. x x) (λ x. x) का शीर्ष सामान्य रूप ''λ'' ''x''. ''x''. है। | ||
अब हम पद ((λ 0) (λ 0)) (λ 0) का मूल्यांकन करें जैसा कि नीचे दिखाया गया है: | |||
{|class="wikitable center" style="width:35%" | {|class="wikitable center" style="width:35%" | ||
|+ | |+ ((λ 0) (λ 0)) (λ 0) का मूल्यांकन | ||
|- | |- | ||
| ((''λ'' 0) (''λ'' 0)) (''λ'' 0), □, □ | | ((''λ'' 0) (''λ'' 0)) (''λ'' 0), □, □ | ||
Line 143: | Line 141: | ||
| 0, [<(''λ'' 0), □>], [<(''λ'' 0), □>] | | 0, [<(''λ'' 0), □>], [<(''λ'' 0), □>] | ||
|- | |- | ||
| ''λ'' 0, [<(''λ'' 0), □>], | | ''λ'' 0, [<(''λ'' 0), □>], □ | ||
|- | |- | ||
| 0, □, [<(''λ'' 0), □>] | | 0, □, [<(''λ'' 0), □>] | ||
Line 153: | Line 151: | ||
== अंतर-व्युत्पत्तियाँ == | == अंतर-व्युत्पत्तियाँ == | ||
क्रिवाइन मशीन, CEK मशीन की | क्रिवाइन मशीन, CEK मशीन की प्रकार, न केवल कार्यात्मक रूप से [[मेटा-सर्कुलर मूल्यांकनकर्ता]] के अनुरूप है,यह वाक्य विन्यास की दृष्टि से भी मेल खाता है <math>\lambda\widehat{\rho}</math> गणना - पियरे-लुई क्यूरियन का संस्करण <math>\lambda\widehat{\rho}</math> [[स्पष्ट प्रतिस्थापन]] की गणना जो कमी के अनुसार बंद होती है - सामान्य-क्रम कटौती रणनीति के साथ होता है। | ||
< | |||
{ | यदि <math>\lambda\widehat{\rho}</math> गणना में सामान्यीकृत सम्मलित है <math>\beta</math> कमी ( बरकरार, नेस्टेड <math>\beta</math> रेडेक्स <math>(\lambda x_1.\lambda x_2.e_0)\;e_1\;e_2</math> दो के अतिरिक्त चरण में अनुबंधित किया जाता है), तो वाक्यात्मक रूप से संबंधित मशीन जीन-लुई क्रिविन की मूल मशीन के साथ मेल खाती है।<ref name="Krivine 07"> | ||
} | |||
</ | |||
<ref name=" | |||
{{cite journal | {{cite journal | ||
|last1= | |last1=Krivine | ||
|first1= | |first1=Jean-Louis | ||
|date=2007 | |date=2007 | ||
|title= | |title=A call-by-name lambda-calculus machine | ||
|journal=Higher-Order and Symbolic Computation | |journal=Higher-Order and Symbolic Computation | ||
|volume=20 | |volume=20 | ||
|issue=3 | |issue=3 | ||
|pages= | |pages=199–207 | ||
|doi=10.1007/s10990-007- | |doi=10.1007/s10990-007-9018-9|s2cid=18158499 | ||
}} | }} | ||
</ref> | </ref><ref name="1biernacka danvy brics-07"> | ||
<ref name="1biernacka danvy brics-07"> | |||
{{cite journal | {{cite journal | ||
|last1=Biernacka | |last1=Biernacka | ||
Line 229: | Line 180: | ||
|pages=1–30 | |pages=1–30 | ||
|doi=10.7146/brics.v13i3.21909}} | |doi=10.7146/brics.v13i3.21909}} | ||
</ref | </ref>(इसके अतिरिक्त, यदि कटौती की रणनीति मूल्य के आधार पर दाएं से बाएं कॉल है और इसमें सामान्यीकृत सम्मलित है <math>\beta</math> कमी, तो वाक्यात्मक रूप से संगत मशीन [[जेवियर लेरॉय]] की ज़िन्क अमूर्त मशीन है, जो [[OCaml|ओसीमल]] का आधार में है। | ||
== यह भी देखें == | == यह भी देखें == | ||
Line 274: | Line 187: | ||
* एसईसीडी मशीन | * एसईसीडी मशीन | ||
* [[प्रोग्रामिंग भाषाओं का शब्दार्थ]] | * [[प्रोग्रामिंग भाषाओं का शब्दार्थ]] | ||
== यह भी देखें == | |||
* स्पष्ट प्रतिस्थापन | |||
* परिचालन शब्दार्थ | |||
* | |||
==टिप्पणियाँ== | ==टिप्पणियाँ== | ||
{{notelist}} | {{notelist}} | ||
== संदर्भ == | == संदर्भ == | ||
Line 283: | Line 200: | ||
Content in this edit is translated from the existing French Wikipedia article at [[:fr:Machine de Krivine]]; see its history for attribution. | Content in this edit is translated from the existing French Wikipedia article at [[:fr:Machine de Krivine]]; see its history for attribution. | ||
==ग्रन्थसूची== | ==ग्रन्थसूची== | ||
Line 295: | Line 211: | ||
*Frédéric Lang: ''Explaining the lazy Krivine machine using explicit substitution and addresses''. Higher-Order and Symbolic Computation 20(3): 257-270 (2007) [https://hal.inria.fr/inria-00198756 archive]. | *Frédéric Lang: ''Explaining the lazy Krivine machine using explicit substitution and addresses''. Higher-Order and Symbolic Computation 20(3): 257-270 (2007) [https://hal.inria.fr/inria-00198756 archive]. | ||
*[[Olivier Danvy]] (Ed.): Editorial of special issue of ''Higher-Order and Symbolic Computation'' on the Krivine machine, vol. 20(3) (2007) | *[[Olivier Danvy]] (Ed.): Editorial of special issue of ''Higher-Order and Symbolic Computation'' on the Krivine machine, vol. 20(3) (2007) | ||
==बाहरी संबंध== | ==बाहरी संबंध== | ||
*{{Commonscatinline}} | *{{Commonscatinline}} | ||
[[Category:Created On 08/07/2023]] | [[Category:Created On 08/07/2023]] | ||
[[Category:Machine Translated Page]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:कम्प्यूटेबिलिटी सिद्धांत]] | |||
[[Category:गणना के मॉडल]] | |||
[[Category:प्रोग्रामिंग भाषा कार्यान्वयन]] | |||
[[Category:लैम्ब्डा कैलकुलस]] | |||
[[Category:शैक्षिक सार मशीनें]] | |||
[[Category:संचालनात्मक शब्दार्थ]] | |||
[[Category:सार मशीनें]] | |||
[[Category:सैद्धांतिक कंप्यूटर विज्ञान]] |
Latest revision as of 11:07, 2 August 2023
सैद्धांतिक कंप्यूटर विज्ञान में, क्रिवाइन मशीन अमूर्त मशीन है (कभी-कभी इसे आभासी मशीन भी कहा जाता है)। अमूर्त मशीन के रूप में, यह ट्यूरिंग मशीन और एसईसीडी मशीन के साथ सुविधाएँ साझा करती है। क्रिवाइन मशीन ऐसी प्रतिष्ठानिक मशीन है जो रिकर्सिव फ़ंक्शन को कैसे कंप्यूट करती है को परिभाषित करने का प्रयास करती है। अधिक विशेष रूप से इसका उद्देश्य नाम से बुलाओ कमी का उपयोग करके लैम्ब्डा गणना के सामान्य रूप में कमी को सख्ती से परिभाषित करना है। इसकी औपचारिकता के कारण, यह विवरण में बताता है कि प्रकार की कमी कैसे काम करती है और कार्यात्मक प्रोग्रामिंगभाषाओं के परिचालन शब्दार्थ की सैद्धांतिक नींव निर्धारित करती है। दूसरी ओर, क्रिवाइन मशीन कॉल-बाय-नाम को लागू करती है इसमें β- कम करने योग्य अभिव्यक्ति को उसके पैरामीटर पर लागू करने से पहले उसे निर्धारित किया जाता है। अन्य शब्दों में, अभिव्यक्ति (λ x. t) u में यह पहले λ x को निर्धारित किया जाता है और फिर उसे u पर लागू किया जाता है। फ़ंक्शनल प्रोग्रामिंग में, यह यह तात्पर्य होता है कि पैरामीटर पर लागू किए गए फ़ंक्शन को मूल्यांकित करने के लिए, इसे पहले फ़ंक्शन को मूल्यांकित किया जाता है।
क्रिवाइन मशीन को फ्रांसीसी तार्किक विद्वान जीन-लुई क्रिवाइन ने 1980 के दशक की प्रारंभिक में डिज़ाइन किया था।
नाम और सिर से बुलाएं सामान्य रूप में कमी
क्रिवाइन मशीन लैम्ब्डा गणना से संबंधित दो अवधारणाओं पर आधारित है, अर्थात् हेड रिडक्शन और नाम से कॉल पर आधारित है|
सिर सामान्य रूप में कमी
रेडेक्स[1] (बीटा-रेडेक्स भी कहा जाता है) लैम्बडा गणना का पद होता है जिसकी रूप में (λ x. t) u होता है। यदि पद की आकृति (λ x. t) u1 ... un होती है, तो उसे हेड रेडेक्स कहा जाता है। बीटा सामान्य रूप लैम्ब्डा गणना का पद है जो हेड रिडेक्स नहीं है।[lower-alpha 1] हेड रीडक्शन पद के (गैर खाली) क्रमबद्ध श्रिंखला होती है जो पद के हेड रेडेक्स को श्रिंकलेट करती है। पद t की हेड रीडक्शन (जिसे हेड साधारण फ़ॉर्म में नहीं होने का समझा जाता है) हेड रीडक्शन है जो पद t से प्रारंभ होती है और हेड साधारण फ़ॉर्म पर समाप्त होती है। अभिकल्पिक दृष्टिकोण से, हेड रीडक्शन प्रोग्राम की प्रक्रिया है जब वह पुनरावृत्तिशील उप-प्रोग्राम का मूल्यांकन करता है। इस प्रकार की श्रिंकलन को कैसे कार्यान्वित किया जा सकता है, इसे समझना महत्वपूर्ण है। क्रिवाइन मशीन का उद्देश्य हेड साधारण फ़ॉर्म में पद को श्रिंकलने की प्रक्रिया प्रस्तावित करना है और इस प्रक्रिया को समय-समय पर वर्णित करना है। जैसे एलन ट्यूरिंग ने अवकाशी मशीन का उपयोग करके सामान्यता की नीति को समय-समय पर वर्णित किया, क्रिवाइन ने अवकाशी मशीन का उपयोग करके हेड साधारण फ़ॉर्म श्रिंकलन की नीति को समय-समय पर वर्णित किया जाता है।
उदाहरण
पद ((λ 0) (λ 0)) (λ 0) (जो स्पष्ट प्रत्यक्ष चर का उपयोग करता है, इसके लिए पद (λx.x) (λy.y) (λz.z) होता है) हेड साधारण फ़ॉर्म में नहीं है क्योंकि (λ 0) (λ 0) को श्रिंकलित करके (λ 0) का उत्पादन होता है, जिससे हेड रेडेक्स (λ 0) (λ 0) होता है जो (λ 0) में श्रिंकलित होता है और जो इसलिए ((λ 0) (λ 0)) (λ 0) का हेड साधारण फ़ॉर्म होता है। अन्य शब्दों में, हेड साधारण फ़ॉर्म का श्रिंकलन है:
- ((λ 0) (λ 0)) (λ 0) ➝ (λ 0) (λ 0) ➝ λ 0,
जो इसके लिए है:
- (λx.x) (λy.y) (λz.z) ➝ (λy.y) (λz.z) ➝ λz.z.
आगे चलकर हम देखेंगे कि क्रिवाइन मशीन कैसे अवधि ((λ 0) (λ 0)) (λ 0) को संक्षेपित करती है।
नाम से पुकारें
अवधि u v की हेड रेडक्शन को कार्यान्वित करने के लिए, जो आवेदन है, किन्तु जो रेडेक्स नहीं है, हमें पहले अवधि u को संक्षेपित करके अव्यवहार्यता दिखाने के लिए u को संक्षेपित करना होगा, और इस प्रकार v के साथ रेडेक्स बनाना होगा। जब रेडेक्स प्रकट होता है, तो हम उसे संक्षेपित करते हैं। आवेदन के शरीर को सदैव पहले संक्षेपित करना, नाम से कॉल लागू करती है। क्रिवाइन मशीन नाम से कॉल लागू को कार्यान्वित करती है।
विवरण
यहां दी गई क्रिवाइन मशीन की प्रस्तुति लैम्ब्डा शब्दों के नोटेशन पर आधारित है जो डी ब्रूजन सूचकांकों का उपयोग करती है और मानती है कि जिन शर्तों से यह सिर के सामान्य रूपों की गणना करती है वे लैम्ब्डा गणना परिभाषा मुक्त और बाध्य चर हैं।[2] यह वर्तमान स्थिति को तब तक संशोधित करता है जब तक कि वह ऐसा नहीं कर सकता, जिस स्थिति में इसे सामान्य रूप प्राप्त होता है। यह शीर्ष सामान्य रूप गणना के परिणाम को दर्शाता है या त्रुटि उत्पन्न करता है, जिसका अर्थ है कि जिस पद से इसकी प्रारंभिक हुई है वह सही नहीं है। चूँकि, यह संक्रमणों के अनंत अनुक्रम में प्रवेश कर सकता है, जिसका अर्थ है कि यह जिस पद को कम करने का प्रयास करता है उसका कोई सामान्य रूप नहीं है और यह गैर-समाप्ति गणना से मेल खाता है।
प्रमाणित हो चुका है कि क्रिवाइन मशीन लैम्बडा-कैलकुलस में कॉल बाय नेम हेड साधारण फ़ॉर्म श्रिंकलन का सही अनुपालन करती है। इसके अतिरिक्त, क्रिवाइन मशीन निर्णायक है, क्योंकि प्रत्येक स्थिति के पैटर्न का अधिकांश एक मशीन ट्रांजिशन के साथ संबंधित होता है।
स्थिति
स्थिति के तीन होते हैं[2]:
- शब्द,
- स्टैक
- वातावरण
शब्द डी ब्रुयन सूचकांकों के साथ लैम्बडा-शब्द होता है। स्टैक और वातावरण एक ही पुनरावृत्तिशील डेटा संरचना में होते हैं। अधिक सटीक रूप से, पर्यावरण और स्टैक को <अवधि, पर्यावरण> के जोड़ों की सूची के रूप में प्रस्तुत किया जाता है, जिन्हें क्लोज़र कहा जाता है। निम्नलिखित में, किसी तत्व a की सूची ℓ ( स्टैक या पर्यावरण) के प्रमुख के रूप में प्रविष्टि a:ℓ लिखी जाती है, चूँकि खाली सूची □ लिखी जाती है। स्टैक वह स्थान है जहां मशीन क्लोजर को संग्रहीत करती है जिसका मूल्यांकन किया जाना चाहिए, चूँकि पर्यावरण मूल्यांकन के समय निश्चित समय पर सूचकांक और क्लोजर के बीच संबंध है। पर्यावरण का पहला तत्व अनुक्रमणिका 0 से जुड़ा क्लोजर है, दूसरा तत्व अनुक्रमणिका 1 आदि से जुड़े क्लोजर से मेल खाता है। यदि मशीन को किसी अनुक्रमणिका का मूल्यांकन करना है, तो वह वहां जोड़ी लाती है। <अवधि, पर्यावरण> वह समापन जो मूल्यांकन किए जाने वाले पद को उत्पन्न करता है और वह वातावरण जिसमें इस पद का मूल्यांकन किया जाना चाहिए।[lower-alpha 2] यह सरल स्पष्टीकरण मशीन के संचालन नियमों को समझने की अनुमति देता है। यदि कोई पद के लिए t, स्टैक के लिए p लिखता है,[lower-alpha 3] और पर्यावरण के लिए e, इन तीन संस्थाओं से जुड़े स्थितियों को t, p, e लिखा जाएगा जाता है। नियम बताते हैं कि कैसे मशीन स्थितिों के बीच नमूना की पहचान करने के बाद स्थिति को दूसरे स्थिति में बदल देती है।
प्रारंभिक स्थिति एक शब्द t को मूल्यांकित करने का उद्देश्य रखती है, यह t,□,□, की स्थिति है, जिसमें शब्द t है और स्टैक और वातावरण खाली हैं। अंतिम स्थिति (त्रुटि की अनुपस्थिति में) एक लैम्बडाλ t, □, e की आकृति होती है, अन्य शब्दों में, परिणामी शब्द एक विचारशक्ति के साथ होती है जिसका वातावरण होता है और एक खाली स्टैक होती है।
परिवर्तन
क्रिवाइन मशीन[2] में चार स्थानांतरण होते हैं: ऐप, एब्स, शून्य, सुक्क ।
नाम | पहले | बाद में |
---|---|---|
ऐप |
t u, p, e |
t, <u,e>:p, e |
एब्स |
λ t, <u,e'>:p, e |
t, p, <u,e'>:e |
शून्य |
0, p, <t, e'>:e |
t, p, e' |
सक्स |
n+1, p, <t,e'>:e |
n, p, e |
संक्रमण ऐप किसी आवेदन के पैरामीटर को हटा देता है और इसे आगे के मूल्यांकन के लिए स्टैक पर रख देता है। परिवर्तन एबीएस पद के λ को हटा देता है और स्टैक के शीर्ष से क्लोजर को पॉप अप करता है और इसे पर्यावरण के शीर्ष पर रख देता है। यह समापन नए परिवेश में डी ब्रुइज़न सूचकांक 0 से मेल खाता है। संक्रमण शून्य पर्यावरण का पहला समापन लेता है। इस समापन की अवधि वर्तमान अवधि बन जाती है और इस समापन का वातावरण वर्तमान परिवेश बन जाता है। संक्रमण सुक्क पर्यावरण सूची के पहले समापन को हटा देता है और सूचकांक के मूल्य को कम कर देता है।
दो उदाहरण
हम (λ 0 0) (λ 0) पद का मूल्यांकन करें जो पद (λ x. x x) (λ x. x) के साथ होता है। नीचे दिए गए स्थिति से प्रारंभ करेंगे:
(λ 0 0) (λ 0), □, □.
(λ 0 0) (λ 0), □, □ |
λ 0 0, [<λ 0, □>], □ |
0 0, □, [<λ 0, □>] |
0, [<0, <λ 0, □>>], [<λ 0, □>] |
λ 0, [<0, <λ 0, □>>], □ |
0, □, [<0, <λ 0, □>>] |
0, □, [<λ 0, □>] |
λ 0, □, □ |
निष्कर्ष यह है कि पद (λ 0 0) (λ 0) का शीर्ष सामान्य रूप λ 0 है। यह चर के साथ अनुवाद करता है: पद (λ x. x x) (λ x. x) का शीर्ष सामान्य रूप λ x. x. है।
अब हम पद ((λ 0) (λ 0)) (λ 0) का मूल्यांकन करें जैसा कि नीचे दिखाया गया है:
((λ 0) (λ 0)) (λ 0), □, □ |
(λ 0) (λ 0), [<(λ 0), □>], □ |
(λ 0), [<(λ 0), □>,<(λ 0), □>], □ |
0, [<(λ 0), □>], [<(λ 0), □>] |
λ 0, [<(λ 0), □>], □ |
0, □, [<(λ 0), □>] |
(λ 0), □, □ |
यह उपरोक्त तथ्य की पुष्टि करता है कि पद ((λ 0) (λ 0)) (λ 0) का सामान्य रूप (λ 0) है।
अंतर-व्युत्पत्तियाँ
क्रिवाइन मशीन, CEK मशीन की प्रकार, न केवल कार्यात्मक रूप से मेटा-सर्कुलर मूल्यांकनकर्ता के अनुरूप है,यह वाक्य विन्यास की दृष्टि से भी मेल खाता है गणना - पियरे-लुई क्यूरियन का संस्करण स्पष्ट प्रतिस्थापन की गणना जो कमी के अनुसार बंद होती है - सामान्य-क्रम कटौती रणनीति के साथ होता है।
यदि गणना में सामान्यीकृत सम्मलित है कमी ( बरकरार, नेस्टेड रेडेक्स दो के अतिरिक्त चरण में अनुबंधित किया जाता है), तो वाक्यात्मक रूप से संबंधित मशीन जीन-लुई क्रिविन की मूल मशीन के साथ मेल खाती है।[3][4](इसके अतिरिक्त, यदि कटौती की रणनीति मूल्य के आधार पर दाएं से बाएं कॉल है और इसमें सामान्यीकृत सम्मलित है कमी, तो वाक्यात्मक रूप से संगत मशीन जेवियर लेरॉय की ज़िन्क अमूर्त मशीन है, जो ओसीमल का आधार में है।
यह भी देखें
- स्पष्ट प्रतिस्थापन
- परिचालन शब्दार्थ
- एसईसीडी मशीन
- प्रोग्रामिंग भाषाओं का शब्दार्थ
यह भी देखें
- स्पष्ट प्रतिस्थापन
- परिचालन शब्दार्थ
टिप्पणियाँ
- ↑ If one only deals with closed terms, these terms take the form λ x. t.
- ↑ Using the concept of closure, one may replace the triple <term,stack, environment>, which defines the state, by a couple <closure,stack>, but this change is cosmetic.
- ↑ p is for pile, the French word for stack, which we do not want to mix up with s, for state.
संदर्भ
- ↑ Barendregt, Hendrik Pieter (1984), The Lambda Calculus: Its Syntax and Semantics, Studies in Logic and the Foundations of Mathematics, vol. 103 (Revised ed.), North Holland, Amsterdam, ISBN 0-444-87508-5, archived from the original on 2004-08-23 Corrections.
- ↑ 2.0 2.1 2.2 Curien, Pierre-Louis (1993). Categorical Combinators, Sequential Algorithms and Functional (2nd ed.). Birkhaüser.
- ↑ Krivine, Jean-Louis (2007). "A call-by-name lambda-calculus machine". Higher-Order and Symbolic Computation. 20 (3): 199–207. doi:10.1007/s10990-007-9018-9. S2CID 18158499.
- ↑ Biernacka, Małgorzata; Danvy, Olivier (2007). Article #6. "A Concrete Framework for Environment Machines". ACM Transactions on Computational Logic. 9 (1): 1–30. doi:10.7146/brics.v13i3.21909.
Content in this edit is translated from the existing French Wikipedia article at fr:Machine de Krivine; see its history for attribution.
ग्रन्थसूची
- Jean-Louis Krivine: A call-by-name lambda-calculus machine. Higher-Order and Symbolic Computation 20(3): 199-207 (2007) archive.
- Curien, Pierre-Louis (1993). Categorical Combinators, Sequential Algorithms and Functional (2nd ed.). Birkhaüser.
- Frédéric Lang: Explaining the lazy Krivine machine using explicit substitution and addresses. Higher-Order and Symbolic Computation 20(3): 257-270 (2007) archive.
- Olivier Danvy (Ed.): Editorial of special issue of Higher-Order and Symbolic Computation on the Krivine machine, vol. 20(3) (2007)
बाहरी संबंध
- Media related to क्रिवाइन मशीन at Wikimedia Commons