क्रिवाइन मशीन

सैद्धांतिक कंप्यूटर विज्ञान में, क्रिवाइन मशीन एक अमूर्त मशीन है (कभी-कभी इसे  आभासी मशीन  भी कहा जाता है)। एक अमूर्त मशीन के रूप में, यह ट्यूरिंग मशीनों और एसईसीडी मशीन के साथ सुविधाएँ साझा करती है। क्रिवाइन मशीन बताती है कि पुनरावर्ती फ़ंक्शन की गणना कैसे करें। अधिक विशेष रूप से इसका उद्देश्य नाम से बुलाओ रिडक्शन का उपयोग करके लैम्ब्डा कैलकुलस के सामान्य रूप में कमी को सख्ती से परिभाषित करना है। इसकी औपचारिकता के लिए धन्यवाद, यह विवरण में बताता है कि एक प्रकार की कमी कैसे काम करती है और [[कार्यात्मक प्रोग्रामिंग भाषा]]ओं के परिचालन शब्दार्थ की सैद्धांतिक नींव निर्धारित करती है। दूसरी ओर, क्रिवाइन मशीन कॉल-बाय-नाम लागू करती है क्योंकि यह फ़ंक्शन बॉडी को उसके पैरामीटर पर लागू करने से पहले β- कम करने योग्य अभिव्यक्ति के बॉडी का मूल्यांकन करती है। दूसरे शब्दों में, एक अभिव्यक्ति (λ x. t) u में यह पहले λ x का मूल्यांकन करता है। इसे यू पर लागू करने से पहले टी। कार्यात्मक प्रोग्रामिंग में, इसका मतलब यह होगा कि किसी पैरामीटर पर लागू फ़ंक्शन का मूल्यांकन करने के लिए, यह पैरामीटर पर लागू करने से पहले फ़ंक्शन का मूल्यांकन करता है।

क्रिवाइन मशीन को 1980 के दशक की शुरुआत में फ्रांसीसी तर्कशास्त्री :fr:जीन-लुई क्रिवाइन|जीन-लुई क्रिवाइन द्वारा डिजाइन किया गया था।

नाम और सिर से बुलाएं सामान्य रूप में कमी
क्रिवाइन मशीन लैम्ब्डा कैलकुलस से संबंधित दो अवधारणाओं पर आधारित है, अर्थात् हेड रिडक्शन और नाम से कॉल।

सिर सामान्य रूप में कमी
एक लैम्ब्डा कैलकुलस#कमी (एक यह भी कहता है कि β-redex) फॉर्म (λ x. t) u के लैम्ब्डा कैलकुलस का एक शब्द है। यदि किसी पद का आकार (λ x. t) u है1 ... मेंn इसे हेड रिडेक्स कहा जाता है। बीटा सामान्य रूप लैम्ब्डा कैलकुलस का एक शब्द है जो हेड रिडेक्स नहीं है। हेड रिडक्शन एक शब्द के संकुचन का एक (गैर-खाली) अनुक्रम है जो हेड रिडेक्स को अनुबंधित करता है। किसी टर्म टी का हेड रिडक्शन (जिसे हेड नॉर्मल फॉर्म में नहीं माना जाता है) एक हेड रिडक्शन है जो टर्म टी से शुरू होता है और हेड नॉर्मल फॉर्म पर खत्म होता है। एक अमूर्त दृष्टिकोण से, हेड रिडक्शन वह तरीका है जिससे एक प्रोग्राम गणना करता है जब वह एक पुनरावर्ती उप-प्रोग्राम का मूल्यांकन करता है। यह समझना महत्वपूर्ण है कि ऐसी कटौती कैसे लागू की जा सकती है। क्रिवाइन मशीन का एक उद्देश्य किसी शब्द को सामान्य रूप में कम करने और इस प्रक्रिया का औपचारिक रूप से वर्णन करने के लिए एक प्रक्रिया का प्रस्ताव करना है। जैसे एलन ट्यूरिंग ने एल्गोरिदम की धारणा का औपचारिक रूप से वर्णन करने के लिए एक अमूर्त मशीन का उपयोग किया, :fr: जीन-लुई क्रिविन ने सिर के सामान्य रूप में कमी की धारणा का औपचारिक रूप से वर्णन करने के लिए एक अमूर्त मशीन का उपयोग किया।

