(* Specifications: *)
Theorem pols_test1: forall x y, x < y -> (x + x < y + x).
Theorem pols_test2: forall x y, y < 0 -> (x + y < x).
Theorem pols_test4: forall x y, x * x < y * y -> ((x + y) * (x + y) < 2 * (x * y + y * y)).
Theorem pols_test5: forall x y z, x + y * (y + z) = 2 * z -> 2 * x + y * (y + z) = (x + z) + z.
Theorem polf_test1: forall x y, (1 <= y -> x <= x * y).
Theorem polf_test2: forall x y, 0 < x -> x <= x * y -> 1 <= y.
Theorem polr_test1: forall x y z, (x + z) < y -> x + y + z < 2*y.
Theorem pols_test1: forall x y: N, x < y -> (x + x < y + x).
Theorem pols_test2: forall x y, y < 0 -> (x + y < x).
Theorem pols_test4: forall x y, x * x < y * y -> ((x + y) * (x + y) < 2 * (x * y + y * y)).
Theorem pols_test5: forall x y z, x + y * (y + z) = 2 * z -> 2 * x + y * (y + z) = (x + z) + z.
Theorem polf_test1: forall x y, (1 <= y -> x <= x * y).
Theorem polf_test2: forall x y, 0 < x -> x <= x * y -> 1 <= y.
Theorem polr_test1: forall x y z, (x + z) < y -> x + y + z < 2*y.
Theorem pols_test1: forall (x y : Z), x < y -> (x + x < y + x).
Theorem pols_test2: forall (x y : Z), y < 0 -> (x + y < x).
Theorem pols_test3: forall (x y : Z), 0 < y * y -> ((x + y) * (x - y) < x * x).
Theorem pols_test4: forall (x y : Z), x * x < y * y -> ((x + y) * (x + y) < 2 * (x * y + y * y)).
Theorem pols_test5: forall x y z, x + y * (y + z) = 2 * z -> 2 * x + y * (y + z) = (x + z) + z.
Theorem polf_test1: forall x y, (0 <= x -> 1 <= y -> x <= x * y)%Z.
Theorem polf_test2: forall x y, (0 < x -> x <= x * y -> 1 <= y)%Z.
Theorem polr_test1: forall x y z, (x + z) < y -> x + y + z < 2*y.
Theorem Rle_sign_pos_pos: forall x y, (0 <= x -> 0 <= y -> 0 <= x * y)%R.
Theorem Rle_sign_neg_neg: forall x y, (x <= 0 -> y <= 0 -> 0 <= x * y)%R.
Theorem Rle_pos_neg: forall x, (0 <= -x -> x <= 0)%R.
Theorem Rle_sign_pos_neg: forall x y: R, (0 <= x -> y <= 0 -> x * y <= 0)%R.
Theorem Rle_sign_neg_pos: forall x y, (x <= 0 -> 0 <= y -> x * y <= 0)%R.
Theorem Rlt_sign_pos_pos: forall x y, (0 < x -> 0 < y -> 0 < x * y)%R.
Theorem Rlt_sign_neg_neg: forall x y, (x < 0 -> y < 0 -> 0 < x * y)%R.
Theorem Rlt_pos_neg: forall x, (0 < -x -> x < 0)%R.
Theorem Rlt_sign_pos_neg: forall x y, (0 < x -> y < 0 -> x * y < 0)%R.
Theorem Rlt_sign_neg_pos: forall x y, (x < 0 -> 0 < y -> x * y < 0)%R.
Theorem Rge_sign_neg_neg: forall x y, (0 >= x -> 0 >= y -> x * y >= 0)%R.
Theorem Rge_sign_pos_pos: forall x y, (x >= 0 -> y >= 0 -> x * y >= 0)%R.
Theorem Rge_neg_pos: forall x, (0 >= -x -> x >= 0)%R.
Theorem Rge_sign_neg_pos: forall x y: R, (0 >= x -> y >= 0 -> 0>= x * y)%R.
Theorem Rge_sign_pos_neg: forall x y, (x >= 0 -> 0 >= y -> 0 >= x * y)%R.
Theorem Rgt_sign_neg_neg: forall x y, (0 > x -> 0 > y -> x * y > 0)%R.
Theorem Rgt_sign_pos_pos: forall x y, (x > 0 -> y > 0 -> x * y > 0)%R.
Theorem Rgt_neg_pos: forall x, (0 > -x -> x > 0)%R.
Theorem Rgt_sign_neg_pos: forall x y, (0 > x -> y > 0 -> 0> x * y)%R.
Theorem Rgt_sign_pos_neg: forall x y, (x > 0 -> 0 > y -> 0 > x * y)%R.
Theorem Rle_sign_pos_pos_rev: forall x y: R, (0 < x -> 0 <= x * y -> 0 <= y)%R.
Theorem Rle_sign_neg_neg_rev: forall x y: R, (x < 0 -> 0 <= x * y -> y <= 0)%R.
Theorem Rle_sign_pos_neg_rev: forall x y: R, (0 < x -> x * y <= 0 -> y <= 0)%R.
Theorem Rle_sign_neg_pos_rev: forall x y: R, (x < 0 -> x * y <= 0 -> 0 <= y)%R.
Theorem Rge_sign_pos_pos_rev: forall x y: R, (x > 0 -> x * y >= 0 -> y >= 0)%R.
Theorem Rge_sign_neg_neg_rev: forall x y: R, (0 > x -> x * y >= 0-> 0 >= y)%R.
Theorem Rge_sign_pos_neg_rev: forall x y: R, (x > 0 -> 0 >= x * y -> 0 >= y)%R.
Theorem Rge_sign_neg_pos_rev: forall x y: R, (0 > x -> 0 >= x * y -> y >= 0)%R.
Theorem Rlt_sign_pos_pos_rev: forall x y: R, (0 < x -> 0 < x * y -> 0 < y)%R.
Theorem Rlt_sign_neg_neg_rev: forall x y: R, (x < 0 -> 0 < x * y -> y < 0)%R.
Theorem Rlt_sign_pos_neg_rev: forall x y: R, (0 < x -> x * y < 0 -> y < 0)%R.
Theorem Rlt_sign_neg_pos_rev: forall x y: R, (x < 0 -> x * y < 0 -> 0 < y)%R.
Theorem Rgt_sign_pos_pos_rev: forall x y: R, (x > 0 -> x * y > 0 -> y > 0)%R.
Theorem Rgt_sign_neg_neg_rev: forall x y: R, (0 > x -> x * y > 0-> 0 > y)%R.
Theorem Rgt_sign_pos_neg_rev: forall x y: R, (x > 0 -> 0 > x * y -> 0 > y)%R.
Theorem Rgt_sign_neg_pos_rev: forall x y: R, (0 > x -> 0 > x * y -> y > 0)%R.
Theorem Rmult_le_compat_l: forall n m p : R, (m <= n)%R -> (0 <= p)%R -> (p * m <= p * n)%R.
Theorem Rmult_le_neg_compat_l: forall n m p : R, (m <= n)%R -> (p <= 0)%R -> (p * n <= p * m)%R.
Theorem Ropp_lt: forall n m, (m < n -> -n < -m)%R.
Theorem Rmult_lt_neg_compat_l: forall n m p : R, (m < n)%R -> (p < 0)%R -> (p * n < p * m)%R.
Theorem Ropp_ge: forall n m, (m >= n -> -n >= -m)%R.
Theorem Rmult_ge_compat_l: forall n m p : R, (m >= n)%R -> (p >= 0)%R -> (p * m >= p * n)%R.
Theorem Rmult_ge_neg_compat_l: forall n m p : R, (m >= n)%R -> (0 >= p)%R -> (p * n >= p * m)%R.
Theorem Ropp_gt: forall n m, (m > n -> -n > -m)%R.
Theorem Rmult_gt_compat_l: forall n m p : R, (n > m)%R -> (p > 0)%R -> (p * n > p * m)%R.
Theorem Rmult_gt_neg_compat_l: forall n m p : R, (m > n)%R -> (0 > p)%R -> (p * n > p * m)%R.
Theorem Rmult_le_compat_l_rev: forall n m p : R, (0 < p)%R -> (p * n <= p * m)%R -> (n <= m)%R.
Theorem Rmult_le_neg_compat_l_rev: forall n m p : R, (p < 0)%R -> (p * n <= p * m)%R -> (m <= n)%R.
Theorem Rmult_lt_compat_l_rev: forall n m p : R, (0 < p)%R -> (p * n < p * m)%R -> (n < m)%R.
Theorem Rmult_lt_neg_compat_l_rev: forall n m p : R, (p < 0)%R -> (p * n < p * m)%R -> (m < n)%R.
Theorem Rmult_ge_compat_l_rev: forall n m p : R, (p > 0)%R -> (p * n >= p * m)%R -> (n >= m)%R.
Theorem Rmult_ge_neg_compat_l_rev: forall n m p : R, (0 > p)%R -> (p * n >= p * m)%R -> (m >= n)%R.
Theorem Rmult_gt_compat_l_rev: forall n m p : R, (p > 0)%R -> (p * n > p * m)%R -> (n > m)%R.
Theorem Rmult_gt_neg_compat_l_rev: forall n m p : R, (0 > p)%R -> (p * n > p * m)%R -> (m > n)%R.
Theorem Nle_le: forall n m, (N.to_nat n <= N.to_nat m)%nat -> n <= m.
Theorem le_Nle: forall n m, N.of_nat n <= N.of_nat m -> (n <= m)%nat.
Theorem Nle_le_rev: forall n m, n <= m -> (N.to_nat n <= N.to_nat m)%nat.
Theorem Nlt_lt: forall n m, (N.to_nat n < N.to_nat m)%nat -> n < m.
Theorem lt_Nlt: forall n m, N.of_nat n < N.of_nat m -> (n < m)%nat.
Theorem Nlt_lt_rev: forall n m, n < m -> (N.to_nat n < N.to_nat m)%nat.
Theorem Nge_ge: forall n m, (N.to_nat n >= N.to_nat m)%nat -> n >= m.
Theorem ge_Nge: forall n m, N.of_nat n >= N.of_nat m -> (n >= m)%nat.
Theorem Nge_ge_rev: forall n m, n >= m -> (N.to_nat n >= N.to_nat m)%nat.
Theorem Ngt_gt: forall n m, (N.to_nat n > N.to_nat m)%nat -> n > m.
Theorem gt_Ngt: forall n m, N.of_nat n > N.of_nat m -> (n > m)%nat.
Theorem Ngt_gt_rev: forall n m, n > m -> (N.to_nat n > N.to_nat m)%nat.
Theorem Neq_eq_rev: forall n m, n = m -> (N.to_nat n = N.to_nat m)%nat.
Theorem Lt_diff_Gt: Lt <> Gt.
Theorem Eq_diff_Gt: Eq <> Gt.
Theorem mult_lt_compat_l: forall n m p : nat, n < m -> 0 < p -> p * n < p * m.
Theorem mult_ge_compat_l: forall n m p : nat, n >= m -> p * n >= p * m.
Theorem mult_gt_compat_l: forall n m p : nat, n > m -> p > 0 -> p * n > p * m.
Theorem mult_lt_compat_rev_l1: forall n m p : nat, p * n < p * m -> 0 < p.
Theorem mult_lt_compat_rev_l2: forall n m p : nat, p * n < p * m -> n < m.
Theorem mult_gt_compat_rev_l1: forall n m p : nat, p * n > p * m -> p > 0.
Theorem mult_gt_compat_rev_l2: forall n m p : nat, p * n > p * m -> n > m.
Theorem mult_le_compat_rev_l: forall n m p : nat, p * n <= p * m -> 0 < p -> n <= m.
Theorem mult_ge_compat_rev_l: forall n m p : nat, p * n >= p * m -> 0 < p -> n >= m.
Theorem lt_mult_0: forall a b, 0 < a -> 0 < b -> 0 < a * b.
Theorem gt_mult_0: forall a b, a > 0 -> b > 0 -> a * b > 0.
Theorem lt_mult_rev_0_l: forall a b, 0 < a * b -> 0 < a .
Theorem lt_mult_rev_0_r: forall a b, 0 < a * b -> 0 < b .
Theorem gt_mult_rev_0_l: forall a b, a * b > 0 -> a > 0.
Theorem gt_mult_rev_0_r: forall a b, a * b > 0 -> b > 0 .
Theorem le_0_eq_0: forall n, n <= 0 -> n = 0.
Theorem Nmult_lt_compat_l: forall n m p, n < m -> 0 < p -> p * n < p * m.
Theorem Nmult_le_compat_l: forall n m p, n <= m -> p * n <= p * m.
Theorem Nmult_ge_compat_l: forall n m p, n >= m -> p * n >= p * m.
Theorem Nmult_gt_compat_l: forall n m p, n > m -> p > 0 -> p * n > p * m.
Theorem Nmult_lt_compat_rev_l1: forall n m p, p * n < p * m -> 0 < p.
Theorem Nmult_lt_compat_rev_l2: forall n m p, p * n < p * m -> n < m.
Theorem Nmult_gt_compat_rev_l1: forall n m p, p * n > p * m -> p > 0.
Theorem Nmult_gt_compat_rev_l2: forall n m p, p * n > p * m -> n > m.
Theorem Nmult_le_compat_rev_l: forall n m p, p * n <= p * m -> 0 < p -> n <= m.
Theorem Nmult_ge_compat_rev_l: forall n m p , p * n >= p * m -> 0 < p -> n >= m.
Theorem Nlt_mult_0: forall a b, 0 < a -> 0 < b -> 0 < a * b.
Theorem Ngt_mult_0: forall a b, a > 0 -> b > 0 -> a * b > 0.
Theorem Nlt_mult_rev_0_l: forall a b, 0 < a * b -> 0 < a .
Theorem Nlt_mult_rev_0_r: forall a b, 0 < a * b -> 0 < b .
Theorem Ngt_mult_rev_0_l: forall a b, a * b > 0 -> a > 0.
Theorem Ngt_mult_rev_0_r: forall a b, a * b > 0 -> b > 0 .
Theorem Nle_0_eq_0: forall n, n <= 0 -> n = 0.
Theorem Nge_0_eq_0: forall n, 0 >= n -> n = 0.
Theorem pols_test1: forall (x y : R), x < y -> (x + x < y + x).
Theorem pols_test2: forall (x y : R), 0 < y -> (x < x + y).
Theorem pols_test3: forall (x y : R), 0 < y * y -> ((x + y) * (x - y) < x * x).
Theorem pols_test4: forall (x y : R), x * x < y * y -> ((x + y) * (x + y) < 2 * (x * y + y * y)).
Theorem pols_test5: forall (x y z : R), x * (z + 2) < y * (2 * x + 1)-> (x * ((z + y) + 2) < y * (3 * x + 1)).
Theorem polf_test1: forall x y, (0 <= x -> 1 <= y -> x <= x * y)%R.
Theorem polf_test2: forall x y, (0 < x -> x <= x * y -> 1 <= y)%R.
Theorem polr_test1: forall x y z, (x + z) < y -> x + y + z < 2*y.
Theorem polr_test2: forall x y z t u, t <0 -> y = u -> x + z < y -> 2* y * t < x * t + t * u + z * t .