डिडक्टिव लैम्ब्डा कैलकुलस: Difference between revisions

From Vigyanwiki
(Created page with "डिडक्टिव लैम्ब्डा कैलकुलस इस बात पर विचार करता है कि क्या होता है...")
 
No edit summary
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
डिडक्टिव [[लैम्ब्डा कैलकुलस]] इस बात पर विचार करता है कि क्या होता है जब लैम्ब्डा कैलकुलस#परिभाषा को गणितीय अभिव्यक्ति के रूप में माना जाता है। लैम्ब्डा कैलकुलस की एक व्याख्या एक प्रोग्रामिंग भाषा के रूप में है जहां मूल्यांकन एक अभिव्यक्ति पर कटौती करके आगे बढ़ता है जब तक कि यह सामान्य रूप में न हो। इस व्याख्या में, यदि अभिव्यक्ति कभी भी सामान्य रूप में कम नहीं होती है तो प्रोग्राम कभी समाप्त नहीं होता है, और मान अपरिभाषित होता है। गणितीय निगमन प्रणाली के रूप में माने जाने पर, प्रत्येक कमी से अभिव्यक्ति के मूल्य में कोई बदलाव नहीं आएगा। अभिव्यक्ति अभिव्यक्ति की कमी के बराबर होगी।
'''डिडक्टिव''' [[लैम्ब्डा कैलकुलस|'''लैम्ब्डा कैलकुलस''']], लैम्बडा अभिव्यक्तियों को गणितीय अभिव्यक्तियों के रूप में कैसे माना जाता है, उस पर विचार करता है। अनिर्धारित लैम्बडा कैलकुलस के व्याख्यान के रूप में प्रोग्रामिंग भाषा के रूप में मान्यांकन किया जा सकता है जहां मूल्यांकन साधारण रूप में अभिव्यक्ति को कम करने के द्वारा प्रगति करता है। इस व्याख्यान में, यदि अभिव्यक्ति कभी सामान्य रूप में कम नहीं होती है तो प्रोग्राम कभी समाप्त नहीं होता है, और मान्यता अव्यवस्थित होती है। गणितीय प्रमाणित तंत्र के रूप में विचार किया जाएंगा, प्रत्येक कम को अभिव्यक्ति के मान्यता को परिवर्तित नहीं करेगा। अभिव्यक्ति को अभिव्यक्ति के कम के समान हो जाता है।


== इतिहास ==
== इतिहास ==


