Momentan muss ich Coq lernen und weiß nicht, wie ich damit umgehen soll or
:
Als Beispiel, so einfach es ist, kann ich nicht beweisen:
Theorem T0: x \/ ~x.
Ich würde mich sehr freuen, wenn mir jemand helfen könnte.
Als Referenz verwende ich diesen Spickzettel .
Auch ein Beispiel für einen Beweis, an den ich denke: Hier für die doppelte Verneinung:
Require Import Classical_Prop.
Parameters x: Prop.
Theorem T7: (~~x) -> x.
intro H.
apply NNPP.
exact H.
Qed.
NNPP
's Typ istforall p:Prop, ~ ~ p -> p.
, also ist es Betrug, ihn zu benutzen, um zu beweisenT7
. Wenn Sie importieren, erhaltenClassical_Prop
SieAxiom classic : forall P:Prop, P \/ ~ P.
apply classic.
löst dein Ziel fürT0
.Antworten:
Sie können es in "Vanilla" Coq nicht beweisen, da es auf der intuitionistischen Logik basiert :
Es gibt verschiedene Möglichkeiten, mit einer solchen Situation umzugehen.
Führe das Gesetz der ausgeschlossenen Mitte als Axiom ein:
Nach diesem Punkt besteht keine Notwendigkeit mehr, irgendetwas zu beweisen.
Führen Sie ein Axiom ein, das dem Gesetz der ausgeschlossenen Mitte entspricht, und beweisen Sie deren Gleichwertigkeit. Hier sind nur einige Beispiele.
Doppelte Verneinung ist ein solches Axiom:
Peirces Gesetz ist ein weiteres Beispiel:
Oder verwenden Sie eines der Gesetze von De Morgan :
quelle
Axiom peirce
: Wie es aussieht , ist es nicht Peirces Gesetz (und ist in der Tattrivial
zu beweisen).Wie andere Ihnen mitgeteilt haben, ist Ihre Tautologie keine Tautologie, es sei denn, Sie gehen von klassischer Logik aus. Da Sie jedoch Tautologien zu entscheidenden Wahrheitswerten durchführen, können Sie
bool
stattdessen verwendenProp
. Dann gilt Ihre Tautologie:quelle