-set "baseuri" "cic:/matita/tests/".
-
inductive nat : Set \def
O : nat
| S : nat \to nat.
theorem test_inversion: \forall n. le n O \to n=O.
intros.
+ (* inversion begins *)
cut O=O.
(* goal 2: 0 = 0 *)
goal 7. reflexivity.
(* goal 1 *)
- generalize Hcut. (* non attaccata. Dovrebbe dare 0=0 -> n=0 *)
+ generalize Hcut.
apply (le_ind ? (\lambda x. O=x \to n=x) ? ? ? H).
- intro. reflexivity.
+ (* first goal (left open) *)
+ intro. rewrite right H1.
+ clear Hcut.
+ (* second goal (closed) *)
+ goal 14.
simplify. intros.
discriminate H3.
+ (* inversion ends *)
+ reflexivity.
qed.
(* Piu' semplice e non lascia l'ipotesi inutile Hcut *)
alias id "refl_equal" = "cic:/Coq/Init/Logic/eq.ind#xpointer(1/1/1)".
theorem test_inversion2: \forall n. le n O \to n=O.
intros.
+ (* inversion begins *)
generalize (refl_equal nat O).
apply (le_ind ? (\lambda x. O=x \to n=x) ? ? ? H).
- intro. reflexivity.
+ (* first goal (left open) *)
+ intro. rewrite right H1.
+ (* second goal (closed) *)
+ goal 13.
simplify. intros.
discriminate H3.
+ (* inversion ends *)
+ reflexivity.
qed.