Definition Zmax : forall x_ x_ : Z, Z :=
  fun n m : Z =>
  match (n ?= m)%Z with
  | Datatypes.Eq => m
  | Datatypes.Lt => m
  | Datatypes.Gt => n
  end.

(* Specifications: *)
Theorem ZmaxLe1 : forall z1 z2 : Z, (z1 <= Zmax z1 z2)%Z.
Theorem ZmaxSym : forall z1 z2 : Z, Zmax z1 z2 = Zmax z2 z1.
Theorem Zmax_le2 : forall z1 z2 : Z, (z1 <= z2)%Z -> Zmax z1 z2 = z2.
Theorem Zmax_le1 : forall z1 z2 : Z, (z2 <= z1)%Z -> Zmax z1 z2 = z1.
Theorem ZmaxLe2 : forall z1 z2 : Z, (z2 <= Zmax z1 z2)%Z.
Theorem Zeq_Zs : forall p q : Z, (p <= q)%Z -> (q < Zsucc p)%Z -> p = q.
Theorem Zmin_Zmax : forall z1 z2 : Z, (Zmin z1 z2 <= Zmax z1 z2)%Z.
Theorem Zabs_Zmult : forall z1 z2 : Z, Zabs (z1 * z2) = (Zabs z1 * Zabs z2)%Z.
Theorem Zle_Zmult_comp_r : forall x y z : Z, (0 <= z)%Z -> (x <= y)%Z -> (x * z <= y * z)%Z.
Theorem Zle_Zmult_comp_l : forall x y z : Z, (0 <= z)%Z -> (x <= y)%Z -> (z * x <= z * y)%Z.
Theorem NotZmultZero : forall z1 z2 : Z, z1 <> 0%Z -> z2 <> 0%Z -> (z1 * z2)%Z <> 0%Z.
Theorem IZR_zero : forall p : Z, p = 0%Z -> IZR p = 0%R.
Theorem IZR_zero_r : forall p : Z, IZR p = 0%R -> p = 0%Z.
Theorem INR_lt_nm : forall n m : nat, n < m -> (INR n < INR m)%R.
Theorem Rlt_INR1 : forall n : nat, 1 < n -> (1 < INR n)%R.
Theorem NEq_INR : forall n m : nat, n <> m -> INR n <> INR m.
Theorem NEq_INRO : forall n : nat, n <> 0 -> INR n <> 0%R.
Theorem NEq_INR1 : forall n : nat, n <> 1 -> INR n <> 1%R.
Theorem not_O_lt : forall n : nat, n <> 0 -> 0 < n.
Theorem NEq_IZRO : forall n : Z, n <> 0%Z -> IZR n <> 0%R.
Theorem Rlt_IZR : forall p q : Z, (p < q)%Z -> (IZR p < IZR q)%R.
Theorem Rle_IZR : forall x y : Z, (x <= y)%Z -> (IZR x <= IZR y)%R.
Theorem Rlt_IZRO : forall p : Z, (0 < p)%Z -> (0 < IZR p)%R.
Theorem Rle_IZRO : forall x y : Z, (0 <= y)%Z -> (0 <= IZR y)%R.
Theorem Rlt_IZR1 : forall p q : Z, (1 < q)%Z -> (1 < IZR q)%R.
Theorem Rle_IZR1 : forall x y : Z, (1 <= y)%Z -> (1 <= IZR y)%R.
Theorem lt_Rlt : forall n m : nat, (INR n < INR m)%R -> n < m.
Theorem INR_inv : forall n m : nat, INR n = INR m -> n = m.
Theorem Rle_INR : forall x y : nat, x <= y -> (INR x <= INR y)%R.
Theorem le_Rle : forall n m : nat, (INR n <= INR m)%R -> n <= m.
Theorem Rmult_IZR : forall z t : Z, IZR (z * t) = (IZR z * IZR t)%R.
Theorem absolu_Zs : forall z : Z, (0 <= z)%Z -> Zabs_nat (Zsucc z) = S (Zabs_nat z).
Theorem Zlt_next : forall n m : Z, (n < m)%Z -> m = Zsucc n \/ (Zsucc n < m)%Z.
Theorem Zle_next : forall n m : Z, (n <= m)%Z -> m = n \/ (Zsucc n <= m)%Z.
Theorem Zlt_Zopp_Inv : forall p q : Z, (- p < - q)%Z -> (q < p)%Z.
Theorem Zle_Zopp_Inv : forall p q : Z, (- p <= - q)%Z -> (q <= p)%Z.
Theorem absolu_Zs_neg : forall z : Z, (z < 0)%Z -> S (Zabs_nat (Zsucc z)) = Zabs_nat z.
Theorem Zlt_absolu : forall (x : Z) (n : nat), Zabs_nat x < n -> (x < Z_of_nat n)%Z.
Theorem inj_pred : forall n : nat, n <> 0 -> Z_of_nat (pred n) = Zpred (Z_of_nat n).
Theorem Zle_abs : forall p : Z, (p <= Z_of_nat (Zabs_nat p))%Z.
Theorem ZleAbs : forall (z : Z) (n : nat), (- Z_of_nat n <= z)%Z -> (z <= Z_of_nat n)%Z -> Zabs_nat z <= n.
Theorem lt_Zlt_inv : forall n m : nat, (Z_of_nat n < Z_of_nat m)%Z -> n < m.
Theorem NconvertO : forall p : positive, nat_of_P p <> 0.
Theorem absolu_lt_nz : forall z : Z, z <> 0%Z -> 0 < Zabs_nat z.
Theorem Rlt2 : (0 < INR 2)%R.
Theorem RlIt2 : (0 < / INR 2)%R.
Theorem Rledouble : forall r : R, (0 <= r)%R -> (r <= INR 2 * r)%R.
Theorem Rltdouble : forall r : R, (0 < r)%R -> (r < INR 2 * r)%R.
Theorem Rlt_RinvDouble : forall r : R, (0 < r)%R -> (/ INR 2 * r < r)%R.
Theorem Rle_Rinv : forall x y : R, (0 < x)%R -> (x <= y)%R -> (/ y <= / x)%R.
Theorem Int_part_INR : forall n : nat, Int_part (INR n) = Z_of_nat n.
Theorem Int_part_IZR : forall z : Z, Int_part (IZR z) = z.
Theorem Zlt_Rlt : forall z1 z2 : Z, (IZR z1 < IZR z2)%R -> (z1 < z2)%Z.
Theorem Zle_Rle : forall z1 z2 : Z, (IZR z1 <= IZR z2)%R -> (z1 <= z2)%Z.
Theorem IZR_inv : forall z1 z2 : Z, IZR z1 = IZR z2 :>R -> z1 = z2.
Theorem Zabs_eq_opp : forall x, (x <= 0)%Z -> Zabs x = (- x)%Z.
Theorem Zabs_Zs : forall z : Z, (Zabs (Zsucc z) <= Zsucc (Zabs z))%Z.
Theorem Zle_Zpred : forall x y : Z, (x < y)%Z -> (x <= Zpred y)%Z.
Theorem Zabs_Zopp : forall z : Z, Zabs (- z) = Zabs z.
Theorem Zle_Zabs : forall z : Z, (z <= Zabs z)%Z.
Theorem Zlt_mult_simpl_l : forall a b c : Z, (0 < c)%Z -> (c * a < c * b)%Z -> (a < b)%Z.