[[अलोंजो चर्च]] ने 1930 के दशक में लैम्ब्डा कैलकुलस का आविष्कार किया, मूल रूप से गणित के लिए एक नया और सरल आधार प्रदान करने के लिए।<ref>{{cite journal |first=A. |last=Church |title=तर्क की नींव के लिए अभिधारणाओं का एक सेट|journal=Annals of Mathematics |series=Series 2 |volume=33 |issue=2 |pages=346–366  |year=1932 |doi=10.2307/1968337 |jstor=1968337}}</ref><ref>For a full history, see Cardone and Hindley's "[https://web.archive.org/web/20180623061336/https://pdfs.semanticscholar.org/959d/32cfa6df9299312ba51e2102045e1f25bc18.pdf History of Lambda-calculus and Combinatory Logic]" (2006).</ref> हालाँकि इसका आविष्कार करने के तुरंत बाद लैम्ब्डा एब्स्ट्रैक्शन की परिभाषा के साथ प्रमुख तर्क समस्याओं की पहचान की गई: क्लेन-रोसेर विरोधाभास लैम्ब्डा कैलकुलस में रिचर्ड के विरोधाभास का कार्यान्वयन है।<ref>{{Cite journal |first1=S. C. |last1=Kleene |name-list-style=amp |first2=J. B. |last2=Rosser |title=कुछ औपचारिक तर्कों की असंगति|journal=[[Annals of Mathematics]] |volume=36 |issue=3 |pages=630–636 |year=1935 |doi=10.2307/1968646 |jstor=1968646 }}</ref> [[हास्केल करी]] ने पाया कि इस विरोधाभास में मुख्य कदम का उपयोग सरल करी के विरोधाभास को लागू करने के लिए किया जा सकता है। इन विरोधाभासों के अस्तित्व का मतलब था कि लैम्ब्डा कैलकुलस एक निगमनात्मक प्रणाली के रूप में सुसंगत और पूर्ण दोनों नहीं हो सकता है।<ref>{{cite journal |title=कुछ औपचारिक तर्क की असंगति|first=Haskell B. |last=Curry |journal=The Journal of Symbolic Logic
[[अलोंजो चर्च]] ने 1930 के दशक में लैम्बडा कैलकुलस का आविष्कार किया, प्राथमिक रूप से गणित के लिए नया और सरल आधार प्रदान करने के लिए।<ref>{{cite journal |first=A. |last=Church |title=तर्क की नींव के लिए अभिधारणाओं का एक सेट|journal=Annals of Mathematics |series=Series 2 |volume=33 |issue=2 |pages=346–366  |year=1932 |doi=10.2307/1968337 |jstor=1968337}}</ref><ref>For a full history, see Cardone and Hindley's "[https://web.archive.org/web/20180623061336/https://pdfs.semanticscholar.org/959d/32cfa6df9299312ba51e2102045e1f25bc18.pdf History of Lambda-calculus and Combinatory Logic]" (2006).</ref> चूंकि , इसे आविष्कार करने के बाद ही लैम्बडा अभिव्यक्ति की परिभाषा के साथ महत्वपूर्ण तर्क समस्याएं पहचानी गईं: क्लीन-रॉसर पराधिकरण लैम्बडा कैलकुलस में रिचर्ड के पराधिकरण के अंतर्निहित कराने का प्रदर्शन है। <ref>{{Cite journal |first1=S. C. |last1=Kleene |name-list-style=amp |first2=J. B. |last2=Rosser |title=कुछ औपचारिक तर्कों की असंगति|journal=[[Annals of Mathematics]] |volume=36 |issue=3 |pages=630–636 |year=1935 |doi=10.2307/1968646 |jstor=1968646 }}</ref> [[हास्केल करी]] ने यह विवरण किया कि इस पराधिकरण में मूलभूत कदम को सरल करी के पराधिकरण के रूप में उपयोग किया जा सकता है। इन पराधिकरणों की उपस्थिति यह तात्पर्य था कि लैम्बडा कैलकुलस एकतापूर्ण और पूर्णतापूर्ण प्रमाणिक प्रणाली के रूप में नहीं हो सकता था।<ref>{{cite journal |title=कुछ औपचारिक तर्क की असंगति|first=Haskell B. |last=Curry |journal=The Journal of Symbolic Logic
|volume=7 |issue=3 |year=1942 |pages=115–117 |jstor=2269292 |doi=10.2307/2269292|s2cid=121991184 }}</ref>
|volume=7 |issue=3 |year=1942 |pages=115–117 |jstor=2269292 |doi=10.2307/2269292|s2cid=121991184 }}</ref>
हास्केल करी ने 1941 में इलेटिव (निगमनात्मक) संयोजन तर्क का अध्ययन किया।<ref>{{cite journal |last=Curry |first=Haskell B. |authorlink=Haskell Curry |title=क्लेन और रोसेर का विरोधाभास|journal=Transactions of the American Mathematical Society |year=1941 |volume=50 |issue=3 |pages=454–516 |doi=10.1090/S0002-9947-1941-0005275-6 |jstor=1990124 |mr=0005275 |url=https://www.ams.org/journals/tran/1941-050-03/S0002-9947-1941-0005275-6/ |accessdate=24 January 2013|doi-access=free }}</ref> संयुक्त तर्क लैम्ब्डा कैलकुलस से निकटता से संबंधित है, और प्रत्येक में समान विरोधाभास मौजूद हैं।


बाद में प्रोग्रामिंग भाषा की परिभाषा के रूप में लैम्ब्डा कैलकुलस को पुनर्जीवित किया गया।
हास्केल करी ने 1941 में अनुमानात्मक (प्रमाणिक) संक्रमणीय तर्कशास्त्र का अध्ययन किया। संक्रमणीय तर्कशास्त्र लैम्बडा कैलकुलस से गहरे रूप से संबंधित है, और इन्हीं में वही पराधिकरण उपस्थित हैं।
 
बाद में लैम्बडा कैलकुलस को प्रोग्रामिंग भाषा की परिभाषा के रूप में पुनर्जीवित किया गया था।


== परिचय ==
== परिचय ==


लैम्ब्डा कैलकुलस [[कार्यात्मक प्रोग्रामिंग]] भाषाओं के विकास के लिए मॉडल और प्रेरणा है। ये भाषाएँ लैम्ब्डा एब्स्ट्रैक्शन को लागू करती हैं, और इसे फ़ंक्शंस और प्रकारों के अनुप्रयोग के साथ संयोजन में उपयोग करती हैं।
लैम्ब्डा कैलकुलस [[कार्यात्मक प्रोग्रामिंग|फंक्शनल प्रोग्रामिंग]] भाषाओं के विकास के लिए मॉडल और प्रेरणा है। इन भाषाओं में लैम्बडा अभिव्यक्ति को प्रदर्शित किया जाता है और इसे फंक्शनों के अनुप्रयोग के साथ और प्रकार के साथ उपयोग किया जाता है।


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


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


== शब्दावली ==
== शब्दावली ==


इस चर्चा के लिए, लैम्ब्डा एब्स्ट्रैक्शन को गणित में एक अतिरिक्त ऑपरेटर के रूप में जोड़ा गया है। सामान्य डोमेन, जैसे [[बूलियन बीजगणित]] और [[वास्तविक संख्या]] उपलब्ध होंगे। इन डोमेन पर गणितीय समानता लागू की जाएगी। उद्देश्य यह देखना है कि इस परिभाषा से क्या समस्याएँ उत्पन्न होती हैं।
इस चर्चा के लिए, लैम्बडा अभिव्यक्ति को गणित में अतिरिक्त ऑपरेटर के रूप में जोड़ा जाता है। [[बूलियन बीजगणित]] और [[वास्तविक संख्या]] जैसे सामान्य डोमेन उपलब्ध रहेंगे। इन डोमेनों पर गणितीय समानता लागू होगी। इस परिभाषा से कौन सी समस्याएं उत्पन्न होती हैं, इसे देखना है।


फ़ंक्शन एप्लिकेशन को लैम्ब्डा कैलकुलस सिंटैक्स का उपयोग करके दर्शाया जाएगा। अतः गुणन को एक बिंदु द्वारा दर्शाया जाएगा। साथ ही, कुछ उदाहरणों के लिए, [[ चलो अभिव्यक्ति ]] का उपयोग किया जाएगा।
फ़ंक्शन लागू को लैम्बडा कैलकुलस वाक्यानुयायी संख्या का प्रयोग करके प्रतिष्ठित किया जाएगा। इसलिए गुणा को डॉट से प्रतिष्ठित किया जाएगा। इसके अतिरिक्त , कुछ उदाहरणों के लिए,[[ चलो अभिव्यक्ति ]]का उपयोग किया जाएगा।


निम्नलिखित तालिका सारांशित करती है;
निम्नलिखित तालिका संक्षेप करती है;


{| class="wikitable"
{| class="wikitable"
|-
|-
! Name !! Notation
!नाम
!नोटेशन
|-
|-
| Lambda abstraction. || <math>\lambda v.y</math>
|लैम्ब्डा अमूर्तन.
| <math>\lambda v.y</math>
|-
|-
| Application of the function ''f'' to ''x'' || <math>f\ x</math>
|फ़ंक्शन f से x तक का अनुप्रयोग
| <math>f\ x</math>
|-
|-
| Multiplication of ''a'' by ''b'' || <math>a \cdot b</math>
|a को b से गुणा करना
| <math>a \cdot b</math>
|-
|-
| Let ''x'' in ''y'' || <math>\operatorname{let} x \operatorname{in} y </math>
|मान लीजिए x में y है
| <math>\operatorname{let} x \operatorname{in} y </math>
|-
|-
| Mathematical equality || <math>m = n</math>
|गणितीय समानता
| <math>m = n</math>
|-
|-
| Beta reducible equality|| <math>m \ \underset{\beta}=\ n</math>
|बीटा कम करने योग्य समानता
| <math>m \ \underset{\beta}=\ n</math>
|}
|}


== गणित के रूप में लैम्ब्डा कैलकुलस की व्याख्या ==
== गणित के रूप में लैम्ब्डा कैलकुलस की व्याख्या ==


गणित की व्याख्या में, लैम्ब्डा शब्द मूल्यों का प्रतिनिधित्व करते हैं। बीटा रिडक्शन#रिडक्शन डिडक्टिव चरण हैं जो अभिव्यक्तियों के मूल्यों में परिवर्तन नहीं करते हैं।
गणितीय व्याख्या में, लैम्बडा शब्द मानों को प्रतिष्ठित करते हैं। एटा और बीटा संक्षेपण यानी संकलन और प्रमाणिक स्थान बदलने वाली कदम हैं जो अभिव्यक्तियों के मानों को परिवर्तित नहीं करते हैं:
: <math>\operatorname{eta-reduct}[X] = X </math>
: <math>\operatorname{eta-reduct}[X] = X </math>
: <math>\operatorname{beta-reduct}[X] = X </math>
: <math>\operatorname{beta-reduct}[X] = X </math><br />
 
 
=== गणित के रूप में एटा कमी ===
=== गणित के रूप में एटा कमी ===


एक ईटा-रिडक्ट द्वारा परिभाषित किया गया है,
ईटा-संक्षेपण की परिभाषा है,
:<math>x \not \in \operatorname{FV}(f) \to \operatorname{eta-reduct}[\lambda x.(f\ x)] = f </math>
:<math>x \not \in \operatorname{FV}(f) \to \operatorname{eta-reduct}[\lambda x.(f\ x)] = f </math>
गणितीय व्याख्या में,
गणितीय व्याख्या में,
: <math>\operatorname{eta-reduct}[X] = X </math>
: <math>\operatorname{eta-reduct}[X] = X </math>
f को एक चर मानते हुए,
f को चर मानते हुए,
: <math>\lambda x.(f\ x) = f </math>
: <math>\lambda x.(f\ x) = f </math>
या देने से <math>f\ x = y </math>
या देने से
 
<math>f\ x = y </math>
: <math>f\ x = y \iff f = \lambda x.y </math>
: <math>f\ x = y \iff f = \lambda x.y </math>
यह परिभाषा परिभाषित करती है <math> \lambda x.y </math> समीकरण में f का समाधान होने के लिए,
यह परिभाषा समीकरण में f के लिए <math> \lambda x.y </math> को परिभाषित करती है, जो समीकरण में समाधान है,
: <math>f\ x = y </math>
: <math>f\ x = y </math><br />
 
 
=== गणित के रूप में बीटा कमी ===
=== गणित के रूप में बीटा कमी ===


एक बीटा कमी है,
बीटा-संक्षेपण का परिभाषित होता है,
: <math>\operatorname{beta-reduct}[(\lambda x.b)\ z] = b[x:=z] </math>
: <math>\operatorname{beta-reduct}[(\lambda x.b)\ z] = b[x:=z] </math>
और के रूप में,
और के रूप में,
: <math>\operatorname{beta-reduct}[X] = X </math>
: <math>\operatorname{beta-reduct}[X] = X </math>
तब,
तो,
: <math>(\lambda x.b)\ z = b[x:=z] </math>
: <math>(\lambda x.b)\ z = b[x:=z] </math>
यह नियम [[सार्वभौमिक परिमाणीकरण]] चर के [[सार्वभौमिक तात्कालिकता]] द्वारा निहित है। अगर,
यह नियम [[सार्वभौमिक परिमाणीकरण]] चर के [[सार्वभौमिक तात्कालिकता]] द्वारा निहित है। यदि,
: <math>\forall x: f\ x = y </math>
: <math>\forall x: f\ x = y </math>
तब <math>f\ z </math> परिमाणित चर x के साथ अभिव्यक्ति y है जिसे z के रूप में त्वरित किया गया है।
तो<math>f\ z </math> व्यक्ति y का अभिव्यक्ति है जिसमें य नियतित चर x के रूप में इंस्टेंटिएशन होती है।
: <math>f\ z = y[x:=z] </math>
: <math>f\ z = y[x:=z] </math>
इसलिए,
इसलिए,
: <math>(\lambda x.y)\ z = y[x:=z] </math>
: <math>(\lambda x.y)\ z = y[x:=z] </math>
चूँकि बीटा कमी ईटा कमी से निहित है, दोनों परिभाषाओं के बीच कोई विरोधाभास नहीं है।
बीटा-संक्षेपण ईटा-संक्षेपण से सूचित होता है, इसलिए दो परिभाषाओं के बीच कोई विरोध नहीं है।


== द्विसंयोजकता के सिद्धांत के साथ असंगति ==
== द्विसंयोजकता के सिद्धांत के साथ असंगति ==


मान लीजिए z एक [[बूलियन बीजगणित (संरचना)]] है; तब हम बिना किसी समाधान वाला समीकरण बना सकते हैं,
मान ले z [[बूलियन बीजगणित (संरचना)]] है; तब हम बिना किसी समाधान वाला समीकरण बना सकते हैं,
: <math> z = \neg z </math>
: <math> z = \neg z </math>
इस समीकरण को पुनरावर्तन द्वारा हल करने के लिए, हम एक नया फ़ंक्शन प्रस्तुत करते हैं {{mvar|f}} द्वारा परिभाषित,
इस समीकरण को पुनरावृत्ति द्वारा हल करने के लिए, हम नया फ़ंक्शन {{mvar|f}} प्रस्तुत करते हैं जिसे निम्न रूप में परिभाषित किया जाता है,
: <math>f\ n = \neg (n\ n)</math>
: <math>f\ n = \neg (n\ n)</math>
कहाँ {{mvar|n}} रिकर्सन मान रखने के लिए एक सहायक चर है। (हम इसे लेते हैं <math>\neg</math> फिर भी एक बूलियन लौटाता है, भले ही उसे गैर-बूलियन तर्क दिया गया हो।) ईटा-कमी से, हम प्राप्त करते हैं,
यहाँ {{mvar|n}} परस्पर अवलंबी चर है जो पुनरावृत्ति मान को धारण करने के लिए है। (हम इसे लेते हैं कि <math>\neg</math> अभी भी बूलियन लौटाता है, यदि इसे गैर-बूलियन तर्क दिया जाए।) इटा-संक्षेपण द्वारा, हम प्राप्त करते हैं,
: <math>f = \lambda x.\neg (x\ x) </math>
: <math>f = \lambda x.\neg (x\ x) </math>
और तब,
और तब,
Line 93: Line 98:
&= \neg ((\lambda x.\neg (x\ x)) (\lambda x.\neg (x\ x))) \\
&= \neg ((\lambda x.\neg (x\ x)) (\lambda x.\neg (x\ x))) \\
&= \neg (f\ f) \end{align}</math>
&= \neg (f\ f) \end{align}</math>
तब {{mvar|f f}} न तो सत्य है और न ही असत्य, और जैसे {{mvar|f f}} एक बूलियन मान है (किसी पर भी)। {{mvar|x}}, {{mvar|f}} बूलियन लौटाता है <math>\neg (x\ x)</math>) तो हम उसे देखते हैं {{mvar|f f}} न तो सत्य है और न ही असत्य; यह यह भी दर्शाता है कि गैर-तार्किक मूल्यों पर लागू होने पर नकार का अर्थ कम होता है।
तब {{mvar|f f}} न तो सच है और न ही झूठ है, और जैसा कि {{mvar|f f}} बूलियन मान है (किसी भी {{mvar|x}} पर, {{mvar|f}} बूलियन <math>\neg (x\ x)</math> लौटाता है ) है, तो हम देखते हैं कि {{mvar|f f}} न तो सच है और न ही झूठ है; यह इसका भी प्रदर्शन करता है कि नकारात्मकता गैर-तार्किक मानों पर लागू किए जाने पर कम सार्थक होती है।


== गहन बनाम विस्तारित समानता ==
== गहन बनाम विस्तारित समानता ==


डिडक्टिव सिस्टम के रूप में लैम्ब्डा कैलकुलस की व्याख्या के लिए एक और कठिनाई लैम्ब्डा शब्दों के रूप में मूल्यों का प्रतिनिधित्व है, जो कार्यों का प्रतिनिधित्व करते हैं। अनटाइप्ड लैम्ब्डा कैलकुलस को लैम्ब्डा टर्म पर कटौती करके लागू किया जाता है, जब तक कि यह शब्द सामान्य रूप में न हो। विस्तारात्मक व्याख्या<ref>
लैम्बडा कैलकुलस को प्रमाणात्मक प्रणाली के रूप में व्याख्या करने के लिए एक और कठिनाई यह है कि मानों को लैम्बडा शब्दों के रूप में प्रतिष्ठित कैसे किया जाए, जो कि फ़ंक्शन को प्रतिष्ठित करते हैं। अनवर्णित लैम्बडा कैलकुलस को लैम्बडा शब्द परिवर्तनों के द्वारा क्रियान्वित किया जाता है, जब तक शब्द साधारित रूप में नहीं हो जाता है। भावनात्मक व्याख्या में<ref>
{{cite web
{{cite web
|last=Selinger
|last=Selinger
Line 104: Line 109:
|url=http://www.mscs.dal.ca/~selinger/papers/#lambdanotes.pdf
|url=http://www.mscs.dal.ca/~selinger/papers/#lambdanotes.pdf
|pages=6}}
|pages=6}}
</ref>
</ref><ref>
<ref>
{{cite book
{{cite book
|chapter-url=http://plato.stanford.edu/entries/lambda-calculus/
|chapter-url=http://plato.stanford.edu/entries/lambda-calculus/
Line 114: Line 118:
|page=1.2 Intensionality
|page=1.2 Intensionality
}}
}}
</ref> समानता का अर्थ यह है कि लैम्ब्डा शब्द को सामान्य रूप में कम करना लैम्ब्डा शब्द का मान है।
</ref> समानता की मानिक व्याख्या है कि एकैम्बडा शब्द को साधारित रूप में परिवर्तित करना, वह लैम्बडा शब्द का मान है।


यह व्याख्या लैम्ब्डा अभिव्यक्ति की पहचान को उसकी संरचना मानती है। दो लैम्ब्डा पद समान हैं यदि वे अल्फ़ा परिवर्तनीय हैं।
इस व्याख्या में, लैम्बडा अभिव्यक्ति की पहचान उसकी संरचना के रूप में होती है। दो लैम्बडा शब्द समान होते हैं यदि वे अल्फा परिवर्तनीय हैं।


फ़ंक्शन समानता की विस्तारात्मक परिभाषा यह है कि यदि दो फ़ंक्शन समान मैपिंग करते हैं तो वे समान होते हैं;
फ़ंक्शन की समानता की व्याख्यात्मक परिभाषा है कि दो फ़ंक्शन समान होते हैं यदि वे समान मैपिंग करते हैं:
: <math>f = g \iff (\forall x f\ x = g\ x)</math>
: <math>f = g \iff (\forall x f\ x = g\ x)</math>
इसका वर्णन करने का एक तरीका यह है कि विस्तारित समानता कार्यों की समानता का वर्णन करती है, जबकि गहन समानता फ़ंक्शन कार्यान्वयन की समानता का वर्णन करती है।
इसका तरीका यह है कि व्याख्यात्मक समानता फ़ंक्शनों की समानता का वर्णन करती है, जबकि भावनात्मक समानता फ़ंक्शन के अमल की समानता का वर्णन करती है।


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


=== उदाहरण ===
=== उदाहरण ===


[[अंकगणित]] में, वितरण गुण का तात्पर्य यह है <math>2 * (r + s) = 2*r + 2*s</math>. चर्च एन्कोडिंग#चर्च अंकों का उपयोग करके बाएँ और दाएँ पक्ष को लैम्ब्डा शब्दों के रूप में दर्शाया जा सकता है।
[[अंकगणित]] में, वितरण का नियम इसे सिद्धांत रूप में कहता है कि <math>2 * (r + s) = 2*r + 2*s</math>. अंकगणित के चर्च एनकोडिंग का उपयोग करके, इसके दोनों पक्षों को लैम्बडा शब्दों के रूप में प्रदर्शित किया जा सकता है।


तो वितरणात्मक कानून कहता है कि दो कार्य,
इस प्रकार, वितरण का नियम यह कहता है कि दो फ़ंक्शन,
:<math>\lambda r.\lambda s.2 * (r + s) = \lambda r.\lambda s.2*r + 2*s</math>
:<math>\lambda r.\lambda s.2 * (r + s) = \lambda r.\lambda s.2*r + 2*s</math>
चर्च अंकों पर कार्य के रूप में समान हैं। (यहां हमें अनटाइप्ड लैम्ब्डा कैलकुलस की एक तकनीकी कमजोरी का सामना करना पड़ता है: किसी फ़ंक्शन के डोमेन को चर्च अंकों तक सीमित करने का कोई तरीका नहीं है। निम्नलिखित तर्क में हम इस कठिनाई को नजरअंदाज कर देंगे, यह दिखावा करके कि सभी लैम्ब्डा अभिव्यक्तियां चर्च अंक हैं।) यदि चर्च के अंक संख्याओं का संतोषजनक कार्यान्वयन प्रदान करते हैं तो वितरण कानून लागू होना चाहिए।
चर्च अंकगणित पर फ़ंक्शन के रूप में, समान होते हैं। (यहां हमें अविश्वसनीय लैम्बडा कैलकुलस की तकनीकी कमजोरी का सामना होता है: लैम्बडा के सभी अभिव्यक्तियों को चर्च अंकगणित कहे जाने वाले अंकों में सीमित करने का कोई तरीका नहीं होता है। हम निम्नलिखित विवाद को उदासीनता करेंगे, इसके माध्यम से, "सभी" लैम्बडा अभिव्यक्तियों को चर्च अंकगणित कहे जाने वाले अंकों का दृष्टांतिक रूप होता है।) यदि चर्च अंकगणित संख्याओं का संतोषजनक क्रियान्वयन प्रदान करते हैं, तो वितरण का नियम लागू होना चाहिए।


:<math>\begin{align}
:<math>\begin{align}
Line 146: Line 150:
\lambda r.\lambda s.\lambda f.\lambda x.r\ f\ (r\ f\ (s\ f\ (s\ f\ x)))
\lambda r.\lambda s.\lambda f.\lambda x.r\ f\ (r\ f\ (s\ f\ (s\ f\ x)))
\end{align}</math>
\end{align}</math>
दो शब्द बीटा समान अभिव्यक्तियों को कम करते हैं। फिर भी वे अल्फ़ा परिवर्तनीय नहीं हैं, या यहाँ तक कि ईटा परिवर्तनीय भी नहीं हैं (बाद वाला अनुसरण करता है क्योंकि दोनों शब्द पहले से ही ईटा-लॉन्ग रूप में हैं)। अत: समानता की गहन परिभाषा के अनुसार, भाव समान नहीं हैं। लेकिन यदि दोनों कार्यों को समान चर्च अंकों पर लागू किया जाता है तो वे वितरणात्मक कानून द्वारा समान परिणाम उत्पन्न करते हैं; इस प्रकार वे विस्तारित रूप से समान हैं।
दो पद बीटा संकुचन के माध्यम से समान अभिव्यक्तियों में परिवर्तित हो जाते हैं। फिर भी वे अल्फा परिवर्तनीय, या यहां तक कि इटा परिवर्तनीय नहीं होते हैं (अंतिम कारण यह है कि दोनों टर्म पहले से ही इटा-लॉन्ग रूप में हैं)। इसलिए, संयोजनात्मक बराबरता की अंशात्मक परिभाषा के अनुसार, अभिव्यक्तियाँ समान नहीं होती हैं। किन्तु यदि दोनों फ़ंक्शनों को ही चर्च अंकगणित के साथ लागू किया जाता है, तो वे वितरण के नियम के अनुसार समान परिणाम प्रदर्शित करते हैं; इसलिए वे स्वाभाविक रूप से समान होते हैं।


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


* यदि, सभी लैम्ब्डा-अभिव्यक्तियों के लिए {{mvar|t}} अपने पास <math>f\ t \ \underset{\beta}=\ g\ t</math>, तब <math>f \ \underset{\beta}=\ g</math>.
* यदि, सभी लैम्ब्डा-अभिव्यक्तियों {{mvar|t}} के लिए हमारे पास<math>f\ t \ \underset{\beta}=\ g\ t</math>, हो, तो <math>f \ \underset{\beta}=\ g</math> होता है।


हमारी स्थिति में, सभी लैम्ब्डा-अभिव्यक्तियों का अर्थ सभी चर्च अंक हैं, इसलिए यह मानक अर्थ में भी एक ओमेगा-नियम है। ध्यान दें कि ओमेगा-नियम का तात्पर्य ईटा-नियम से है <math>f\ t \ \underset{\beta}=\ (\lambda x.f\ x)\ t</math> दाहिनी ओर बीटा-कमी द्वारा।
हमारी स्थिति में, "सभी लैम्ब्डा-अभिव्यक्तियों" का अर्थ होता है "सभी चर्च अंकगणित", इसलिए यह प्रामाणिक अर्थ में भी ओमेगा-नियम होता है। ध्यान दें कि ओमेगा-नियम ईटा-नियम की प्राथमिकता को दिखाता है, क्योंकि<math>f\ t \ \underset{\beta}=\ (\lambda x.f\ x)\ t</math> दायरिकरणीय घटना के बाद दाईं ओर अंकित होता है।


== सैद्धांतिक डोमेन सेट करें ==
== सैद्धांतिक डोमेन सेट करें ==


लैम्ब्डा अमूर्तन कार्यों के कार्य हैं। सभी कार्यों के एक सेट के रूप में लैम्ब्डा एब्स्ट्रैक्शन के लिए एक डोमेन को परिभाषित करना एक स्वाभाविक कदम है।
लैम्बडा अवचलन स्वीकार किया जाता है कि लैम्बडा अवचलन फ़ंक्शन की फ़ंक्शन होती है। प्राकृतिक कदम यह है कि लैम्बडा अवचलन के लिए डोमेन को सेट के रूप में परिभाषित किया जाए, जो सभी फ़ंक्शनों का सेट होता है।


डोमेन D से रेंज R तक सभी फ़ंक्शंस का सेट K द्वारा दिया गया है,
डोमेन D से रेंज R तक सभी फ़ंक्शंस का सेट K निम्न में दिया गया है:
: <math>f \in K \iff (\forall x : x \in D \implies f\ x \in R) </math>
: <math>f \in K \iff (\forall x : x \in D \implies f\ x \in R) </math>
फिर कार्यों के सभी कार्यों के सेट की (काल्पनिक) परिभाषा एफ द्वारा दी गई है,
तब (काल्पनिक) सभी फ़ंक्शनों के सेट की परिभाषा F में दी गई है:


: <math>f \in F \iff (\forall x : x \in F \implies f\ x \in F) </math>
: <math>f \in F \iff (\forall x : x \in F \implies f\ x \in F) </math>
यह परिभाषा किसी स्वयंसिद्ध समुच्चय सिद्धांत में तैयार नहीं की जा सकती; और यह अनुभवहीन समीकरण, भले ही इसे एक सेट सिद्धांत में लिखा जा सकता है, इसका कोई समाधान नहीं है।
यह परिभाषा किसी अभिलक्षणिक सेट सिद्धांत में रचना नहीं की जा सकती है; और यह नाइव समीकरण, यदि इसे सेट सिद्धांत में लिखा जा सकता है, तो इसका कोई समाधान नहीं होता है।


अब लैम्ब्डा कैलकुलस को बीटा कटौती और ईटा कटौती द्वारा परिभाषित किया गया है। समानता को परिभाषित करने के रूप में कमी की व्याख्या करने से लैम्ब्डा कैलकुलस के लिए एक अंतर्निहित डोमेन मिलता है। नियम हैं,
अब लैम्बडा कैलकुलस को बीटा घटना और एटा घटना द्वारा परिभाषित किया जाता है। समानता को परिभाषित करने के रूप में घटना का व्याख्यान एक निहित डोमेन के लिए देता है। नियम हैं:
* प्रत्येक लैम्ब्डा एब्स्ट्रैक्शन का एक मान होता है।
* प्रत्येक लैम्ब्डा एब्स्ट्रैक्शन का मान होता है।
* लैम्ब्डा शब्द की बीटा कमी का मान समान होता है।
* लैम्बडा पद का बीटा घटना ही मान होता है
* लैम्ब्डा पद की ईटा कमी का मान समान होता है।
* लैम्बडा पद का एटा घटना ही मान होता है।
* अल्फ़ा परिवर्तनीय लैम्ब्डा पद समान हैं।
* अल्फा परिवर्तनीय लैम्बडा पद समान होते हैं।
* [यदि ओमेगा-नियम मौजूद है] ओमेगा-समतुल्य लैम्ब्डा पद बराबर हैं।
* [यदि ओमेगा-नियम उपस्थित है] "ओमेगा-समान" लैम्बडा पद समान होते हैं।
* यदि उपरोक्त नियमों द्वारा दो लैम्ब्डा पदों को समान नहीं दिखाया जा सकता है, तो वे समान नहीं हैं।
* यदि दो लैम्बडा पदों को उपरोक्त नियमों द्वारा समान नहीं किया जा सकता है, तो वे समान नहीं होते हैं।


यदि दो लैम्ब्डा शब्दों को सामान्य रूप में घटाया जा सकता है तो चर्च-रोसेर प्रमेय का उपयोग यह दिखाने के लिए किया जा सकता है कि वे समान हैं यदि उनके सामान्य रूप अल्फा परिवर्तनीय हैं।
यदि दो लैम्ब्डा पदों को सामान्य रूप में घटाया जा सकता है तो चर्च-रोसेर प्रमेय का उपयोग यह दिखाने के लिए किया जा सकता है कि वे समान हैं यदि उनके सामान्य रूप अल्फा परिवर्तनीय हैं।


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


=== उदाहरण: कोई समाधान नहीं → एक समाधान ===
=== उदाहरण: कोई समाधान नहीं → एक समाधान ===


उदाहरण के लिए समीकरण <math>x = \neg x</math> [[चर्च एन्कोडिंग]] के साथ कोडित किया जा सकता है और लैम्ब्डा कैलकुलस में फिक्स्ड-पॉइंट कॉम्बिनेटर#फिक्स्ड पॉइंट कॉम्बिनेटर का उपयोग किया जा सकता है|करी के वाई कॉम्बिनेटर के रूप में,
उदाहरण के रूप में समीकरण <math>x = \neg x</math> को [[चर्च एन्कोडिंग]] का उपयोग करके और करी के Y कॉम्बिनेटर का उपयोग करके कोड किया जा सकता है:
:<math>\operatorname{not}_1 = \lambda p.\lambda a.\lambda b.p\ b\ a</math>
:<math>\operatorname{not}_1 = \lambda p.\lambda a.\lambda b.p\ b\ a</math>
:<math>(\lambda f.(\lambda x.f\ (x\ x))\ (\lambda x.f\ (x\ x))) (\lambda p.\lambda a.\lambda b.p\ b\ a) </math>
:<math>(\lambda f.(\lambda x.f\ (x\ x))\ (\lambda x.f\ (x\ x))) (\lambda p.\lambda a.\lambda b.p\ b\ a) </math>
और प्रत्यावर्तन है,
और यह पुनरावर्तन है,
:<math>(\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))\ (\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))  </math>
:<math>(\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))\ (\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))  </math>
:<math>(\lambda p.\lambda a.\lambda b.p\ b\ a)\ ((\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))\ (\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))) </math>
:<math>(\lambda p.\lambda a.\lambda b.p\ b\ a)\ ((\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))\ (\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))) </math>
Line 188: Line 192:
: ...
: ...
:<math>\lambda a.\lambda b.(\lambda a.\lambda b.((\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))\ (\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x)))\ b\ a)\ b\ a </math>
:<math>\lambda a.\lambda b.(\lambda a.\lambda b.((\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))\ (\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x)))\ b\ a)\ b\ a </math>
: ... (बीटा और फिर ईटा कमी)
: ... (बीटा और फिर एटा कमी)
:<math>(\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))\ (\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x)) </math>
:<math>(\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x))\ (\lambda x.(\lambda p.\lambda a.\lambda b.p\ b\ a)\ (x\ x)) </math>
जो पहली पंक्ति है और अनिश्चित काल तक दोहराई जाएगी। अभिव्यक्ति कभी भी सामान्य रूप में कम नहीं होती। हालाँकि कमी में प्रत्येक लैम्ब्डा शब्द समान मान का प्रतिनिधित्व करता है। यह मान सत्य या असत्य के एन्कोडिंग से भिन्न है। यह बूलियन डोमेन का हिस्सा नहीं है लेकिन यह लैम्ब्डा कैलकुलस डोमेन में मौजूद है।
यह पहली पंक्ति है और यह अनंतिक्रिया अवधि तक पुनरावृत्ति होगा। यह अभिव्यक्ति कभी साधारित रूप तक कम नहीं होती है। चूंकि , घटना में सम्मलित हर लैम्बडा पद एक ही मान को प्रतिष्ठित करता है। यह मान ट्रू या फॉल्स के एनकोडिंग से अलग होता है। यह बूलियन डोमेन का भाग नहीं है, किन्तु यह लैम्बडा कैलकुलस डोमेन में उपस्थित होता है।