एक उदाहरण
शब्द ((λ 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 के हेड रिडक्शन को लागू करने के लिए जो एक एप्लिकेशन है, लेकिन जो एक रिडेक्स नहीं है, किसी को एक अमूर्तता प्रदर्शित करने के लिए बॉडी यू को कम करना होगा और इसलिए वी के साथ एक रिडेक्स बनाना होगा। जब एक रिडेक्स प्रकट होता है, तो कोई इसे कम कर देता है। किसी एप्लिकेशन की बॉडी को हमेशा कम करने के लिए सबसे पहले कॉल-बाय-नेम कहा जाता है। क्रिवाइन मशीन नाम से कॉल लागू करती है।

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

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

राज्य
राज्य के तीन घटक हैं :# अवधी,
 * ढेर,
 * पर्यावरण।

यह शब्द डी ब्रुइज़न सूचकांकों वाला एक λ-शब्द है। स्टैक और पर्यावरण एक ही पुनरावर्ती डेटा संरचना से संबंधित हैं। अधिक सटीक रूप से, पर्यावरण और स्टैक  जोड़ियों की सूचियाँ हैं, जिन्हें क्लोज़र कहा जाता है। निम्नलिखित में, किसी तत्व ए की सूची ℓ (स्टैक या पर्यावरण) के प्रमुख के रूप में प्रविष्टि ए:ℓ लिखी जाती है, जबकि खाली सूची □ लिखी जाती है। स्टैक वह स्थान है जहां मशीन क्लोजर को संग्रहीत करती है जिसका मूल्यांकन किया जाना चाहिए, जबकि पर्यावरण मूल्यांकन के दौरान एक निश्चित समय पर सूचकांक और क्लोजर के बीच संबंध है। पर्यावरण का पहला तत्व इंडेक्स 0 से जुड़ा क्लोजर है, दूसरा तत्व इंडेक्स 1 आदि से जुड़े क्लोजर से मेल खाता है। यदि मशीन को किसी इंडेक्स का मूल्यांकन करना है, तो वह वहां जोड़ी लाती है। <अवधि, पर्यावरण> वह समापन जो मूल्यांकन किए जाने वाले शब्द को उत्पन्न करता है और वह वातावरण जिसमें इस शब्द का मूल्यांकन किया जाना चाहिए। यह सहज स्पष्टीकरण मशीन के संचालन नियमों को समझने की अनुमति देता है। यदि कोई पद के लिए t, स्टैक के लिए p लिखता है, और पर्यावरण के लिए ई, इन तीन संस्थाओं से जुड़े राज्यों को टी, पी, ई लिखा जाएगा। नियम बताते हैं कि कैसे मशीन राज्यों के बीच पैटर्न की पहचान करने के बाद एक राज्य को दूसरे राज्य में बदल देती है।

प्रारंभिक अवस्था का लक्ष्य किसी पद t का मूल्यांकन करना है, यह अवस्था t,□,□ है, जिसमें पद t है और स्टैक और वातावरण खाली हैं। अंतिम स्थिति (त्रुटि के अभाव में) λ t, □, e के रूप में होती है, दूसरे शब्दों में, परिणामी शब्द अपने पर्यावरण और एक खाली स्टैक के साथ एक अमूर्त है।

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

दो उदाहरण
आइए हम पद (λ 0 0) (λ 0) का मूल्यांकन करें जो पद (λ x. x x) (λ x. x) से संगत है। आइए राज्य (λ 0 0) (λ 0), □, □ से शुरू करें।

निष्कर्ष यह है कि पद (λ 0 0) (λ 0) का शीर्ष सामान्य रूप λ 0 है। यह चर के साथ अनुवाद करता है: पद का शीर्ष सामान्य रूप (λ x. x x) (λ x. x) है λ एक्स. एक्स।

आइए हम पद ((λ 0) (λ 0)) (λ 0) का मूल्यांकन करें जैसा कि नीचे दिखाया गया है:

यह उपरोक्त तथ्य की पुष्टि करता है कि पद ((λ 0) (λ 0)) (λ 0) का सामान्य रूप (λ 0) है।

अंतर-व्युत्पत्तियाँ
क्रिवाइन मशीन, CEK मशीन की तरह, न केवल कार्यात्मक रूप से मेटा-सर्कुलर मूल्यांकनकर्ता के अनुरूप है, यह वाक्यविन्यास की दृष्टि से भी मेल खाता है $$\lambda\widehat{\rho}$$ कैलकुलस - पियरे-लुई क्यूरियन का एक संस्करण $$\lambda\widehat{\rho}$$ स्पष्ट प्रतिस्थापन की गणना जो कमी के तहत बंद होती है - एक सामान्य-क्रम कटौती रणनीति के साथ। यदि $$\lambda\widehat{\rho}$$ कैलकुलस में सामान्यीकृत शामिल है $$\beta$$ कमी (यानी, नेस्टेड $$\beta$$ redex $$(\lambda x_1.\lambda x_2.e_0)\;e_1\;e_2$$ दो के बजाय एक चरण में अनुबंधित किया जाता है), तो वाक्यात्मक रूप से संबंधित मशीन जीन-लुई क्रिविन की मूल मशीन के साथ मेल खाती है। (इसके अलावा, यदि कटौती की रणनीति मूल्य के आधार पर दाएं से बाएं कॉल है और इसमें सामान्यीकृत शामिल है $$\beta$$ कमी, तो वाक्यात्मक रूप से संगत मशीन जेवियर लेरॉय की ZINC अमूर्त मशीन है, जो OCaml का आधार है।)

यह भी देखें

 * स्पष्ट प्रतिस्थापन
 * परिचालन शब्दार्थ
 * एसईसीडी मशीन
 * प्रोग्रामिंग भाषाओं का शब्दार्थ

संदर्भ
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.
 * 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)
 * Olivier Danvy (Ed.): Editorial of special issue of Higher-Order and Symbolic Computation on the Krivine machine, vol. 20(3) (2007)