এমন একটি প্রোগ্রাম লিখুন যার নিরপেক্ষতা পেরানো পাটিগণিত থেকে স্বতন্ত্র


29

চ্যালেঞ্জ

একটি প্রোগ্রাম পি লিখুন, কোন ইনপুট গ্রহণ, যেমন যে প্রতিজ্ঞা "পি সঞ্চালনের অবশেষে বন্ধ" হয় স্বাধীন এর Peano গাণিতিক

প্রথাগত নিয়ম

(আপনি যদি কোনও গাণিতিক লজিস্টিয়ান হন যিনি ভাবেন যে উপরের বর্ণনটি খুব অনানুষ্ঠানিক।)

এক, নীতিগতভাবে পারেন রূপান্তর কিছু ইউনিভার্সাল টুরিং মেশিন ইউ একটি মধ্যে (যেমন আপনার প্রিয় প্রোগ্রামিং ভাষা) Peano গাণিতিক সূত্র স্থগিত পরিবর্তনশীল উপর পি , যেখানে স্থগিত ( পি ) প্রতিজ্ঞা "এনকোড ইউ (প্রোগ্রামের উপর বন্ধ গোডেলের এনকোডেড দ্বারা) পি ”। চ্যালেঞ্জ খুঁজে পেতে পি যেমন যে তন্ন তন্ন স্থগিত ( পি ) কিংবা ¬HALT ( পি ) Peano গাণিতিক প্রমাণিত হতে পারে।

আপনি ধরে নিতে পারেন যে আপনার প্রোগ্রামটি সীমাহীন মেমরির সাথে একটি আদর্শ মেশিনে চলে এবং এটি অ্যাক্সেস করার জন্য যথেষ্ট বড় ইন্টিজার / পয়েন্টার রয়েছে।

উদাহরণ

এই জাতীয় প্রোগ্রামগুলির অস্তিত্ব দেখতে, একটি উদাহরণ হ'ল একটি প্রোগ্রাম যা পেনানো পাটিগণিত প্রমাণটি 0 = 1 এর সন্ধান করে পিয়ানো পাথের গাণিতিক প্রমাণ করে যে এই প্রোগ্রামটি যদি কেবল পেনো পাটিগণিতের সাথে সঙ্গতিহীন না হয় তবে এটি বন্ধ হয়ে যায়। যেহেতু পানো পাটিগণিত সামঞ্জস্যপূর্ণ তবে নিজস্ব ধারাবাহিকতা প্রমাণ করতে পারে না , তাই এই প্রোগ্রামটি থামবে কিনা তা সিদ্ধান্ত নিতে পারে না।

তবে, পিয়ানো পাটিগণিতের তুলনায় স্বতন্ত্র আরও অনেক প্রস্তাব রয়েছে যার ভিত্তিতে আপনি আপনার প্রোগ্রামটি বেস করতে পারেন।

প্রেরণা

এই চ্যালেঞ্জটি ইয়েদিদিয়া এবং অ্যারোনসন ( ২০১ 2016) দ্বারা একটি নতুন কাগজ দ্বারা অনুপ্রাণিত হয়েছিল 7,৯১--রাষ্ট্রীয় টুরিং মেশিনের প্রদর্শন করছে যার অবিচ্ছিন্নতা জেডএফসি থেকে স্বতন্ত্র , এটি পিয়ানো পাটিগণিতের চেয়ে আরও শক্তিশালী ব্যবস্থা। আপনি এর উদ্ধৃতিতে আগ্রহী হতে পারেন [২২]। এই চ্যালেঞ্জের জন্য অবশ্যই আপনি প্রকৃত টুরিং মেশিনের জায়গায় আপনার পছন্দসই প্রোগ্রামিংয়ের ভাষা ব্যবহার করতে পারেন।


6
(ক) প্রোগ্রামটি থামছে না, এবং (খ) প্রোগ্রামের অ-থামানো পিএ-তে অপ্রতিরোধ্য, তা প্রমাণের জন্য কোন অক্সিম সিস্টেম ব্যবহার করা যেতে পারে?
feersum

5
এই প্রশ্নের গাণিতিক যুক্তিতে প্রয়োজনীয় সমস্ত ব্যাকগ্রাউন্ড থাকা দরকার তা যুক্তিযুক্ত মনে করি না। এটির বেশ খানিকটা অংশ আছে এবং এখানে সম্পর্কিত তথ্যের লিঙ্ক রয়েছে। এটি উদ্বিগ্ন নয়, এটি কেবল একটি প্রযুক্তিগত বিষয়। আমি মনে করি যে এটি টিউরিং মেশিনের সাথে জড়িত অনুপ্রেরণার থেকে পৃথক কোডের প্রয়োজনীয়তার কথাটি জানাতে এবং বিশেষত গুডস্টাইনের থিওরেম ( সম্পর্কিত গল্ফ )
পেইনো