=== उदाहरण: एकाधिक समाधान → एक समाधान ===
=== उदाहरण: एकाधिक समाधान → एक समाधान ===


चर्च एन्कोडिंग#डिवीजन और चर्च एन्कोडिंग#हस्ताक्षरित संख्याओं का उपयोग करते हुए, वाई कॉम्बिनेटर का उपयोग पूर्ण संख्या वर्गमूल का प्रतिनिधित्व करने वाले अभिव्यक्ति को परिभाषित करने के लिए किया जा सकता है। चर्च एन्कोडिंग को [[तर्कसंगत]] और वास्तविक संख्या संख्याओं तक भी बढ़ाया जा सकता है, ताकि वास्तविक वर्गमूल को परिभाषित किया जा सके। [[चर्च-ट्यूरिंग थीसिस]] का तात्पर्य है कि किसी भी गणना योग्य ऑपरेटर (और उसके ऑपरेंड) को लैम्ब्डा कैलकुलस में दर्शाया जा सकता है।
विभाजन और हस्ताक्षरित संख्याओं का उपयोग करके, Y कॉम्बिनेटर का उपयोग पूर्ण संख्या वर्गमूल का प्रतिनिधित्व करने वाले अभिव्यक्ति को परिभाषित करने के लिए किया जा सकता है। चर्च एन्कोडिंग को [[तर्कसंगत]] और वास्तविक संख्या संख्याओं तक भी बढ़ाया जा सकता है, जिससे वास्तविक वर्गमूल को परिभाषित किया जा सके। [[चर्च-ट्यूरिंग थीसिस]] का तात्पर्य है कि किसी भी गणना योग्य ऑपरेटर (और उसके ऑपरेंड) को लैम्ब्डा कैलकुलस में दर्शाया जा सकता है।


