Library Coq.Numbers.Natural.Abstract.NMulOrder
Require Export NAddOrder.
Module NMulOrderPropFunct (Import NAxiomsMod : NAxiomsSig).
Module Export NAddOrderPropMod := NAddOrderPropFunct NAxiomsMod.
Open Local Scope NatScope.
Theorem mul_lt_pred :
forall p q n m : N, S p == q -> (p * n < p * m <-> q * n + m < q * m + n).
Theorem mul_lt_mono_pos_l : forall p n m : N, 0 < p -> (n < m <-> p * n < p * m).
Theorem mul_lt_mono_pos_r : forall p n m : N, 0 < p -> (n < m <-> n * p < m * p).
Theorem mul_cancel_l : forall n m p : N, p ~= 0 -> (p * n == p * m <-> n == m).
Theorem mul_cancel_r : forall n m p : N, p ~= 0 -> (n * p == m * p <-> n == m).
Theorem mul_id_l : forall n m : N, m ~= 0 -> (n * m == m <-> n == 1).
Theorem mul_id_r : forall n m : N, n ~= 0 -> (n * m == n <-> m == 1).
Theorem mul_le_mono_pos_l : forall n m p : N, 0 < p -> (n <= m <-> p * n <= p * m).
Theorem mul_le_mono_pos_r : forall n m p : N, 0 < p -> (n <= m <-> n * p <= m * p).
Theorem mul_pos_pos : forall n m : N, 0 < n -> 0 < m -> 0 < n * m.
Theorem lt_1_mul_pos : forall n m : N, 1 < n -> 0 < m -> 1 < n * m.
Theorem eq_mul_0 : forall n m : N, n * m == 0 <-> n == 0 \/ m == 0.
Theorem neq_mul_0 : forall n m : N, n ~= 0 /\ m ~= 0 <-> n * m ~= 0.
Theorem eq_square_0 : forall n : N, n * n == 0 <-> n == 0.
Theorem eq_mul_0_l : forall n m : N, n * m == 0 -> m ~= 0 -> n == 0.
Theorem eq_mul_0_r : forall n m : N, n * m == 0 -> n ~= 0 -> m == 0.
Theorem square_lt_mono : forall n m : N, n < m <-> n * n < m * m.
Theorem square_le_mono : forall n m : N, n <= m <-> n * n <= m * m.
Theorem mul_2_mono_l : forall n m : N, n < m -> 1 + (1 + 1) * n < (1 + 1) * m.
Theorem mul_le_mono_l : forall n m p : N, n <= m -> p * n <= p * m.
Theorem mul_le_mono_r : forall n m p : N, n <= m -> n * p <= m * p.
Theorem mul_lt_mono : forall n m p q : N, n < m -> p < q -> n * p < m * q.
Theorem mul_le_mono : forall n m p q : N, n <= m -> p <= q -> n * p <= m * q.
Theorem lt_0_mul : forall n m : N, n * m > 0 <-> n > 0 /\ m > 0.
Notation mul_pos := lt_0_mul (only parsing).
Theorem eq_mul_1 : forall n m : N, n * m == 1 <-> n == 1 /\ m == 1.
End NMulOrderPropFunct.