এটি বোঝার জন্য, আমাদের ধরে নিতে হবে কোডটি সীমাহীন মেমরির সাথে আদর্শ মেশিনে চলে। আমরা কি ধরে নিতে পারি যে মেশিনে নির্বিচারে বাস্তব নির্ভুলতা রয়েছে?
xnor

1
@ ফেয়ারসাম আমি (ক) এবং (খ) এর অজস্র প্রমাণের প্রত্যাশা করছি না। কেবল একটি প্রোগ্রাম লিখুন, এবং দাবিগুলি সত্য বলে নিশ্চিত করার জন্য পর্যাপ্ত বিবরণ / যুক্তি / উদ্ধৃতি প্রদান করুন যেমন আপনি অন্য যে কোনও চ্যালেঞ্জের সাথেই করেন। আপনার প্রয়োজনীয় যে কোনও স্ট্যান্ডার্ড স্বীকৃত অ্যালিকোম এবং উপপাদ্যের উপর নির্ভর করতে পারেন।
অ্যান্ডারস কাসেরগ 21

2
@xnor আপনি আনলিমিটেড মেমরি এবং আনবাউন্ড পয়েন্টারগুলির সাথে এটি অ্যাক্সেস করতে পারে ass তবে আমি মনে করি না যে যদি আপনার ভাষা প্রকৃতপক্ষে এটি সরবরাহ না করে তবে নির্বিচারে আসল নির্ভুলতা ধরে নেওয়া যুক্তিযুক্ত নয়; বেশিরভাগ ভাষায়, মত একটি প্রোগ্রাম x = 1.0; while (x) { x = x / 2.0; }আসলে খুব দ্রুত থামবে।
অ্যান্ডারস কাসরগ

উত্তর:


27

হাস্কেল, 838 বাইট

"আপনি যদি কিছু করতে চান, ..."