ऐसी एन्कोडिंग का उपयोग करते हुए,
इस एनकोडिंग का उपयोग करके,
: <math> x^2 = n \Rightarrow x = \frac{n}{x} \Rightarrow f\ x = \frac{n}{x} \land Y\ f = x</math>
: <math> x^2 = n \Rightarrow x = \frac{n}{x} \Rightarrow f\ x = \frac{n}{x} \land Y\ f = x</math>
चर्च एन्कोडिंग#डिवीजन के कार्यान्वयन का उपयोग करते हुए,
विभाजन के कार्यान्वयन का उपयोग करते हुए,
: <math> Y (\operatorname{divide} n) </math>
: <math> Y (\operatorname{divide} n) </math>
यदि n शून्य के बराबर नहीं है, तो हस्ताक्षरित संख्याओं के डोमेन में दो मानों का प्रतिनिधित्व करता है। हालाँकि यह एक लैम्ब्डा एक्सप्रेशन है इसलिए लैम्ब्डा कैलकुलस डोमेन में इसका केवल एक ही मान है। इस लैम्ब्डा शब्द की बीटा कमी कभी भी सामान्य रूप तक नहीं पहुँचती है। हालाँकि यह एक मान का प्रतिनिधित्व करता है, इसलिए लैम्ब्डा कैलकुलस डोमेन में एक एकल मान हस्ताक्षरित संख्या डोमेन में दो मानों का प्रतिनिधित्व करता है।
यदि n शून्य के समान नहीं है, तो हस्ताक्षरित संख्याओं के डोमेन में दो मानों का प्रतिनिधित्व करता है। चूंकि यह लैम्ब्डा अभिव्यक्ति है इसलिए लैम्ब्डा कैलकुलस डोमेन में इसका केवल मान होता है। इस लैम्बडा शब्द का बीटा संकुचन कभी साधारित रूप नहीं प्राप्त करता है। चूंकि यह मान का प्रतिनिधित्व करता है, इसलिए लैम्ब्डा कैलकुलस डोमेन में एकल मान हस्ताक्षरित संख्या डोमेन में मानों का प्रतिनिधित्व करता है।


