]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/matita/tests/inversion.ma
version 0.7.1
[helm.git] / helm / matita / tests / inversion.ma
index 9c56069b234bc1aa063c2c04b560bf45aecde005..c76851f59fa8dd1240d87fdb04d8072a5544ba5f 100644 (file)
@@ -1,4 +1,4 @@
-set "baseuri" "cic:/matita/tests/".
+set "baseuri" "cic:/matita/tests/inversion/".
 
 inductive nat : Set \def
    O : nat
@@ -12,24 +12,37 @@ alias symbol "eq" (instance 0) = "leibnitz's equality".
 
 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 in match Hcut.
   apply (le_ind ? (\lambda x. O=x \to n=x) ? ? ? H).
-  intro. reflexivity.
+  (* first goal (left open) *)
+  intro. rewrite < 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.
- generalize (refl_equal nat O).
+ (* inversion begins *)
+ generalize in match (refl_equal nat O).
  apply (le_ind ? (\lambda x. O=x \to n=x) ? ? ? H).
- intro. reflexivity.
+ (* first goal (left open) *)
+ intro. rewrite < H1.
+ (* second goal (closed) *)
+ goal 13.
  simplify. intros.
  discriminate H3.
+ (* inversion ends *)
+ reflexivity.
 qed.