Λ-पथरी अनिवार्य रूप से क्या है?


11

मेरे पास वही है जो मैं λ-पथरी के बारे में एक दार्शनिक प्रश्न कहूंगा।

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

लेकिन दूसरी तरफ, यदि आप विचार करते हैं कि आप λ-पथरी में कार्यों के साथ क्या कर सकते हैं, तो आपको एहसास होता है कि आप केवल एक चीज यह कर सकते हैं कि यह एक फ़ंक्शन को खिलाए और यह एक और फ़ंक्शन देता है। और वह प्रक्रिया कभी समाप्त नहीं होती है।

तो आप एक संगणना से परिणाम कैसे निकाल सकते हैं?

मान लीजिए कि एक अभिव्यक्ति का परिणाम कार्य है f। आप यह जांचना चाहते हैं fकि आपसे क्या अपेक्षा थी। आप इसका परीक्षण कर सकते हैं, एक फ़ंक्शन जिसे आप जानते हैं, उस पर लागू fकरें और प्राप्त करें g। लेकिन जांच gसही है, अब आपको यह सत्यापित करने की आवश्यकता है कि क्या gकरता है। और आप सब शुरू करते हैं। तो आप कैसे कुछ भी बता सकते हैं f?

यह मुझे लगता है कि आप λ-पथरी में सभी कार्यों को एक ही फ़ंक्शन, पहचान फ़ंक्शन I = λx.x, और सब कुछ अभी भी λ-पथरी में वर्णित के अनुसार काम कर सकते हैं। चर्च अंक 3जब दिया जाता है fऔर xवापस लौटता है f(f(f(x)))। लेकिन चूंकि fऔर xकेवल हो सकता है I, यह वापस आ जाता है IIपर भी लागू होता है Iऔर Iरिटर्न भी I। तो Iकी परिभाषा को संतुष्ट करता है 3। "बूलियन्स" (λxy.x)और (λxy.y)2 तर्क की आवश्यकता है, जो होगा Iऔर Iइसलिए दोनों बूलियन वापस आ जाएंगे I। प्रत्येक पहचान के समतुल्य है, भले ही वे अपनी परिभाषाओं के अनुसार सटीक व्यवहार करते हों।

तो आप कैसे फर्क करते हैं? आप कैसे दिखाते हैं कि λ-पथरी सिर्फ एक ही कार्य से अधिक के साथ संबंधित है?

क्या पहचान की अवधारणा है? क्या आप किसी मूल्यांकन के बिना तुरंत एक समारोह की पहचान कर सकते हैं? मेरा मानना ​​है कि यह साबित हो गया कि समानता के लिए 2 कार्यों का परीक्षण करने का कोई तरीका नहीं है।

या λ-पथरी कार्यों के बारे में नहीं है, लेकिन वे क्या करते हैं के औपचारिक विवरण के बारे में? इसका मतलब यह होगा कि λ अभिव्यक्तियाँ न केवल यह बताती हैं कि फ़ंक्शंस क्या करते हैं बल्कि वे डेटा भी हैं जो फ़ंक्शंस में हेरफेर करते हैं। इसलिए जब आप लिखते हैं A B, तो आप पर लागू नहीं होता Aहै B, लेकिन आप स्ट्रिंग द्वारा वर्णित फ़ंक्शन Aको Bकिसी अन्य औपचारिक परिभाषा को वापस करने में निहित फ़ंक्शन की औपचारिक परिभाषा पर लागू करते हैं।

Λ-पथरी में वास्तव में क्या चल रहा है? वह किन गणितीय वस्तुओं से संबंधित है?


ऊपर का पालन करें:

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


2
आप कुछ कम राय उन्मुख कुछ करने के लिए अंतिम सवाल rephrase सकता है? इसके लिए ठोस गैर-राय वाला जवाब होना चाहिए।
तेलस्टिन

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

जवाबों:


9

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

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

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


क्या चर्च के अंकों से जुड़े एक गणना के परिणाम की अभिव्यक्ति हमेशा (λfx.f (f (fx))) के रूप में विहित रूप से हल होगी? या आप एक ही अंक के अलग-अलग समान भाव प्राप्त कर सकते हैं?
फ्लोरियन एफ

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