==यह भी देखें==
==यह भी देखें==
Line 211: Line 215:
{{reflist}}
{{reflist}}


{{reflist|group=note}}
[[Category: लैम्ब्डा कैलकुलस]]
[[Category: Machine Translated Page]]
[[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:लैम्ब्डा कैलकुलस]]

Latest revision as of 16:27, 26 July 2023

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

इतिहास

अलोंजो चर्च ने 1930 के दशक में लैम्बडा कैलकुलस का आविष्कार किया, प्राथमिक रूप से गणित के लिए नया और सरल आधार प्रदान करने के लिए।[1][2] चूंकि , इसे आविष्कार करने के बाद ही लैम्बडा अभिव्यक्ति की परिभाषा के साथ महत्वपूर्ण तर्क समस्याएं पहचानी गईं: क्लीन-रॉसर पराधिकरण लैम्बडा कैलकुलस में रिचर्ड के पराधिकरण के अंतर्निहित कराने का प्रदर्शन है। [3] हास्केल करी ने यह विवरण किया कि इस पराधिकरण में मूलभूत कदम को सरल करी के पराधिकरण के रूप में उपयोग किया जा सकता है। इन पराधिकरणों की उपस्थिति यह तात्पर्य था कि लैम्बडा कैलकुलस एकतापूर्ण और पूर्णतापूर्ण प्रमाणिक प्रणाली के रूप में नहीं हो सकता था।[4]

