]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/coq-contribs/LAMBDA-TYPES/base_rewrite.v
contribution about \lambda-\delta
[helm.git] / helm / coq-contribs / LAMBDA-TYPES / base_rewrite.v
diff --git a/helm/coq-contribs/LAMBDA-TYPES/base_rewrite.v b/helm/coq-contribs/LAMBDA-TYPES/base_rewrite.v
new file mode 100644 (file)
index 0000000..68490ee
--- /dev/null
@@ -0,0 +1,76 @@
+(*#* #stop file *)
+
+Require Arith.
+
+      Tactic Definition Arith0 x :=
+         Replace (S x) with (plus (1) x); XAuto.
+
+      Tactic Definition Arith1 x :=
+         Replace x with (plus x (0)); [XAuto | Auto with arith].
+
+      Tactic Definition Arith1In H x :=
+         XReplaceIn H x '(plus x (0)).
+
+      Tactic Definition Arith2 x :=
+         Replace x with (plus (0) x); XAuto.
+
+      Tactic Definition Arith3 x :=
+         Replace (S x) with (S (plus (0) x)); XAuto.
+
+      Tactic Definition Arith3In H x :=
+         XReplaceIn H '(S x) '(S (plus (0) x)).
+
+      Tactic Definition Arith4 x y :=
+         Replace (S (plus x y)) with (plus (S x) y); XAuto.
+
+      Tactic Definition Arith4In H x y :=
+         XReplaceIn H '(S (plus x y)) '(plus (S x) y).
+
+      Tactic Definition Arith4c x y :=
+         Arith4 x y; Rewrite plus_sym.
+
+      Tactic Definition Arith5 x y :=
+         Replace (S (plus x y)) with (plus x (S y)); Auto with arith.
+
+      Tactic Definition Arith5In H x y :=
+         XReplaceIn H '(S (plus x y)) '(plus x (S y)); Auto with arith.
+
+      Tactic Definition Arith5' x y :=
+         Replace (plus x (S y)) with (S (plus x y)); Auto with arith.
+
+      Tactic Definition Arith5'In H x y :=
+         XReplaceIn H '(plus x (S y)) '(S (plus x y)); Auto with arith.
+
+      Tactic Definition Arith5'c x y :=
+         Arith5' x y; Rewrite plus_sym.
+
+      Tactic Definition Arith6In H x y :=
+         XReplaceIn H '(plus x (S y)) '(plus (1) (plus x y));
+         [ Idtac | Simpl; Auto with arith ].
+
+      Tactic Definition Arith7 x :=
+         Replace (S x) with (plus x (1));
+         [ Idtac | Rewrite plus_sym; Auto with arith ].
+
+      Tactic Definition Arith7In H x :=
+         XReplaceIn H '(S x) '(plus x (1)) ;
+         [ Idtac | Rewrite plus_sym; Auto with arith ].
+
+      Tactic Definition Arith7' x :=
+         Replace (plus x (1)) with (S x);
+         [ Idtac | Rewrite plus_sym; Auto with arith ].
+
+      Tactic Definition Arith8 x y :=
+         Replace x with (plus y (minus x y));
+         [ Idtac | Auto with arith ].
+
+      Tactic Definition Arith8' x y :=
+         Replace (plus y (minus x y)) with x;
+         [ Idtac | Auto with arith ].
+
+      Tactic Definition Arith9'In H x :=
+         XReplaceIn H '(S (plus x (0))) '(S x).
+
+      Tactic Definition Arith10 x :=
+         Replace x with (minus (S x) (1));
+         [ Idtac | Simpl; Rewrite <- minus_n_O; Auto with arith ].