Ich habe die " Fünf Stufen der Akzeptanz der Konstruktiven Mathematik " von Andrej Bauer gesehen und er sagt, dass es zwei Arten von Beweisen durch Widerspruch gibt (oder zwei Dinge, die Mathematiker Beweise durch Widerspruch nennen):
- Angenommen, ist falsch ... bla bla bla, Widerspruch. Daher ist wahr.P
- Angenommen, ist wahr ... bla bla bla, Widerspruch. Daher ist falsch.P
Das erste ist äquivalent zum Gesetz der ausgeschlossenen Mitte (LEM) und das zweite ist, wie Negation zu beweisen ist.
Der Beweis der Unentscheidbarkeit des Halteproblems (HP) ist ein Beweis durch Widerspruch: Nehmen wir an, es gibt eine Maschine , die über die HP entscheiden kann ... bla bla bla, Widerspruch. Daher existiert nicht.D
Also sei " existiert und kann die HP bestimmen". Angenommen, ist wahr ... bla bla bla, Widerspruch. Daher ist falsch.D P P
Dies scheint die zweite Art von Widerspruchsbeweis zu sein, ist es also möglich, die Unentscheidbarkeit des Halteproblems in Coq zu beweisen (ohne die Annahme von LEM)?
EDIT: Ich würde gerne einige Punkte sehen, um dies mit Widerspruch zu beweisen. Ich weiß, dass dies auch durch Diagonalisierung nachgewiesen werden kann.
quelle
Antworten:
Sie haben genau Recht, dass das Stopp-Problem ein Beispiel für die zweite Art von "Beweis durch Widerspruch" ist - es ist wirklich nur eine negative Aussage.
Angenommen, es
decides_halt(M)
handelt sich um ein Prädikat, das besagt, dass die MaschineM
entscheidet, ob ihre Eingabe eine Maschine ist, die anhält (dhM
ein Programm, das für einige Maschinenm
und Eingabeni
entscheidet, ob siem
bei der Eingabe anhälti
).Das Problem des Anhaltens ist die Aussage, dass es keine Maschine gibt, die über das Problem des Anhaltens entscheidet. Wir könnten dies in Coq als
(exists M, decides_halt M) -> False
angeben, oder vielleicht möchten wir lieber sagen, dass eine bestimmte Maschine das Problem des Anhaltens nicht löstforall M, decides_halt M -> False
. Es stellt sich heraus, dass diese beiden Formalisierungen ohne Axiome in Coq äquivalent sind. (Ich habe den Beweis formuliert, damit Sie sehen können, wie es funktioniert, aberfirstorder
ich werde das Ganze machen!)Ich denke, dass beide Aussagen nicht allzu schwierig als Diagonalisierungsargument zu beweisen sind, obwohl die Formalisierung von Maschinen, die Berechenbarkeit und das Anhalten wahrscheinlich eine angemessene Herausforderung darstellen. Für ein einfacheres Beispiel ist es nicht allzu schwer Cantors diagonalization Theorem (siehe zu beweisen https://github.com/bmsherman/finite/blob/master/Iso.v#L277-L291 für einen Beweis dafür , dass
nat -> nat
undnat
ist nicht isomorph).Die obige Diagonalisierung gibt ein Beispiel dafür, wie Sie einen Widerspruch aus einem Isomorphismus zwischen
nat -> nat
und ableiten könnennat
. Hier ist das Wesentliche dieses Beweises, der als eigenständiges Beispiel angeführt wird:Auch ohne die Details zu betrachten, können wir aus der Aussage ersehen, dass dieser Beweis die bloße Existenz einer Bijektion annimmt und zeigt, dass es unmöglich ist. Zuerst geben wir den beiden Seiten der Bijektion die Namen
seq
undindex
. Der Schlüssel ist, dass das Verhalten der Bijektion bei der speziellen Sequenzf := fun n => S (seq n n)
und ihrem Indexindex f
widersprüchlich ist. Der Beweis des Halteproblems würde auf ähnliche Weise einen Widerspruch herleiten und seine Hypothese über eine Maschine aufstellen, die das Halteproblem mit einer sorgfältig ausgewählten Maschine löst (und insbesondere eine, die tatsächlich von der angenommenen Maschine abhängt).quelle