हास्केल करी ने 1941 में अनुमानात्मक (प्रमाणिक) संक्रमणीय तर्कशास्त्र का अध्ययन किया। संक्रमणीय तर्कशास्त्र लैम्बडा कैलकुलस से गहरे रूप से संबंधित है, और इन्हीं में वही पराधिकरण उपस्थित हैं।

बाद में लैम्बडा कैलकुलस को प्रोग्रामिंग भाषा की परिभाषा के रूप में पुनर्जीवित किया गया था।

परिचय

लैम्ब्डा कैलकुलस फंक्शनल प्रोग्रामिंग भाषाओं के विकास के लिए मॉडल और प्रेरणा है। इन भाषाओं में लैम्बडा अभिव्यक्ति को प्रदर्शित किया जाता है और इसे फंक्शनों के अनुप्रयोग के साथ और प्रकार के साथ उपयोग किया जाता है।

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

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

शब्दावली

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

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

निम्नलिखित तालिका संक्षेप करती है;

नाम नोटेशन
लैम्ब्डा अमूर्तन.
फ़ंक्शन f से x तक का अनुप्रयोग
a को b से गुणा करना
मान लीजिए x में y है
गणितीय समानता
बीटा कम करने योग्य समानता

गणित के रूप में लैम्ब्डा कैलकुलस की व्याख्या

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


