इस प्रश्न की प्रेरणा निम्नलिखित (अस्पष्ट) प्रश्न है: AI होने के लिए प्रोग्रामिंग भाषा / तार्किक आधार क्या हैं जो अपने स्वयं के स्रोत कोड के बारे में तर्क कर सकते हैं और इसे संशोधित कर सकते हैं?
यह बिल्कुल कठोर नहीं है, इसलिए यहां से एक ठोस प्रश्न निकालने का मेरा प्रयास है। मेरी रुचि के दो काम हैं:
(ए) एक प्रोग्रामिंग भाषा पी जो अपने स्वयं के कार्यक्रमों को डेटाटाइप प्रोग्राम (जैसे, एएसटी के रूप में) का प्रतिनिधित्व और हेरफेर कर सकती है। (यदि वांछित है, तो टाइप प्रोग्राम की एक वस्तु को एक स्ट्रिंग में परिवर्तित किया जा सकता है, जो उस भाषा में एक वैध कार्यक्रम का पाठ है। यह एक संकलक के विपरीत होगा।)
(बी) भाषा पी में एक कार्यक्रम के बारे में कारण के लिए एक विधि। यहाँ मैं इसके बारे में सोच रहा हूँ दो स्तर हैं:
- एक अन्य भाषा क्यू (प्रमेय साबित करने वाली क्षमताओं के साथ) जो एक पी-प्रोग्राम करती है। यह ऐसे बयानों को व्यक्त करने और साबित करने में सक्षम होना चाहिए जैसे "प्रोग्राम पी चलाने का परिणाम फू है।"
- एक प्रोग्राम पी: कार्यक्रम के बारे में तर्क करने का एक तरीका भाषा पी में ही होता है। (इसलिए हम ऊपर पी = क्यू ले रहे हैं।)
किस हद तक ऐसा कुछ लागू किया गया है, या इस दिशा में प्रगति क्या है? व्यावहारिक बाधाएं क्या हैं? प्रश्न के मूल इरादे के प्रकाश में, समस्या को औपचारिक रूप देने का सबसे अच्छा तरीका क्या है?
*
जैसा कि उत्तर दिखाते हैं (धन्यवाद!), दोनों (ए) और (बी 1) अलग-अलग किए जा सकते हैं, हालांकि ऐसा लगता है कि उन्हें एक साथ करना एक शोध प्रश्न से अधिक है।
यहाँ प्रश्न पर मेरे पहले विचार थे (चेतावनी: बल्कि अस्पष्ट)। मार्टिन बर्जर के जवाब पर मेरी टिप्पणियाँ भी देखें।
मैं प्रोग्रामिंग भाषा में रूचि रखता हूं , एक ही प्रोग्रामिंग भाषा को मॉडलिंग करता हूं , बजाय एक सरल (इसलिए पी = क्यू के ऊपर)। यह एक कार्यक्रम का "अवधारणा का प्रमाण" होगा जो अपने स्वयं के स्रोत कोड के बारे में "कारण" करने में सक्षम है। भरोसेमंद टाइप की गई प्रोग्रामिंग भाषाएं अपने कार्यों के आउटपुट के बारे में गारंटी दे सकती हैं, लेकिन यह "अपने स्वयं के कोड के बारे में तर्क" के रूप में नहीं गिनता है "किसी हैलो वर्ल्ड से अधिक!" एक भाषा में एक क्वीन के रूप में गिना जाता है जो स्वचालित रूप से एक नग्न स्ट्रिंग को प्रिंट करता है --- किसी प्रकार का उद्धरण / आत्म-संदर्भ होने की आवश्यकता है। यहाँ के एनालॉग में डेटाटाइप प्रोग्राम होने वाला है।
यह एक बड़ी परियोजना की तरह लगता है - भाषा जितनी सरल है, उतना ही मुश्किल यह है कि इसके भीतर सब कुछ व्यक्त किया जाए; भाषा जितनी जटिल होती है, भाषा को मॉडल बनाने के लिए उतना ही अधिक काम करना पड़ता है।
रिकर्सियन प्रमेय की भावना में, एक प्रोग्राम अपने स्वयं के स्रोत कोड को "प्राप्त" कर सकता है और इसे संशोधित कर सकता है (यानी, स्वयं का एक संशोधित संस्करण आउटपुट)। (बी 2) तो हमें बताता है कि कार्यक्रम को संशोधित कार्यक्रम के बारे में एक गारंटी व्यक्त करने में सक्षम होना चाहिए (यह पुनरावृत्ति करने में सक्षम होना चाहिए, अर्थात, यह भविष्य के सभी संशोधनों के बारे में कुछ व्यक्त करने में सक्षम होना चाहिए?)।