(* *)
(**************************************************************************)
-set "baseuri" "cic:/matita/Z/times".
-
include "nat/lt_arith.ma".
include "Z/plus.ma".
| (pos n) \Rightarrow (neg (pred ((S m) * (S n))))
| (neg n) \Rightarrow (pos (pred ((S m) * (S n))))]].
-(*CSC: the URI must disappear: there is a bug now *)
-interpretation "integer times" 'times x y = (cic:/matita/Z/times/Ztimes.con x y).
+interpretation "integer times" 'times x y = (Ztimes x y).
theorem Ztimes_z_OZ: \forall z:Z. z*OZ = OZ.
intro.elim z.
simplify.reflexivity.
qed.
+definition Zone \def pos O.
+
theorem Ztimes_neg_Zopp: \forall n:nat.\forall x:Z.
neg n * x = - (pos n * x).
intros.elim x.
variant sym_Ztimes : \forall x,y:Z. x*y = y*x
\def symmetric_Ztimes.
+theorem Ztimes_Zone_l: \forall z:Z. Ztimes Zone z = z.
+intro.unfold Zone.simplify.
+elim z;simplify
+ [reflexivity
+ |rewrite < plus_n_O.reflexivity
+ |rewrite < plus_n_O.reflexivity
+ ]
+qed.
+
+theorem Ztimes_Zone_r: \forall z:Z. Ztimes z Zone = z.
+intro.
+rewrite < sym_Ztimes.
+apply Ztimes_Zone_l.
+qed.
+
theorem associative_Ztimes: associative Z Ztimes.
unfold associative.
intros.elim x.