]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/contribs/RELATIONAL/NPlus/fwd.ma
- new tactic subst removes simple non recursive equalities from the context
[helm.git] / matita / contribs / RELATIONAL / NPlus / fwd.ma
index 9b23cb2fb3c3248d6904ac841a3da2424b0c6f17..b1f7f2ca303b92653a4adc47d87d607264b04fa4 100644 (file)
@@ -27,12 +27,12 @@ theorem nplus_gen_zero_1: \forall q,r. (zero + q == r) \to q = r.
 qed.
 
 theorem nplus_gen_succ_1: \forall p,q,r. ((succ p) + q == r) \to 
-                           \exists s. r = (succ s) \land (p + q == s).
+                          \exists s. r = (succ s) \land p + q == s.
  intros. elim H; clear H q r; intros;
  [
  | clear H1.
    decompose.
-   rewrite > H1. clear H1 n2
+   subst.
  ]; apply ex_intro; [| auto || auto ]. (**)
 qed.
 
@@ -45,45 +45,43 @@ theorem nplus_gen_zero_2: \forall p,r. (p + zero == r) \to p = r.
 qed.
 
 theorem nplus_gen_succ_2: \forall p,q,r. (p + (succ q) == r) \to 
-                           \exists s. r = (succ s) \land (p + q == s).
+                          \exists s. r = (succ s) \land p + q == s.
  intros. inversion H; clear H; intros;
  [ lapply eq_gen_succ_zero to H as H0. apply H0
  | clear H1 H3 r.
    lapply linear eq_gen_succ_succ to H2 as H0.
-   rewrite > H0. clear H0 q.
+   subst.
    apply ex_intro; [| auto ] (**)
  ].
 qed.
 
 theorem nplus_gen_zero_3: \forall p,q. (p + q == zero) \to 
-                           p = zero \land q = zero.
+                          p = zero \land q = zero.
  intros. inversion H; clear H; intros;
- [ rewrite < H1. clear H1 p.
-   auto
+ [ subst. auto
  | clear H H1.
    lapply eq_gen_zero_succ to H3 as H0. apply H0
  ].
 qed.
 
 theorem nplus_gen_succ_3: \forall p,q,r. (p + q == (succ r)) \to
-                           \exists s. p = succ s \land (s + q == r) \lor
-                                      q = succ s \land (p + s == r).
+                          \exists s. p = succ s \land (s + q == r) \lor
+                                     q = succ s \land p + s == r.
  intros. inversion H; clear H; intros;
- [ rewrite < H1. clear H1 p
+ [ subst.
  | clear H1.
    lapply linear eq_gen_succ_succ to H3 as H0.
-   rewrite > H0. clear H0 r.
+   subst.
  ]; apply ex_intro; [| auto || auto ] (**)
 qed.
 (*
 (* alternative proofs invoking nplus_gen_2 *)
 
 variant nplus_gen_zero_3_alt: \forall p,q. (p + q == zero) \to 
-                               p = zero \land q = zero.
+                              p = zero \land q = zero.
  intros 2. elim q; clear q; intros;
  [ lapply linear nplus_gen_zero_2 to H as H0.
-   rewrite > H0. clear H0 p.
-   auto
+   subst. auto
  | clear H.
    lapply linear nplus_gen_succ_2 to H1 as H0.
    decompose.
@@ -92,16 +90,16 @@ variant nplus_gen_zero_3_alt: \forall p,q. (p + q == zero) \to
 qed.
 
 variant nplus_gen_succ_3_alt: \forall p,q,r. (p + q == (succ r)) \to
-                               \exists s. p = succ s \land (s + q == r) \lor
-                                          q = succ s \land (p + s == r).
+                              \exists s. p = succ s \land (s + q == r) \lor
+                                         q = succ s \land p + s == r.
  intros 2. elim q; clear q; intros;
  [ lapply linear nplus_gen_zero_2 to H as H0.
-   rewrite > H0. clear H0 p
+   subst
  | clear H.
    lapply linear nplus_gen_succ_2 to H1 as H0.
    decompose.
    lapply linear eq_gen_succ_succ to H1 as H0.
-   rewrite > H0. clear H0 r.
+   subst
  ]; apply ex_intro; [| auto || auto ]. (**)
 qed.
 *)
@@ -110,21 +108,21 @@ qed.
 theorem nplus_gen_eq_2_3: \forall p,q. (p + q == q) \to p = zero.
  intros 2. elim q; clear q; intros;
  [ lapply linear nplus_gen_zero_2 to H as H0.
-   rewrite > H0. clear H0 p
+   subst
  | lapply linear nplus_gen_succ_2 to H1 as H0.
    decompose.
    lapply linear eq_gen_succ_succ to H2 as H0.
-   rewrite < H0 in H3. clear H0 a
+   subst
  ]; auto.
 qed.
 
 theorem nplus_gen_eq_1_3: \forall p,q. (p + q == p) \to q = zero.
  intros 1. elim p; clear p; intros;
  [ lapply linear nplus_gen_zero_1 to H as H0.
-   rewrite > H0. clear H0 q
+   subst
  | lapply linear nplus_gen_succ_1 to H1 as H0.
    decompose.
    lapply linear eq_gen_succ_succ to H2 as H0.
-   rewrite < H0 in H3. clear H0 a
+   subst
  ]; auto.
 qed.