Falsch prüfen mit negativen induktiven Typen in Coq

9

Im dritten Kapitel der CPDT wird kurz erläutert, warum negative induktive Typen in Coq verboten sind. Wenn wir

hätten %Vor%

Dann könnten wir einfach eine Funktion definieren

%Vor%

, so dass der Ausdruck uhoh (Abs uhoh) nicht terminierend wäre, mit dem "wir jeden Satz beweisen könnten".

Ich verstehe den Nicht-Beendigungsteil, aber ich verstehe nicht, wie wir damit etwas beweisen können. Wie würde man False mit term wie oben definiert beweisen?

    
user287393 05.07.2015, 01:17
quelle

1 Antwort

4

Durch das Lesen Ihrer Frage wurde mir klar, dass ich Adams Argument auch nicht ganz verstanden habe. Aber Inkonsistenz in diesem Fall ergibt sich recht leicht aus Cantors üblichem diagonalem Argument (einer endlosen Quelle von Paradoxen und Rätseln in Logik). Berücksichtigen Sie die folgenden Annahmen:

%Vor%

Dies ist eine generische Entwicklung, die mit dem in CPDT definierten term -Typ instanziiert werden könnte: T wäre term , x und y wären zwei Elemente von term , die wir testen können unterscheiden zwischen (zB App (Abs id) (Abs id) und Abs id ). Der entscheidende Punkt ist die letzte Annahme: Wir nehmen an, dass wir eine invertierbare Funktion g : (T -> T) -> T haben, die in Ihrem Beispiel Abs wäre. Mit dieser Funktion spielen wir den üblichen Diagonalisierungstrick: Wir definieren eine Funktion kaboom , die sich durch Konstruktion von jeder Funktion T -> T unterscheidet, einschließlich sich selbst. Daraus ergibt sich der Widerspruch.

    
Arthur Azevedo De Amorim 05.07.2015, 12:31
quelle