Nonterminasyonu Peano aritmetiğinden bağımsız bir program yaz.


29

Meydan okuma

Bir program P yaz hiçbir girdi alarak önerme “P yürütülmesi sonunda sona erer” Böyle olmasıdır bağımsız bir Peano aritmetik .

Resmi kurallar

(Yukarıdaki açıklamanın gayri resmi olduğunu düşünen matematiksel bir mantıkçıysanız)

Bir, ilke olarak, olabilir dönüştürmek bazı Evrensel Turing makinesi U bir içine (örneğin sevdiğiniz programlama dili) Peano aritmetik değişken üzerinde formül HALT p HALT ( p ) önermeyi “kodlar U programı sonlandırır ( Gödel kodlanmış tarafından) p ”. Buradaki zorluk p'yi , ne HALT ( p ) ne de ¬HALT ( p ) 'nin Peano aritmetiğinde kanıtlanamayacağı şekilde bulmaktır .

Programınızın sınırsız hafızaya ve erişebilecek kadar büyük tam sayılara / işaretçilere sahip ideal bir makinede çalıştığını varsayabilirsiniz.

Örnek

Bu tür programların var olduğunu görmek için, bir örnek, 0 = 1 değerinde Peano aritmetik kanıtını ayrıntılı olarak arayan bir programdır. Peano aritmetik yana tutarlıdır ancak kendi tutarlılığını ispat edemez , bu programın alıkoymalarla karar olamaz.

Ancak, Peano aritmetiğinden bağımsız olarak, programınızı temel alabileceğiniz birçok öneri var.

Motivasyon

Bu sorun, yeni esinlenerek Yedidia ve Aaronson (2016) tarafından kağıt olan nontermination bağımsız bir 7.918 durumlu Turing makinesi sergileyen ZFC , Peano aritmetik çok daha güçlü bir sistem. Alıntıyla ilgilenebilirsin [22]. Bu zorluk için, tabii ki, gerçek Turing makineleri yerine, seçtiğiniz programlama dilini kullanabilirsiniz.


6
(A) programın durmadığını ve (b) programın durmasının PA'da kanıtlanamadığını kanıtlamak için hangi aksiyom sistemleri kullanılabilir?
feersum,

5
Bu sorunun matematiksel mantıkta ihtiyaç duyulan tüm geçmişleri içermesini talep etmenin makul olduğunu sanmıyorum. Oldukça bir kısmı var ve ilgili bilgilere bağlantılar var. Bu karışık değil, sadece teknik bir konu. Şifrenin özellikle dikkate Peano bağımsız tabloların bazı örneğe Turing makineleri ve bağlantı içeren motivasyon ayrı erişilebilirlik gereksinimi belirtmek için yardımcı olacağını düşünüyorum Goodstein'e Teorem ( ilgili golf )
XNOR

Bunun anlaşılması için, kodun idealize edilmiş makinede sınırsız bellekle çalıştığını varsaymamız gerekir. Ayrıca makinenin keyfi gerçek hassasiyete sahip olduğunu varsayabilir miyiz?
xnor

1
@feersum (a) ve (b) 'nin aksiyomatik bir kanıtını beklemiyorum. Sadece bir program yazın ve iddiaların doğru olup olmadığına, diğer tüm zorluklarda olduğu gibi makul şekilde ikna etmek için yeterli açıklama / argümanlar / alıntılar sağlayın. İhtiyacınız olan standart olarak kabul edilmiş aksiyom ve teoremlere güvenebilirsiniz.
Anders Kaseorg

2
@xnor Sınırsız bellek ve buna erişmek için sınırsız işaretçiler alabilir. Ancak, dilinizi sağlamadığı sürece, keyfi olarak gerçek bir hassasiyet üstlenmenin makul olduğunu sanmıyorum; birçok dilde, gibi bir program x = 1.0; while (x) { x = x / 2.0; }aslında çok hızlı bir şekilde durur.
Anders Kaseorg

Yanıtlar:


27

Haskell, 838 bayt

“Bir şey yapılmasını istiyorsan…”

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

açıklama

Bu program doğrudan P = 0 aritmetik kanıtı arar: 1 = PA tutarlı olduğundan, bu program hiçbir zaman sona ermez; Ancak ÖİB kendi tutarlılığını kanıtlayamadığından, bu programın uygulanamaması ÖİB'den bağımsızdır.

T İfadelerin ve önermelerin türü:

  • A Px [ P ( x )] önermesini temsil eder .
  • (V 1 :$ P) :$ QPQ önermesini temsil eder .
  • V 2 :$ Pönerme ¬ temsil P .
  • (V 3 :$ x) :$ yx = y önermesini temsil eder .
  • (V 4 :$ x) :$ ydoğal x + y'yi temsil eder .
  • (V 5 :$ x) :$ yDoğal temsil xy .
  • V 6 :$ xdoğal S ( x ) = x + 1'i temsil eder .
  • V 7 doğal 0 değerini değiştirir.