गणित के रूप में एटा कमी

ईटा-संक्षेपण की परिभाषा है,

गणितीय व्याख्या में,

f को चर मानते हुए,

या देने से

यह परिभाषा समीकरण में f के लिए को परिभाषित करती है, जो समीकरण में समाधान है,


गणित के रूप में बीटा कमी

बीटा-संक्षेपण का परिभाषित होता है,

और के रूप में,

तो,

यह नियम सार्वभौमिक परिमाणीकरण चर के सार्वभौमिक तात्कालिकता द्वारा निहित है। यदि,

तो व्यक्ति y का अभिव्यक्ति है जिसमें य नियतित चर x के रूप में इंस्टेंटिएशन होती है।

इसलिए,

बीटा-संक्षेपण ईटा-संक्षेपण से सूचित होता है, इसलिए दो परिभाषाओं के बीच कोई विरोध नहीं है।

द्विसंयोजकता के सिद्धांत के साथ असंगति

मान ले z बूलियन बीजगणित (संरचना) है; तब हम बिना किसी समाधान वाला समीकरण बना सकते हैं,

इस समीकरण को पुनरावृत्ति द्वारा हल करने के लिए, हम नया फ़ंक्शन f प्रस्तुत करते हैं जिसे निम्न रूप में परिभाषित किया जाता है,

