मैं "आर-ट्यूरिंग पूर्णता" की अवधारणा में दिलचस्पी रखता हूं, जैसा कि एक्सलसन और ग्लूक (2011) द्वारा परिभाषित किया गया है । एक प्रणाली आर-ट्यूरिंग पूर्ण है यदि यह किसी भी "कचरा" डेटा का उत्पादन किए बिना एक प्रतिवर्ती ट्यूरिंग मशीन के रूप में कार्यों के एक ही सेट की गणना कर सकती है । यह प्रत्येक फ़ंक्शन की गणना करने में सक्षम होने के समान है जो दोनों (ए) कम्प्यूटेबल, और (बी) इंजेक्शन है।
मैं कम्प्यूटेशनल इंजेक्शन कार्यों के स्थान का कम्प्यूटेशनल रूप से पता लगाना चाहूंगा। ऐसा करने के लिए मैं "सबसे न्यूनतम" प्रतिवर्ती प्रोग्रामिंग भाषा की तलाश में हूं --- कुछ ऐसा जो आर-ट्यूरिंग कम्प्यूटेबिलिटी के लिए समान भूमिका निभा सकता है जो लैम्ब्डा कैलकुलस ट्यूरिंग कम्प्यूटेबिलिटी के लिए खेलता है।
मुझे पता है कि कई प्रतिवर्ती भाषाएं हैं जिन्हें लोगों ने विकसित किया है और आर-ट्यूरिंग पूर्ण साबित हुई हैं। हालांकि, इन्हें व्यावहारिक अनुप्रयोगों को ध्यान में रखकर विकसित किया जा रहा है, और इसलिए उनके लेखक उन्हें न्यूनतम बनाने के बजाय उन्हें अभिव्यंजक विशेषताएं देने पर ध्यान केंद्रित करते हैं।
क्या किसी को पता है कि क्या इस तरह की न्यूनतम औचित्यपूर्ण भाषा का वर्णन किया गया है, या क्या ऐसी दिशा में कोई शोध है? मैं इस विषय पर साहित्य के लिए काफी नया हूं, इसलिए मैं आसानी से इसे याद कर सकता था। वैकल्पिक रूप से, क्या किसी को कोई अंतर्दृष्टि है कि ऐसी भाषा कैसे बनाई जा सकती है?
नीचे एक सारांश है कि मैं क्या देख रहा हूँ। मुझे नहीं पता कि यह लैम्ब्डा कैलकुलस को संशोधित करके बनाया जा सकता है या नहीं, या पूरी तरह से अलग तरह की भाषा का उपयोग करना होगा या नहीं।
- r- ट्यूरिंग पूरी भाषा - सभी अभिकलनीय कार्यों को गणना करता है, और केवल उल्टे कार्यों की गणना कर सकता है
- सिंटेक्स और शब्दार्थ यथासंभव कम से कम। (उदाहरण लैम्ब्डा कैलकुलस में केवल फ़ंक्शन परिभाषाएँ और एप्लिकेशन हैं, और कुछ नहीं।) यह वाक्यविन्यास या शब्दार्थ के लिए लैम्ब्डा कैलकुलस से संबंधित होने के लिए आवश्यक नहीं है, हालांकि वे हो सकते हैं।
- प्रोग्राम = डेटा। यही है, प्रोग्राम किसी अन्य प्रकार के डेटा के बजाय अभिव्यक्तियों पर काम करते हैं। यह गारंटी देता है कि प्रोग्राम के आउटपुट को हमेशा प्रोग्राम के रूप में व्याख्या किया जा सकता है। इसका तात्पर्य यह है कि भाषा की अनिवार्य शैली के बजाय यह एक कार्यात्मक होना चाहिए।
- एक प्रोग्राम को अपने व्युत्क्रम में बदलने के लिए कुछ व्यवस्थित तरीका है, जो वास्तव में उलटा गणना करने में शामिल होने की तुलना में बहुत अधिक गणना शामिल नहीं करता है। (सभी इनवर्टेबल भाषाओं में यह संपत्ति नहीं है, लेकिन कुछ करते हैं।)
मुझे इस बात पर जोर देना चाहिए कि एक्सलसन और ग्लुक की प्रतिवर्ती कंप्यूटिंग के लिए दृष्टिकोण बेनेट के कारण प्रसिद्ध दृष्टिकोण से काफी अलग है, जहां एक (सामान्य रूप से गैर-अक्षम्य) कार्यक्रम को आउटपुट के साथ संगणना के इतिहास के बारे में कुछ जानकारी देकर लौटाया जाता है। आर-ट्यूरिंग पूर्णता बिना किसी अतिरिक्त आउटपुट के इंजेक्शन कार्यों की गणना करने में सक्षम है । "रिवर्सेबल लैम्ब्डा कैलकुलस" के रूपांतरों में कई चीजें हैं जो बेनेट के अर्थ में प्रतिवर्ती हैं - वे नहीं हैं जो मैं देख रहा हूं।