Supposons que je veux prouver le théorème suivant:Comment mentira d'hypothèses contradictoires évidemment
Theorem succ_neq_zero : forall n m: nat, S n = m -> 0 = m -> False.
Celui-ci est trivial puisque m
ne peut pas être à la fois successeur et zéro, comme on le suppose. Cependant je l'ai trouvé assez difficile de le prouver, et je ne sais pas comment faire sans lemme auxiliaire:
Lemma succ_neq_zero_lemma : forall n : nat, O = S n -> False.
Proof.
intros.
inversion H.
Qed.
Theorem succ_neq_zero : forall n m: nat, S n = m -> 0 = m -> False.
Proof.
intros.
symmetry in H.
apply (succ_neq_zero_lemma n).
transitivity m.
assumption.
assumption.
Qed.
Je suis assez sûr qu'il ya une meilleure façon de le prouver. Quelle est la meilleure façon de le faire?
Ou un peu plus concis mais toujours explicite: 'intros n m H <-; distinguer H. (moins explicite 'intros; subst; discriminate.' fonctionne aussi). –