Olan bir ortamda i serbest değişkenler, biz 2 × 2 tam sayı matrisleri [1, 0 olarak ifadeleri, önermeler ve deliller kodlar; a , b ], aşağıdaki gibidir:

  • M ( i , ∀ x [ P ( x )]) = [1, 0; 1,4] ⋅ M ( i , λ x [P (x)])
  • M ( i , x x [ F ( x )]) = M ( i + 1, F ( x )) ki burada M ( j , x ) = [1, 0; 5 + i , 4 + j ] hepsi için j > i
  • M ( i , PQ ) = [1, 0; 2, 4] ⋅ M ( i , P ) ⋅ M ( i , Q )
  • M ( i , ¬ P ) = [1, 0; 3, 4] ⋅ M ( i , P )
  • M ( i , x = y ) = [1, 0; 4, 4] ⋅ M ( i , x ) ⋅ M ( i , y )
  • M ( i , x + y ) = [1, 0; 1, 4 + i ] ⋅ M ( i , x ) ⋅ M ( i , y )
  • M ( i , xy ) = [1, 0; 2, 4 + i ] ⋅ M ( i , x ) ⋅ M ( i , y )
  • M ( i , Sx ) = [1, 0; 3, 4 + i ] ⋅ M ( i , x )
  • M ( i , 0) = [1, 0; 4, 4 + i ]
  • M ( i , ( Γ , P ) ⊢ P ) = [1, 0; 1, 4]
  • M ( i , y olanP ) = [1, 0; 2, 4] ⋅ M ( i , Q ) ⋅ M ( i , ΓQ ) ⋅ M ( i , ΓQP )
  • M ( i , y olanp ( x )) = [1, 0; 3,4] ⋅ M ( i , λ x [P (x)]) ⋅ M ( i , x ) ⋅ [1, 0; 1, 2] ⋅ M ( i , Γ ⊢ ∀ x P (x))
  • M ( i , y olanp ( x )) = [1, 0; 3,4] ⋅ M ( i , λ x [P (x)]) ⋅ M ( i , x ) ⋅ [1, 0; 2, 2] ⋅ M ( i , y ) ⋅ M ( i , Γy = x ) ⋅ M ( i , ΓP ( y ))
  • M ( i , Γ ⊢ ∀ x , P ( x )) = [1, 0; 8, 8] ⋅ M ( i , λ x [ ΓP ( x )])
  • M ( i , Γ ⊢ ∀ x , P ( x )) = [1, 0; 12, 8] ⋅ M ( I , ΓP (0)) ⋅ M ( I , λ x [( Γ , P ( x )) ⊢ P (S ( x ))])
  • M ( i , y olanPS ) = [1, 0; 8, 8] ⋅ M ( i , ( Γ , P ) ⊢ Q )
  • M ( i , y olanPS ) = [1, 0; 12, 8] ⋅ M ( i , ( Γ , ¬ Q ) ⊢ ¬ P )

Kalan aksiyomlar sayısal olarak kodlanır ve ilk ortama Γ dahil edilir :

  • M (0, ∀ x [ x = x ]) = [1, 0; 497, 400]
  • M (0, ∀ x [¬ (S ( x ) = 0)]) = [1, 0; 8269, 8000]
  • M (0, ∀ xy [S ( x ) = S ( y ) → x = y ]) = [1, 0; 56106533, 47775744]
  • M (0, ∀ x [ x + 0 = x ]) = [1, 0; 12033, 10000]
  • M (0, ∀ y [ x + S ( y ) = S ( x + y )]) = [1, 0; 123263749, 107495424]
  • M (0, ∀ x [ x ⋅ 0 = 0]) = [1, 0; 10049, 10000]
  • M (0, ∀ xy [ x ⋅ S ( y ) = xy + x ]) = [1, 0; 661072709, 644972544]

Matrisli bir ispat [1, 0; a , b ] sadece sol alt köşeye a (veya bir modulo b ile uyumlu herhangi bir diğer değer ) kontrol edilebilir; diğer değerler provaların kompozisyonunu mümkün kılmak için vardır.

Örneğin, burada eklemenin değişmeli olduğuna dair bir kanıt.

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

Programla aşağıdaki gibi doğrulayabilirsiniz:

*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)]

Kanıt geçersizse, bunun yerine boş listeyi alırsınız.


1
Lütfen matrislerin arkasındaki fikri açıklayınız.
Gurur haskeller

2
@proudhaskeller Onlar tüm olası prova ağaçlarını numaralandırmak için Gödel'in kullanışlı, nispeten kompakt bir yoludur. Bunları ayrıca, her adımda olası seçeneklerin sayısına göre div ve mod kullanarak en az anlamlı taraftan çözülen karışık yarıçaplı sayılar olarak düşünebilirsiniz.
Anders Kaseorg,

İndüksiyon aksiyomlarını nasıl kodladınız?
PyRulez

PyRulez M (i, Γ ∀ ∀ x, P (x)) = [1, 0; 12, 8] ⋅ M (i, ⊢ P (0)) ⋅ M (i, λx [(P, P (x)) ⊢ P (S (x))]) indüksiyon aksiyomudur.
Anders Kaseorg

Bunun yerine Calculus of Constructions kullanıyorsanız bunu daha küçük yapabileceğinizi düşünüyorum (çünkü Calculus of Constructions birinci dereceden bir mantık yerleşik ve çok küçük olduğundan). Yapıların Hesabı, ZFC kadar güçlüdür, bu nedenle tutarlılığı kesinlikle PA'dan bağımsızdır. Tutarlı olup olmadığını kontrol etmek için sadece boş bir terim arayın.
PyRulez
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.