क्या उन कार्यों के वर्ग के बराबर आदिम पुनरावृत्ति कार्यात्मकता का वर्ग है जो भ्रूण को समाप्त करने के लिए साबित होता है?


9

भ्रूण, यदि आपने इसके बारे में नहीं सुना है, तो यहां पढ़ा जा सकता है । यह एक फ़ंक्शन में पुनरावर्ती कॉल के सभी 'पुनरावृत्ति व्यवहार' को खोजने के लिए 'कॉल मैट्रिस' और 'कॉल ग्राफ़' की एक प्रणाली का उपयोग करता है। यह दिखाने के लिए कि एक फ़ंक्शन इसे समाप्त करता है, यह दर्शाता है कि किसी फ़ंक्शन के लिए किए गए पुनरावर्ती कॉल के सभी पुनरावृत्ति व्यवहार एक निश्चित 'लेक्सिकोग्राफिक ऑर्डरिंग' का पालन करते हैं। यह समाप्ति चेकर सभी आदिम पुनरावर्ती कार्यों और इस तरह के एकरमन फ़ंक्शन को अनुमति देता है। मूल रूप से यह बहु-तर्क आदिम पुनरावृत्ति की अनुमति देता है। यह भी मूल रूप से अगाडा की समाप्ति चेकर है; मेरा मानना ​​है कि Coq में कुछ समान सुविधाएं हैं, हालांकि शायद अधिक सामान्य हैं।

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

खुराक भ्रूण सभी आदिम पुनरावर्ती कार्य की अनुमति देते हैं? यदि ऐसा है तो यह उन कार्यों को अनुमति देता है जो आदिम पुनरावर्ती कार्य नहीं हैं? क्या इसके उत्तर के लिए एक प्रशस्ति पत्र प्रदान किया जा सकता है? (यह वास्तव में आवश्यक नहीं है क्योंकि मैं सिर्फ दिलचस्पी रखता हूं; यह सिर्फ इतना है कि इस मामले पर कुछ पढ़ना वैवाहिक अच्छा होगा)

बोनस प्रश्न: आदिम पुनरावर्ती फंक्शंस में कॉम्बिनेटरों के संदर्भ में बहुत ही संक्षिप्त परिभाषा है: टाइप एस और के (जो निश्चित बिंदु कॉम्बिनेटरों को व्यक्त नहीं कर सकते हैं), शून्य, उत्तराधिकारी फ़ंक्शन और पुनरावृति फ़ंक्शन; बस। क्या ऐसी अन्य सामान्य भाषाएं हैं जिनकी ऐसी संक्षिप्त परिभाषा है और जिसमें सभी अभिव्यक्तियाँ समाप्त हो जाती हैं?


Agda बनाम Coq पर: मैंने हमेशा Agda के टर्मिनेशन चेकर को और अधिक उन्नत होने के लिए पढ़ा और अधिक कार्यों को स्वीकार किया, आपका इसके विपरीत पहला दावा है (Agda की तुलना जब अंग की तुलना Coq से करने के लिए किया गया तो यह एक अच्छा नियम है, Agda की रणनीति में कमी के अलावा: Agda अधिक शोध और विस्तार के लिए खुला है जिसकी स्थिरता कम स्थापित है)। एंड्रियास एबेल आकार के प्रकारों के आधार पर और भी अधिक उन्नत समाप्ति चेकर्स पर काम कर रहे हैं, मिनीगाडा और इस पत्र पर भी उनका काम देखें ।
ब्लेसरॉब्लेड

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

मुझे स्पष्ट करना चाहिए कि मैंने Coq का उपयोग बिल्कुल नहीं किया है और Agda को केवल थोड़ा ही। ऐसा लगता था कि कोक ने जो थोड़ा पढ़ा था, वह एक व्यापक वर्ग को गणना करने योग्य कार्यों को परिभाषित करने में सक्षम था, लेकिन मुझे नहीं पता था इसलिए मैंने कहा "मुझे विश्वास है कि कोक के पास कुछ समान सुविधाएं हैं, हालांकि शायद अधिक सामान्य हैं"; "आस्तिक" और "शायद" का उपयोग यह बताने के लिए किया गया था कि मुझे नहीं पता था।
जेक

