- Peano arithmetic (PA) यांत्रिक गणना प्रक्रिया को व्यक्त कर सकता है, इसलिए PA में हर एकल Goodstein sequence के समाप्त होने को सिद्ध किया जा सकता है
- Cantor normal form और hereditary base notation के माध्यम से Goodstein sequence और उसके अवरोही स्वभाव आदि को व्यक्त किया जाता है, और इसके कारण सीमित लंबाई का proof construction संभव होता है
- Induction (strong induction / transfinite induction) के माध्यम से किसी विशेष degree के ordinal तक proofs को क्रमशः विस्तारित किया जा सकता है
- PA हर natural number n के लिए “G(n) 0 तक पहुँचता है” को सिद्ध कर सकता है, लेकिन पूरे Goodstein theorem (सभी n) का समग्र proof संभव नहीं है
- PA के साथ calculation, data structure (List, Pair आदि), यहाँ तक कि programming language (Lisp) स्वयं का encoding और अपने ही proof process का encoding भी पर्याप्त रूप से लागू किया जा सकता है
परिचय और समस्या की पृष्ठभूमि
- यह लेख बताता है कि Peano arithmetic (PA) Goodstein sequence के “हर n के लिए 0 तक पहुँचना (G(n) terminates)” को सिद्ध कर सकता है
- यह तर्कशास्त्रियों को स्वयंसिद्ध लग सकता है, लेकिन प्रोग्रामर समझ सकें इसलिए इसे computation encoding के दृष्टिकोण से समझाया गया है
- Goodstein sequence के हर मामले के लिए PA के भीतर ठोस proof routine बनाई जा सकती है
Ordinals (क्रमसूचक संख्याएँ) और Goodstein sequence
- Von Neumann पद्धति से ordinals (Sets as Ordinals) बनाए जाते हैं
- 0 शून्य समुच्चय है, 1 = {0}, 2 = {0,1}, ω = {0,1,2,…}, ω+1 = {0,1,2,…,ω} आदि, और क्रम अच्छी तरह परिभाषित होता है
- Goodstein sequence को Cantor normal form का उपयोग करने वाली hereditary base notation से वर्णित किया जाता है
- उदाहरण: ω^ω है ((1,ω)), अर्थात ((1,(1,1)))
- < क्रम का निर्णय हर पद के exponent/coefficient पर lexicographic comparison से किया जाता है
Induction और transfinite induction
- Peano arithmetic का induction: यदि 0 के लिए सत्य है, और n→n+1 के लिए सत्य है, तो यह सभी natural numbers पर सत्य है
- Strong induction भी PA में सिद्ध किया जा सकता है
- Transfinite induction: ZFC आदि में इसे infinite ordinals तक विस्तारित किया जा सकता है, और Cantor normal form में लिखी संख्याओं पर लागू किया जा सकता है
- Theorem 1: Cantor normal form के भीतर अवरोही sequence हमेशा सीमित होती है
- Theorem 2: Cantor normal form संख्याओं पर transfinite induction का उपयोग संभव है
PA में transfinite induction और Goodstein sequence proof की लंबाई
- PA किसी भी n के लिए Goodstein sequence के समाप्ति-प्रमाण का निर्माण कर सकता है
- Cantor normal form की tower height m=O(log* n) (iterated log) के अनुसार proof बनाया जा सकता है
- हर चरण में m proofs को जोड़कर कुल proof length O(m^2) बनती है, या विशेष notation (ω[m]) लाने पर इसे O(m log m) तक घटाया जा सकता है
- लेकिन पूरे Goodstein theorem (सभी n) का proof PA में असंभव है (ε0 के लिए transfinite induction संभव नहीं)
- यदि यह संभव होता, तो PA की consistency भी सिद्ध की जा सकती, जो Gödel की second incompleteness theorem से टकराती
PA में program और data structure का encoding
- PA computation/program/data structure (संख्याएँ, जोड़े, सूची, और अन्य सभी संरचनाएँ) को पर्याप्त रूप से encode कर सकता है
- निम्न जैसे तरीकों से विभिन्न कार्य लागू किए जा सकते हैं:
- आधारभूत logic और operations (+, *, pow, //, %, min, max आदि)
- pattern matching और conditional branching (
if, cond आदि)
- एक संख्या को दो संख्याओं (pair) के रूप में encode करना, या pair से फिर list जैसी अधिक जटिल संरचनाओं तक बार-बार विस्तार करना (recursive list, tree, text आदि)
- इन data structure encodings के जरिए किसी भी virtual machine/programming language (जैसे Lisp) interpreter तक बनाया जा सकता है
Lisp में bootstrap और encoding
- Lisp को उदाहरण बनाकर, आधारभूत numeric और logical operations, data structures, programming language interpreter लागू करने के तरीके समझाए गए हैं
- Lisp की संरचना (command/argument mapping, special forms, macro आदि) सब PA में उपयुक्त function combinations से लागू की जा सकती है
- इससे आगे PA के भीतर PA का proof process, logical proof procedure, self-referential structure तक सब प्रतीकात्मक रूप से encode और लागू किए जा सकते हैं
PA के भीतर स्वयं logic का encoding
- mathematical logic में first-order logic की proof process को PA की संख्याओं के data के रूप में encode किया जा सकता है
- हर proof step/proposition/inference rule/valid proof check को संख्यात्मक functions/list processing की श्रृंखला के रूप में पहचाना और संसाधित किया जा सकता है
- ऐसा meta-level, self-referential encoding Gödel की incompleteness और Halting problem के proofs तक जुड़ता है
निष्कर्ष
- Computation, data structures, programs, यहाँ तक कि logical proof process भी PA में पर्याप्त रूप से encode, prove और interpret किए जा सकते हैं
- इसलिए किसी भी Goodstein sequence (n के लिए G(n) का समाप्त होना) को PA के भीतर ठोस रूप से सिद्ध किया जा सकता है
- लेकिन पूरे Goodstein theorem (सभी n) के लिए "PA, PA के भीतर Goodstein theorem को सिद्ध करता है" जैसा proof तर्कशास्त्र की सीमाओं के कारण असंभव है
- प्रोग्रामर के दृष्टिकोण से PA गणना स्वयं को encode कर सकने वाला एक पूर्ण logical foundation है
1 टिप्पणियां
Hacker News टिप्पणी
defun not (x) (if x false true)उदाहरण देखें)। जैसे ही कोई parentheses इस्तेमाल करना शुरू करता है, मैं सहज ही देखता हूँ कि वे सही तरह से बंद हुए हैं या नहीं। बाद में जब यह लिखा देखा कि "parentheses संतुलित हैं या नहीं, यह कंप्यूटर से प्रोग्राम कराना आसान है", तो मैं ज़ोर से हँस पड़ा। ऐसा मज़ाक सच में बहुत मज़ेदार था, और "Basic Number Theory" सेक्शन में; After a while, you stop noticing that stack of closing parens.वाली टिप्पणी भी यादगार लगी। काफ़ी समय बाद फिर से Lisp से सामना हुआ, और लेख सच में बहुत मज़ेदार था।\omegaलिखना भूल गए हैं।forall n, G(n)" की नहीं बल्कि "PA provesforall n, Provable(G(n))" की है। मैं logic में बहुत मज़बूत नहीं हूँ, इसलिए अगर कोई ठोस रूप से समझा सके किforall n, Provable(P(n))को सिद्ध करने सेProvable(forall n, P(n))क्यों सिद्ध नहीं होता, तो आभारी रहूँगा।will-return,opposite-returnजैसे functions भी बनाए जा सकते हैं, और यह halting problem के मानक proof से मेल खाता है।opposite-return(opposite-return, opposite-return)वाले मामले पर सोचें: अगर PA सिद्ध करे किopposite-returnreturn करता है, तो यह भी सिद्ध होगा कि वह वास्तव में return नहीं करता; और अगर सिद्ध करे कि वह return नहीं करता, तो यह सिद्ध होगा कि वह return करता है। अगर PA यह जैसी कोई और मज़बूत बात मान ले कि "जो सिद्ध करने योग्य है वह वास्तव में सिद्ध है", तो यह सीधे Gödel के second incompleteness theorem की दिशा में जाता है, यानी PA inconsistent हो जाएगा। इसलिए सिर्फ़ "PA proves" और "PA proves that it proves" के बीच का अंतर बनाए रखना ज़रूरी है।