Definition natEq : forall n m : nat, {n = m} + {n <> m}.

(* Specifications: *)
Theorem notEqLt : forall n : nat, 0 < n -> n <> 0.
Theorem lt_next : forall n m : nat, n < m -> m = S n \/ S n < m.
Theorem le_next : forall n m : nat, n <= m -> m = n \/ S n <= m.
Theorem min_or : forall n m : nat, min n m = n /\ n <= m \/ min n m = m /\ m < n.
Theorem minus_inv_lt_aux : forall n m : nat, n - m = 0 -> n - S m = 0.
Theorem minus_inv_lt : forall n m : nat, m <= n -> m - n = 0.
Theorem minus_le : forall m n p q : nat, m <= n -> p <= q -> m - q <= n - p.
Theorem lt_minus_inv : forall n m p : nat, n <= p -> m < n -> p - n < p - m.
Theorem lt_mult_anti_compatibility : forall n n1 n2 : nat, 0 < n -> n * n1 < n * n2 -> n1 < n2.
Theorem le_mult_anti_compatibility : forall n n1 n2 : nat, 0 < n -> n * n1 <= n * n2 -> n1 <= n2.
Theorem min_n_0 : forall n : nat, min n 0 = 0.
Theorem Rlt_Rminus_ZERO : forall r1 r2 : R, (r2 < r1)%R -> (0 < r1 - r2)%R.
Theorem Rabsolu_left1 : forall a : R, (a <= 0)%R -> Rabs a = (- a)%R.
Theorem RmaxLess1 : forall r1 r2 : R, (r1 <= Rmax r1 r2)%R.
Theorem RmaxLess2 : forall r1 r2 : R, (r2 <= Rmax r1 r2)%R.
Theorem RmaxSym : forall p q : R, Rmax p q = Rmax q p.
Theorem RmaxAbs : forall p q r : R, (p <= q)%R -> (q <= r)%R -> (Rabs q <= Rmax (Rabs p) (Rabs r))%R.
Theorem Rabsolu_Zabs : forall z : Z, Rabs (IZR z) = IZR (Zabs z).
Theorem RmaxRmult : forall p q r : R, (0 <= r)%R -> Rmax (r * p) (r * q) = (r * Rmax p q)%R.
Theorem Rle_R0_Ropp : forall p : R, (p <= 0)%R -> (0 <= - p)%R.
Theorem Rlt_R0_Ropp : forall p : R, (p < 0)%R -> (0 < - p)%R.
Theorem convert_not_O : forall p : positive, nat_of_P p <> 0.
Theorem inj_abs : forall x : Z, (0 <= x)%Z -> Z_of_nat (Zabs_nat x) = x.
Theorem inject_nat_convert : forall (p : Z) (q : positive), p = Zpos q -> Z_of_nat (nat_of_P q) = p.
Theorem ZleLe : forall x y : nat, (Z_of_nat x <= Z_of_nat y)%Z -> x <= y.
Theorem inject_nat_eq : forall x y : nat, Z_of_nat x = Z_of_nat y -> x = y.
Theorem Zcompare_EGAL : forall p q : Z, (p ?= q)%Z = Datatypes.Eq -> p = q.
Theorem Zlt_Zopp : forall x y : Z, (x < y)%Z -> (- y < - x)%Z.
Theorem Zle_Zopp : forall x y : Z, (x <= y)%Z -> (- y <= - x)%Z.
Theorem absolu_INR : forall n : nat, Zabs_nat (Z_of_nat n) = n.
Theorem absolu_Zopp : forall p : Z, Zabs_nat (- p) = Zabs_nat p.
Theorem Zabs_absolu : forall z : Z, Zabs z = Z_of_nat (Zabs_nat z).
Theorem absolu_comp_mult : forall p q : Z, Zabs_nat (p * q) = Zabs_nat p * Zabs_nat q.
Theorem Zmin_sym : forall m n : Z, Zmin n m = Zmin m n.
Theorem Zpower_nat_O : forall z : Z, Zpower_nat z 0 = Z_of_nat 1.
Theorem Zpower_nat_1 : forall z : Z, Zpower_nat z 1 = z.
Theorem Zmin_le1 : forall z1 z2 : Z, (z1 <= z2)%Z -> Zmin z1 z2 = z1.
Theorem Zmin_le2 : forall z1 z2 : Z, (z2 <= z1)%Z -> Zmin z1 z2 = z2.
Theorem Zmin_Zle : forall z1 z2 z3 : Z, (z1 <= z2)%Z -> (z1 <= z3)%Z -> (z1 <= Zmin z2 z3)%Z.
Theorem Zminus_n_predm : forall n m : Z, Zsucc (n - m) = (n - Zpred m)%Z.
Theorem Zopp_Zpred_Zs : forall z : Z, (- Zpred z)%Z = Zsucc (- z).
Theorem Zle_mult_gen : forall x y : Z, (0 <= x)%Z -> (0 <= y)%Z -> (0 <= x * y)%Z.