Das ist eine interessante Frage. Offensichtlich kann man nicht erwarten, dass es ein Programm gibt, das für jedes ob ∀ k T ( e , k ) gilt oder nicht, da dies das Halteproblem entscheiden würde. Wie bereits erwähnt, gibt es verschiedene Möglichkeiten, Beweise rechnerisch zu interpretieren: Erweiterungen von Curry-Howard, Realisierbarkeit, Dialektik und so weiter. Aber sie alle würden den Satz, den Sie mehr oder weniger erwähnt haben, wie folgt rechnerisch interpretieren.e∀kT(e,k)
Der Einfachheit halber sei der äquivalente klassische Satz betrachtet
(1) ∃i∀j(¬T(e,j)→¬T(e,i))
Dies ist (konstruktiv) äquivalent zu dem genannten, weil wir bei gegebenem entscheiden können, ob ∀ k T ( e , k ) gilt oder nicht, indem wir einfach den Wert von ¬ T ( e , i ) überprüfen . Wenn ¬ T ( e , i ) hält dann ∃ i ¬ T ( e , i ) und damit ¬ ∀ i T ( e , i ) . Wenn andererseitsi∀kT(e,k)¬T(e,i)¬T(e,i)∃i¬T(e,i)¬∀iT(e,i) gilt dann nicht zu (1) wir haben ∀ j ( ¬ T ( e , j ) → ⊥ ) was impl j T ( e , j ) impliziert.¬T(e,i)∀j(¬T(e,j)→⊥)∀jT(e,j)
Nun können wir wieder in (1) nicht für jedes gegebene e berechnen, weil wir das Halteproblem erneut lösen würden. Was alle oben erwähnten Interpretationen tun würden, wäre, den äquivalenten Satz zu betrachtenie
(2) ∀f∃i′(¬T(e,f(i′))→¬T(e,i′))
Die Funktion heißt Herbrand-Funktion. Es wird versucht, ein Gegenbeispiel j für jeden gegebenen potentiellen Zeugen i zu berechnen . Es ist klar, dass (1) und (2) äquivalent sind. Von links nach rechts ist dies konstruktiv. Nehmen Sie einfach i ' = i in (2), wobei i der angenommene Zeuge von (1) ist. Von rechts nach links muss man klassisch argumentieren. Angenommen, (1) war nicht wahr. Dann,fjii′=ii
(3) ∀ i ∃ j ¬ ( ¬ T( e , j ) → ¬ T( E , i ) )
Sei eine Funktion, die dies bezeugt, df′
(4) ∀ i ¬ ( ¬ T( e , f′( i ) ) → ¬ T( E , i ) )
Nehmen wir nun in (2) und wir haben ( ¬ T ( e , f ' ( i ' ) ) → ¬ T ( e , i ' ) ) für einige i ' . Aber wenn wir in (4) i = i 'nehmen, erhalten wir die Negation dieses Widerspruchs. Daher impliziert (2) (1).f= f′(¬T(e,f′(i′))→¬T(e,i′))i′i=i′
Wir haben also, dass (1) und (2) klassisch äquivalent sind. Aber das Interessante ist, dass (2) jetzt ein sehr einfaches konstruktives Zeugnis hat. Nehmen Sie einfach wenn T ( e , f ( 0 ) ) nicht gilt, weil dann die Schlussfolgerung von (2) wahr ist; oder sonst nehme i ′ = 0 wenn T ( e , f ( 0 ) ) gilt, weil dann ¬ T ( e , f ( 0 )i′=f(0)T(e,f(0))i′=0T(e,f(0)) gilt nicht und die Prämisse von (2) ist falsch, was es wieder wahr macht.¬T(e,f(0))
Die Möglichkeit, einen klassischen Satz wie (1) rechnerisch zu interpretieren, besteht daher darin, eine (klassisch) äquivalente Formulierung zu betrachten, die in unserem Fall (2) konstruktiv bewiesen werden kann.
Die oben genannten unterschiedlichen Interpretationen unterscheiden sich nur in der Art und Weise, in der die Funktion aufgerufen wird. Im Falle der Realisierbarkeit und der dialektischen Interpretation wird dies durch die Interpretation in Kombination mit irgendeiner Form von negativer Übersetzung (wie bei Goedel-Gentzen) ausdrücklich angegeben. Bei Curry-Howard-Erweiterungen mit call-cc- und continuation-Operatoren ergibt sich die Funktion f aus der Tatsache, dass das Programm "wissen" darf, wie ein bestimmter Wert (in unserem Fall i ) verwendet wird, also f die Fortsetzung des Programms um den Punkt, an dem ich berechnet wird.ffifi
Ein weiterer wichtiger Punkt ist, dass die Passage von (1) zu (2) "modular" sein soll, dh wenn (1) zum Beweisen von (1 ') verwendet wird, sollte dessen Interpretation (2) auf ähnliche Weise verwendet werden um die Interpretation von (1 ') zu beweisen, sagen wir (2'). Dies gilt für alle oben genannten Auslegungen, einschließlich der negativen Übersetzung von Goedel-Gentzen.