Actuellement, je dois apprendre le Coq et je ne sais pas comment gérer un or
:
Par exemple, aussi simple soit-il, je ne vois pas comment prouver:
Theorem T0: x \/ ~x.
J'apprécierais vraiment, si quelqu'un pouvait m'aider.
Pour référence, j'utilise cette feuille de triche .
Voici également un exemple de preuve que j'ai en tête: ici pour la double négation:
Require Import Classical_Prop.
Parameters x: Prop.
Theorem T7: (~~x) -> x.
intro H.
apply NNPP.
exact H.
Qed.
NNPP
Le type estforall p:Prop, ~ ~ p -> p.
, donc c'est de la triche de l'utiliser pour prouverT7
. Lorsque vous importez,Classical_Prop
vous obtenezAxiom classic : forall P:Prop, P \/ ~ P.
apply classic.
résout votre objectifT0
.Réponses:
Vous ne pouvez pas le prouver dans Coq "vanille", car il est basé sur une logique intuitionniste :
Il existe plusieurs façons de gérer une situation comme celle-ci.
Introduire la loi du milieu exclu comme axiome:
Il n'est plus nécessaire de prouver quoi que ce soit après ce point.
Introduisez un axiome équivalent à la loi du milieu exclu et prouvez leur équivalence. Voici quelques exemples.
L'élimination de la double négation est l'un de ces axiomes:
La loi de Peirce est un autre exemple:
Ou utilisez l'une des lois de De Morgan :
la source
Axiom peirce
: en l'état, ce n'est pas la loi de Peirce (et c'est en faittrivial
à prouver).Comme d'autres vous l'ont informé, votre tautologie n'est pas une tautologie à moins que vous ne supposiez une logique classique. Mais puisque vous faites des tautologies sur des valeurs de vérité décidables, vous pouvez utiliser à la
bool
place deProp
. Ensuite, votre tautologie tient:la source