जवाबों:


7

हां, Fetus checker Goedel के T में सबकुछ टाइप कर सकता है। आप चेकर का उपयोग करके यह दिखा सकते हैं कि T में पुनरावृत्ति ऑपरेटर समाप्त हो रहा है। उदाहरण के लिए, निम्नलिखित परिभाषा काम करेगी:

मैंटीआर:()एनमैंटीआरमैं0=मैंमैंटीआरमैं(n+1)=(मैंटीआरमैंn)

यह लोटस चेकर (या किसी भी अन्य समाप्ति परीक्षक) के लिए जांचना बहुत आसान है, क्योंकि यह स्पष्ट रूप से संरचनात्मक रूप से पुनरावर्ती परिभाषा है।

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

कुछ का एक आसान उदाहरण जो टी से आगे निकल जाता है, वह गोएडल के टी की स्थिरता है! हम सिंटैक्स को डेटाटाइप के रूप में दे सकते हैं:

data T : Set where 
   N : T 
   _⇒_ : T → T → T

data Term : T → Set where 
   zero : Term N
   succ : Term (N ⇒ N)
   k    : {A B : T} → Term (A ⇒ B ⇒ A)
   s    : {A B C : T} → Term ((A ⇒ B ⇒ C) ⇒ (A ⇒ B) ⇒ A ⇒ C)
   r    : {A : T} → Term (A ⇒ (A ⇒ A) ⇒ N ⇒ A)
   _·_  : {A B : T} → Term (A ⇒ B) → Term A → Term B

ध्यान दें कि टाइप निर्भरता हमें केवल टी के अच्छी तरह से टाइप की गई शर्तों के एक डेटा टाइप को परिभाषित करने की अनुमति देती है। फिर हम प्रकारों के लिए एक व्याख्या फ़ंक्शन दे सकते हैं:

interp-T : T → Set 
interp-T N       = Nat 
interp-T (A ⇒ B) = (interp-T A) → (interp-T B)

यह कहता है कि NAgda प्राकृतिक संख्या होनी चाहिए, और T के तीर को Agda फ़ंक्शन स्थान के रूप में व्याख्या की जानी चाहिए। यह एक "बड़ा" उन्मूलन है, क्योंकि हम डेटाटाइप टी की संरचना पर पुनरावृत्ति द्वारा एक सेट को परिभाषित करते हैं।

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

interp-term : {A : T} → Term A → interp-T A
interp-term zero    = 0 
interp-term succ    = \n → n + 1
interp-term k       = \x y → x
interp-term s       = \x y z → x z (y z)
interp-term r       = Data.Nat.fold 
interp-term (f · t) = (interp-term f) (interp-term t)

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

मुझे नहीं पता कि एजडा की सुसंगतता क्या है, लेकिन बेंजामिन वर्नर ने दिखाया है कि कैलकुलस ऑफ इंडक्टिव कंस्ट्रक्शंस (Coq का कर्नेल कैलकुलस) ZFC के साथ-साथ कई दुर्गम कार्डिनल्स के बराबर है।


ध्यान दें कि आपने अपने उदाहरण में बड़े उन्मूलन का उपयोग नहीं किया है। बड़े उन्मूलन वास्तव में कम्प्यूटेशनल शक्ति नहीं जोड़ते हैं। Impredicativity करता है: सिस्टम F में भूतपूर्व नहीं है, लेकिन सिस्टम T में व्यक्त नहीं होने वाले कार्यों को व्यक्त कर सकता है
cody