import Control.Monad.State
data T=V Int|T:$T|A(T->T)
g=guard
r=runStateT
s!a@(V i)=maybe a id$lookup i s
s!(a:$b)=(s!a):$(s!b)
s@((i,_):_)!A f=A(\a->((i+1,a):s)!f(V$i+1))
c l=do(m,k)<-(`divMod`sum(1<$l)).pred<$>get;g$m>=0;put m;l!!fromEnum k
i&a=V i:$a
i%t=(:$).(i&)<$>t<*>t
x i=c$[4%x i,5%x i,(6&)<$>x i]++map(pure.V)[7..i-1]
y i=c[A<$>z i,1%y i,(2&)<$>y i,3%x i]
z i=(\a e->[(i,e)]!a)<$>y(i+1)
(i?h)p=c[g$any(p#i)h,do q<-y i;i?h$q;i?h$1&q:$p,do f<-z i;a<-x i;g$p#i$f a;c[i?h$A f,do b<-x i;i?h$3&b:$a;i?h$f b],case p of A f->c[(i+1)?h$f$V i,do i?h$f$V 7;(i+1)?(f(V i):h)$f$6&V i];V 1:$q:$r->c[i?(q:h)$r,i?(2&r:h)$V 2:$q];_->mzero]
(V a#i)(V b)=a==b
((a:$b)#i)(c:$d)=(a#i)c&&(b#i)d
(A f#i)(A g)=f(V i)#(i+1)$g$V i
(_#_)_=0<0
main=print$(r(8?map fst(r(y 8)=<<[497,8269,56106533,12033,123263749,10049,661072709])$3&V 7:$(6&V 7))=<<[0..])!!0

ব্যাখ্যা

এই প্রোগ্রামটি সরাসরি 0 = 1 এর একটি পানো পাথের গাণিতিক প্রমাণের সন্ধান করে P যেহেতু পিএ ধারাবাহিক, তাই এই প্রোগ্রামটি কখনও শেষ হয় না; কিন্তু যেহেতু পিএ তার নিজস্ব ধারাবাহিকতা প্রমাণ করতে পারে না, তাই এই প্রোগ্রামের অবিরামকরণ PA এর থেকে স্বাধীন।

T এক্সপ্রেশন এবং প্রস্তাবের ধরণ:

  • A Position x [ P ( x )] প্রস্তাবটি উপস্থাপন করে ।
  • (V 1 :$ P) :$ Qপ্রতিজ্ঞা প্রতিনিধিত্ব করে পিপ্রশ্ন
  • V 2 :$ Pপ্রস্তাবটি উপস্থাপন করে ¬ পি
  • (V 3 :$ x) :$ yপ্রস্তাবটি x = y প্রতিনিধিত্ব করে ।
  • (V 4 :$ x) :$ yপ্রাকৃতিক x + y প্রতিনিধিত্ব করে ।
  • (V 5 :$ x) :$ yপ্রাকৃতিক xy প্রতিনিধিত্ব করে ।
  • V 6 :$ xপ্রাকৃতিক এস ( x ) = x + 1 উপস্থাপন করে।
  • V 7 প্রাকৃতিক 0 নিন্দা করে।

আই ফ্রি ভেরিয়েবলযুক্ত পরিবেশে আমরা 2 × 2 পূর্ণসংখ্যার ম্যাট্রিক্স হিসাবে এক্সপ্রেশন, প্রস্তাব এবং প্রমাণগুলি এনকোড করি [1, 0; , ] নিম্নরূপ:

  • এম ( আমি , ∀ এক্স [ পি ( এক্স )]) = [1, 0; 1, 4] ⋅ এম ( আই , λ এক্স [পি (এক্স)])
  • এম ( আই , λ এক্স [ এফ ( এক্স )]) = এম ( আই + ১, এফ ( এক্স )) যেখানে এম ( জে , এক্স ) = [1, 0; 5 + i , 4 + j ] সমস্ত j > i এর জন্য
  • এম ( আমি , পিকিউ ) = [1, 0; 2, 4] ⋅ এম ( আমি , পি ) ⋅ এম ( আই , কিউ )
  • এম ( আমি , ¬ পি ) = [1, 0; 3, 4] ⋅ এম ( আমি , পি )
  • এম ( আই , এক্স = ) = [1, 0; 4, 4] ⋅ এম ( আই , এক্স ) ⋅ এম ( আই , ওয়াই )
  • এম ( আই , এক্স + ) = [1, 0; 1, 4 + i ] ⋅ এম ( আই , এক্স ) ⋅ এম ( আই , ওয়াই )
  • এম ( i , xy ) = [1, 0; 2, 4 + i ] ⋅ এম ( আই , এক্স ) ⋅ এম ( আই , ওয়াই )
  • এম ( আই , এস এক্স ) = [1, 0; 3, 4 + i ] ⋅ এম ( আই , এক্স )
  • এম ( আমি , 0) = [1, 0; 4, 4 + i ]
  • এম ( আমি , ( Γ , পি ) ⊢ পি ) = [1, 0; 1, 4]
  • এম ( আমি , Γপি ) = [1, 0; 2, 4] ⋅ এম ( আই , কিউ ) ⋅ এম ( আই , Γকিউ ) ⋅ এম ( আই , Γকিউপি )
  • এম ( আমি , Γপি ( এক্স )) = [1, 0; 3, 4] ⋅ এম ( i , λ x [পি (এক্স))] ⋅ এম ( আই , এক্স ) ⋅ [1, 0; 1, 2] ⋅ এম ( আমি , Γ ⊢ ∀ এক্স পি (এক্স))
  • এম ( আমি , Γপি ( এক্স )) = [1, 0; 3, 4] ⋅ এম ( i , λ x [পি (এক্স))] ⋅ এম ( আই , এক্স ) ⋅ [1, 0; 2, 2] ⋅ এম ( i , y ) ⋅ এম ( i , Γy = x ) ⋅ এম ( i , Γপি ( y ))
  • এম ( আমি , Γ ⊢ ∀ এক্স , পি ( এক্স )) = [1, 0; 8, 8] ⋅ এম ( আমি , λ এক্স [ Γপি ( এক্স )])
  • এম ( আমি , Γ ⊢ ∀ এক্স , পি ( এক্স )) = [1, 0; 12, 8] ⋅ এম ( আমি , Γপি (0)) ⋅ এম ( আই , λ এক্স [( Γ , পি ( এক্স ))) ⊢ পি (এস ( এক্স ))])
  • এম ( আমি , Γপিকিউ ) = [1, 0; 8, 8] ⋅ এম ( আমি , ( Γ , পি ) ⊢ কিউ )
  • এম ( আমি , Γপিকিউ ) = [1, 0; 12, 8] ⋅ এম ( আমি , ( Γ , ¬ কিউ ) ⊢ ¬ পি )

বাকি অক্ষগুলি সংখ্যায় এনকোড করা হয় এবং প্রাথমিক পরিবেশে অন্তর্ভুক্ত থাকে Γ :

  • এম (0, ∀ x [ x = x ]) = [1, 0; 497, 400]
  • এম (0, ∀ x [¬ (এস ( এক্স ) = 0)]) = [1, 0; 8269, 8000]
  • এম (0, ∀ xy [এস ( এক্স ) = এস ( )) x = ইয় ]) = [1, 0; 56106533, 47775744]
  • এম (0, ∀ x [ এক্স + 0 = এক্স ]) = [1, 0; 12033, 10000]
  • এম (0, ∀ y [ এক্স + এস ( )) = এস ( এক্স + )]) = [1, 0; 123263749, 107495424]
  • এম (0, ∀ x [ x ⋅ 0 = 0]) = [1, 0; 10049, 10000]
  • এম (0, ∀ xy [ x ⋅ এস ( y ) = xy + x ]) = [1, 0; 661072709, 644972544]

ম্যাট্রিক্স সহ একটি প্রমাণ [1, 0; একটি , ] যেতে পারে চেক করা শুধুমাত্র নীচের বাম দিকের কোণে দেওয়া একটি (বা অন্য কোন মান সর্বসম একটি মডিউল ); প্রমাণগুলির রচনা সক্ষম করার জন্য অন্যান্য মান রয়েছে।

উদাহরণস্বরূপ, এখানে একটি প্রমাণ রয়েছে যে সংযোজন কমিটিকেটিভ।

  • এম (0, Γ ⊢ ∀ xy [ x + y = y + x]) = [1, 0; 6651439985424903472274778830412211286042729801174124932726010503641310445578492460637276210966154277204244776748283051731165114392766752978964153601068040044362776324924904132311711526476930755026298356469866717434090029353415862307981531900946916847172554628759434336793920402956876846292776619877110678804972343426850350512203833644, 14010499234317302152403198529613715336094817740448888109376168978138227692104106788277363562889534501599380268163213618740021570705080096139804941973102814335632180523847407060058534443254569282138051511292576687428837652027900127452656255880653718107444964680660904752950049505280000000000000000000000000000000000000000000000000000000]

আপনি প্রোগ্রাম সহ এটি যাচাই করতে পারেন:

*Main> let p = A $ \x -> A $ \y -> V 3 :$ (V 4 :$ x :$ y) :$ (V 4 :$ y :$ x)
*Main> let a = 6651439985424903472274778830412211286042729801174124932726010503641310445578492460637276210966154277204244776748283051731165114392766752978964153601068040044362776324924904132311711526476930755026298356469866717434090029353415862307981531900946916847172554628759434336793920402956876846292776619877110678804972343426850350512203833644
*Main> r(8?map fst(r(y 8)=<<[497,8269,56106533,12033,123263749,10049,661072709])$p)a :: [((),Integer)]
[((),0)]

যদি প্রমাণটি অবৈধ হয় তবে আপনি খালি তালিকাটি পেয়ে যাবেন।


1
ম্যাট্রিক্সের পিছনে ধারণাটি ব্যাখ্যা করুন।
গর্বিত হাসেলেলার

2
@ প্রফাসহেস্কিলার তারা সম্ভাব্য সমস্ত প্রমাণ গাছকে সংখ্যায়িত করে গুডেলের কেবল একটি সুবিধাজনক, অপেক্ষাকৃত কমপ্যাক্ট উপায়। আপনি এগুলিকে মিশ্র-রেডিক্স সংখ্যা হিসাবেও ভাবতে পারেন যা প্রতিটি ধাপে সম্ভাব্য পছন্দগুলির সংখ্যা দ্বারা ডিভ এবং মোড ব্যবহার করে সর্বনিম্ন-তাত্পর্যপূর্ণ দিক থেকে ডিকোড হয়।
অ্যান্ডারস কাসরগ

আপনি কীভাবে আনুষঙ্গিক অক্ষগুলি এনকোড করেছিলেন?
পাইরুলেজ

@ পাইরুলেজ এম (i, Γ ⊢ ∀x, পি (এক্স)) = [1, 0; 12, 8] ⋅ এম (i, Γ ⊢ পি (0)) ⋅ এম (i, [x [(Γ, পি (এক্স)) ⊢ পি (এস (এক্স))]) হ'ল আনয়ন আখরটি।
অ্যান্ডারস কাসের্গ

আমি মনে করি আপনি যদি এটির পরিবর্তে ক্যালকুলাস অফ কনস্ট্রাকশন ব্যবহার করেন তবে আপনি এটিকে আরও ছোট করে তুলতে পারেন (যেহেতু কনস্ট্রাকশনের ক্যালকুলাসে প্রথম অর্ডার যুক্তি যুক্ত রয়েছে, এবং এটি খুব ছোট)। কনস্ট্রাকশনের ক্যালকুলাস জেডএফসির মতো শক্তিশালী, তাই এর ধারাবাহিকতা অবশ্যই পিএ থেকে স্বতন্ত্র। এটির ধারাবাহিক কিনা তা পরীক্ষা করতে আপনি খালি ধরণের শব্দটি সন্ধান করেন।
পাইরুলেজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.