হাস্কেল, 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প্রাকৃতিক x ⋅ y প্রতিনিধিত্ব করে ।
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 , x ⋅ y ) = [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, ∀ x ∀ y [এস ( এক্স ) = এস ( ই )) 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, ∀ x ∀ y [ x ⋅ এস ( y ) = x ⋅ y + x ]) = [1, 0; 661072709, 644972544]
ম্যাট্রিক্স সহ একটি প্রমাণ [1, 0; একটি , খ ] যেতে পারে চেক করা শুধুমাত্র নীচের বাম দিকের কোণে দেওয়া একটি (বা অন্য কোন মান সর্বসম একটি মডিউল খ ); প্রমাণগুলির রচনা সক্ষম করার জন্য অন্যান্য মান রয়েছে।
উদাহরণস্বরূপ, এখানে একটি প্রমাণ রয়েছে যে সংযোজন কমিটিকেটিভ।
- এম (0, Γ ⊢ ∀ x ∀ y [ 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)]
যদি প্রমাণটি অবৈধ হয় তবে আপনি খালি তালিকাটি পেয়ে যাবেন।