@ कोडी: इंटर-टी फ़ंक्शन एक शब्द से एक सेट की गणना करता है, जो मेरे लिए एक बड़े उन्मूलन की तरह दिखता है! यह निश्चित रूप से मामला है कि बड़े उन्मूलन शक्ति को जोड़ते हैं: मार्टिन-लोफ प्रकार का सिद्धांत एक बड़े उन्मूलन के बिना 0 = 1 से असंगतता भी प्राप्त नहीं कर सकता है। (यह देखने के लिए, ध्यान दें कि सार्वभौमिक / बड़ी समाप्ति के बिना आप सभी निर्भरताओं को मिटा सकते हैं और बस टाइप किया हुआ शब्द प्राप्त कर सकते हैं: यह वही है जो हार्पर और पफनिंग ने एलएफ के लिए अपने पर्याप्तता प्रमाण में किया था।)
नील कृष्णस्वामी

मुझे खेद है: हाँ इंटर-टी फ़ंक्शन वास्तव में बड़े उन्मूलन का उपयोग करता है। मैं यह भी मानता हूं कि 0! = 1 साबित करना वास्तव में इसकी आवश्यकता है। हालांकि, गणना योग्य कार्यों को परिभाषित करना गणितीय कथनों को साबित करने के समान नहीं है । मेरा जवाब यह थोड़ा स्पष्ट करता है। उदाहरण के लिए, कंस्ट्रक्शंस की शुद्ध गणना 0 साबित नहीं कर सकती है! = 1. हालांकि, यह एकरमैन फ़ंक्शन को सापेक्ष आसानी से परिभाषित कर सकता है।
कोडी

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

1
एजडा के दस्तावेज में कहा गया है कि इसकी समाप्ति चेकर Fetus एल्गोरिथ्म का उपयोग करता है। यदि आपने T लिया, और Fetus द्वारा जाँच की गई पैटर्न मिलान और पुनरावर्ती परिभाषाओं के साथ इसे बढ़ाया, तो आप इसमें T के लिए एक दुभाषिया नहीं लिख पाएंगे। वास्तव में, आप T द्वारा गणना किए गए कार्यों को बिल्कुल भी नहीं बदलेंगे - सभी समाप्ति के आदेश Fetus compute काफी अच्छी तरह से Peano अंकगणित में स्थापित हैं। (कोडी का उत्तर देखें।) फ़ेटस एल्गोरिथ्म आपको अधिक परिभाषाएँ लिखने देता है , बिना फ़ंक्शन के सेट को बदलकर आप गणना कर सकते हैं। Agda की बड़ी समाप्ति वास्तव में कार्यों के सेट को बढ़ाती है।
नील कृष्णस्वामी

3

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

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

फिर, इसके लिए अनुनाद यह है कि "कॉल मैट्रिस" द्वारा कैप्चर की गई कमी काफी अच्छी तरह से स्थापित है , और उस प्रमाण को पूरी तरह से बाहर किया जा सकता है।पी

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


ऐसे कार्यों का एक वर्ग कैसे हो सकता है, जो सिस्टम एफ में कार्य के वर्ग के समतुल्य समाप्त हो रहे हैं (पीए ^ 2) जो अब तक मुझे पता है कि समाप्त करने के लिए सक्षम नहीं हैं? इसके अलावा, मुझे समझ नहीं आ रहा है कि आप मेरे सवाल का जवाब कैसे दे रहे हैं। क्या आप कह रहे हैं कि सिस्टम T में कम्प्यूटेशनल कार्यों का एक बड़ा वर्ग है या आप कह रहे हैं कि भ्रूण है? मुझे लगता है कि आपके तर्क में एक छलांग थी, जिसकी अपेक्षा मुझे वास्तव में करने की तुलना में अधिक पृष्ठभूमि थी। इसके अलावा आपके द्वारा प्रदान किया गया लिंक एक खराब पृष्ठ को जन्म देता है जो सही तरीके से प्रस्तुत नहीं करता है।
जेक

