(* Specifications: *)
Lemma gcd_unicity_apart_sign : forall a b d1 d2 : Z, is_gcd Z IdZ multZ OZ a b d1 -> is_gcd Z IdZ multZ OZ a b d2 -> d2 = d1 \/ d2 = oppZ d1.
Lemma gcd_OZ_absZ : forall b : Z, is_gcd Z IdZ multZ OZ OZ b (absZ b).
Lemma eq_gt_O_dec : forall n : nat, {n = 0} + {n > 0}.
Lemma mult_commut : forall n m : nat, n * m = m * n.
Lemma mult_neutr : forall n : nat, 1 * n = n.
Lemma technical_lemma : forall y m : nat, S (y * m + (y + m) + m) = S y * m + (S y + m).
Lemma lt_minus2 : forall n m : nat, n < m -> 0 < m - n.
Lemma minus_n_Sm : forall n m : nat, m < n -> pred (n - m) = n - S m.
Lemma lt_succ : forall n m : nat, n <= S m -> {n <= m} + {n = S m}.
Lemma lt_OZ : forall m : Z, ~ ltZ (absZ m) OZ.
Lemma Zrec1 : forall P : Z -> Set, (forall n : Z, (forall m : Z, lt_absZ m n -> P m) -> P n) -> P OZ.