summaryrefslogtreecommitdiff
path: root/contrib/ring/ZArithRing.v
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ring/ZArithRing.v')
-rw-r--r--contrib/ring/ZArithRing.v36
1 files changed, 36 insertions, 0 deletions
diff --git a/contrib/ring/ZArithRing.v b/contrib/ring/ZArithRing.v
new file mode 100644
index 00000000..c511c076
--- /dev/null
+++ b/contrib/ring/ZArithRing.v
@@ -0,0 +1,36 @@
+(************************************************************************)
+(* v * The Coq Proof Assistant / The Coq Development Team *)
+(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
+(* \VV/ **************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(************************************************************************)
+
+(* $Id: ZArithRing.v,v 1.5.2.1 2004/07/16 19:30:13 herbelin Exp $ *)
+
+(* Instantiation of the Ring tactic for the binary integers of ZArith *)
+
+Require Export ArithRing.
+Require Export ZArith_base.
+Require Import Eqdep_dec.
+
+Definition Zeq (x y:Z) :=
+ match (x ?= y)%Z with
+ | Datatypes.Eq => true
+ | _ => false
+ end.
+
+Lemma Zeq_prop : forall x y:Z, Is_true (Zeq x y) -> x = y.
+ intros x y H; unfold Zeq in H.
+ apply Zcompare_Eq_eq.
+ destruct (x ?= y)%Z; [ reflexivity | contradiction | contradiction ].
+Qed.
+
+Definition ZTheory : Ring_Theory Zplus Zmult 1%Z 0%Z Zopp Zeq.
+ split; intros; apply eq2eqT; eauto with zarith.
+ apply eqT2eq; apply Zeq_prop; assumption.
+Qed.
+
+(* NatConstants and NatTheory are defined in Ring_theory.v *)
+Add Ring Z Zplus Zmult 1%Z 0%Z Zopp Zeq ZTheory
+ [ Zpos Zneg 0%Z xO xI 1%positive ]. \ No newline at end of file