सिस्टम एफ में कार्य सभी समाप्त। Fetus, सिस्टम T से तुलनात्मक कार्यों के एक बड़े वर्ग को पकड़ता है, लेकिन "दुर्घटना से", यदि आप बहुरूपता को दूर करते हैं, तो Fetus केवल सिस्टम T को पकड़ लेता है। क्या आप मुझे बता सकते हैं कि कौन सा लिंक आपके लिए काम नहीं करता है? (और आप किस ब्राउज़र का उपयोग कर रहे हैं :)
कोड़ी

1

यदि आदिम पुनरावर्ती क्रियाओं से आपका मतलब है आदिम पुनरावर्ती कार्य और आप जानते हैं कि Fetus में Ackermann फ़ंक्शन शामिल है, तो Fetus जनसंपर्क कार्यों के वर्ग के साथ मेल नहीं खाता क्योंकि Ackermann फ़ंक्शन आदिम पुनरावर्ती नहीं है। यह एकरमैन द्वारा दिखाया गया था और बाद में रोसज़ा पीटर द्वारा " कोन्स्ट्रुक्टियन निक्ट्रेक्टिवर फनकटियन " 1935 में एक सरल प्रमाण दिया गया था (दुर्भाग्य से केवल जर्मन में जहाँ तक मुझे पता है)।

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

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

फिर भी रोज़ा पीटर द्वारा " ज़ुसमेनशांग डेर मेहरफैचेन अन ट्रांसफ़िनिटेन रेकर्सियन " में वर्णित ट्रांसफ़ॉर्मेंट रिकर्सन की अवधारणा द्वारा एक मजबूत वर्ग दिया गया है । आवर्ती पुनरावर्तन के लिए आपके पास एक पुनरावर्ती चर है जो पूर्ववर्तियों को विशेष आदेश देने के लिए कॉल कर सकता है<

उदाहरण के लिए, आप पूर्णांक को पूर्णांक की एक जोड़ी के रूप में व्याख्या कर सकते हैं और आदेश का उपयोग कर सकते हैं

(,)<(सी,)(<सी)(सी<)
यह पूर्णांकों और इसी तरह के तीनों के लिए सामान्यीकृत किया जा सकता है। पीटर ने ये आदेश दिएω2,ω3और इसी तरह। आप एक कदम आगे जा सकते हैं और पूर्णांक को मनमाने ढंग से पूर्णांकों की संख्या के रूप में व्याख्या कर सकते हैं। चलोपीमैं बनो मैं-प्रधान संख्या तब हम विचार कर सकते हैंz=पी1nपी2एक्स1पी3एक्स2... कहाँ पे n में एन्कोड किए गए पूर्णांकों की संख्या को दर्शाता है z और यह एक्समैंसम्मान होता है। मूल्य। वह इस तरह के पूर्णांक की सूची के लिए एक आदेश को दर्शाता हैωωऔर विकर्णीकरण से पता चलता है कि इस तरह की पुनरावृत्ति कई पुनरावृत्ति से अधिक मजबूत है। हालाँकि, मुझे यकीन नहीं है कि इस वर्ग का एक सिंटैक्टिकल लक्षण वर्णन है।

[संपादित करें] आदिम पुनरावर्ती कार्य आदिम पुनरावर्ती कार्य के समान नहीं हैं जैसा कि नीचे टिप्पणी में दिया गया है। फिर भी मुझे लगता है कि कोई व्यक्ति कार्यात्मक पर पुनरावृत्ति की अवधारणा को स्थानांतरित कर सकता है। हालांकि, यह स्पष्ट नहीं है कि क्या यह अभी भी एक शक्तिशाली सेटिंग है।


2
परिमित पुनरावर्ती कार्यों के वर्ग की तुलना में परिमित प्रकार के आदिम पुनरावर्ती कार्यों का वर्ग अधिक सामान्य है। यह उदाहरण के लिए एकरमैन समारोह व्यक्त कर सकते हैं और गोडेल की प्रणाली टी में देखा जा सकता
जेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.