Qed.

(* Specifications: *)
(********************)
Lemma unicity_is_gcdZ :
forall a b d1 d2 : Z, is_gcdZ a b d1 -> is_gcdZ a b d2 -> d2 = d1.
(*************)
Lemma gcd_modZ :
forall a b q r : Z, b <> OZ -> is_diveuclZ a b q r -> gcdZ r b = gcdZ b a.
(****************)
Lemma mult_commut : forall n m : nat, n * m = m * n.
intros; elim n; simpl in |- *.
(********************)
Lemma technical_lemma :
forall y m : nat, S (y * m + (y + m) + m) = S y * m + (S y + m).
(***************)
Lemma minus_n_Sm : forall n m : nat, m < n -> pred (n - m) = n - S m.
simple induction 1; intros; elim minus_Sn_m; auto with arith.
(************)
Lemma lt_succ : forall n m : nat, n <= S m -> {n <= m} + {n = S m}.
intros; elim (le_lt_eq_dec n (S m) H); auto with arith.
(*********************)
Lemma tech_add_pos_posZ :
forall n m : nat, addZ (pos n) (pos m) = pos (S (n + m)).
(*********************)
Lemma tech_opp_pos_negZ :
forall n : nat, oppZ (pos n) = neg n /\ oppZ (neg n) = pos n.