यहाँ n परस्पर अवलंबी चर है जो पुनरावृत्ति मान को धारण करने के लिए है। (हम इसे लेते हैं कि अभी भी बूलियन लौटाता है, यदि इसे गैर-बूलियन तर्क दिया जाए।) इटा-संक्षेपण द्वारा, हम प्राप्त करते हैं,

और तब,

तब f f न तो सच है और न ही झूठ है, और जैसा कि f f बूलियन मान है (किसी भी x पर, f बूलियन लौटाता है ) है, तो हम देखते हैं कि f f न तो सच है और न ही झूठ है; यह इसका भी प्रदर्शन करता है कि नकारात्मकता गैर-तार्किक मानों पर लागू किए जाने पर कम सार्थक होती है।

गहन बनाम विस्तारित समानता

लैम्बडा कैलकुलस को प्रमाणात्मक प्रणाली के रूप में व्याख्या करने के लिए एक और कठिनाई यह है कि मानों को लैम्बडा शब्दों के रूप में प्रतिष्ठित कैसे किया जाए, जो कि फ़ंक्शन को प्रतिष्ठित करते हैं। अनवर्णित लैम्बडा कैलकुलस को लैम्बडा शब्द परिवर्तनों के द्वारा क्रियान्वित किया जाता है, जब तक शब्द साधारित रूप में नहीं हो जाता है। भावनात्मक व्याख्या में[5][6] समानता की मानिक व्याख्या है कि एकैम्बडा शब्द को साधारित रूप में परिवर्तित करना, वह लैम्बडा शब्द का मान है।

इस व्याख्या में, लैम्बडा अभिव्यक्ति की पहचान उसकी संरचना के रूप में होती है। दो लैम्बडा शब्द समान होते हैं यदि वे अल्फा परिवर्तनीय हैं।

फ़ंक्शन की समानता की व्याख्यात्मक परिभाषा है कि दो फ़ंक्शन समान होते हैं यदि वे समान मैपिंग करते हैं:

इसका तरीका यह है कि व्याख्यात्मक समानता फ़ंक्शनों की समानता का वर्णन करती है, जबकि भावनात्मक समानता फ़ंक्शन के अमल की समानता का वर्णन करती है।

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

उदाहरण

अंकगणित में, वितरण का नियम इसे सिद्धांत रूप में कहता है कि . अंकगणित के चर्च एनकोडिंग का उपयोग करके, इसके दोनों पक्षों को लैम्बडा शब्दों के रूप में प्रदर्शित किया जा सकता है।

इस प्रकार, वितरण का नियम यह कहता है कि दो फ़ंक्शन,

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