Library Coq.Numbers.NatInt.NZMulOrder
Require Import NZAxioms.
Require Import NZAddOrder.
Module Type NZMulOrderProp (
Import NZ :
NZOrdAxiomsSig´).
Include NZAddOrderProp NZ.
Theorem mul_lt_pred :
forall p q n m,
S p == q -> (
p * n < p * m <-> q * n + m < q * m + n).
Theorem mul_lt_mono_pos_l :
forall p n m, 0
< p -> (
n < m <-> p * n < p * m).
Theorem mul_lt_mono_pos_r :
forall p n m, 0
< p -> (
n < m <-> n * p < m * p).
Theorem mul_lt_mono_neg_l :
forall p n m,
p < 0 -> (
n < m <-> p * m < p * n).
Theorem mul_lt_mono_neg_r :
forall p n m,
p < 0 -> (
n < m <-> m * p < n * p).
Theorem mul_le_mono_nonneg_l :
forall n m p, 0
<= p ->
n <= m ->
p * n <= p * m.
Theorem mul_le_mono_nonpos_l :
forall n m p,
p <= 0 ->
n <= m ->
p * m <= p * n.
Theorem mul_le_mono_nonneg_r :
forall n m p, 0
<= p ->
n <= m ->
n * p <= m * p.
Theorem mul_le_mono_nonpos_r :
forall n m p,
p <= 0 ->
n <= m ->
m * p <= n * p.
Theorem mul_cancel_l :
forall n m p,
p ~= 0 -> (
p * n == p * m <-> n == m).
Theorem mul_cancel_r :
forall n m p,
p ~= 0 -> (
n * p == m * p <-> n == m).
Theorem mul_id_l :
forall n m,
m ~= 0 -> (
n * m == m <-> n == 1).
Theorem mul_id_r :
forall n m,
n ~= 0 -> (
n * m == n <-> m == 1).
Theorem mul_le_mono_pos_l :
forall n m p, 0
< p -> (
n <= m <-> p * n <= p * m).
Theorem mul_le_mono_pos_r :
forall n m p, 0
< p -> (
n <= m <-> n * p <= m * p).
Theorem mul_le_mono_neg_l :
forall n m p,
p < 0 -> (
n <= m <-> p * m <= p * n).
Theorem mul_le_mono_neg_r :
forall n m p,
p < 0 -> (
n <= m <-> m * p <= n * p).
Theorem mul_lt_mono_nonneg :
forall n m p q, 0
<= n ->
n < m -> 0
<= p ->
p < q ->
n * p < m * q.
Theorem mul_le_mono_nonneg :
forall n m p q, 0
<= n ->
n <= m -> 0
<= p ->
p <= q ->
n * p <= m * q.
Theorem mul_pos_pos :
forall n m, 0
< n -> 0
< m -> 0
< n * m.
Theorem mul_neg_neg :
forall n m,
n < 0 ->
m < 0 -> 0
< n * m.
Theorem mul_pos_neg :
forall n m, 0
< n ->
m < 0 ->
n * m < 0.
Theorem mul_neg_pos :
forall n m,
n < 0 -> 0
< m ->
n * m < 0.
Theorem mul_nonneg_nonneg :
forall n m, 0
<= n -> 0
<= m -> 0
<= n*m.
Theorem mul_pos_cancel_l :
forall n m, 0
< n -> (0
< n*m <-> 0
< m).
Theorem mul_pos_cancel_r :
forall n m, 0
< m -> (0
< n*m <-> 0
< n).
Theorem mul_nonneg_cancel_l :
forall n m, 0
< n -> (0
<= n*m <-> 0
<= m).
Theorem mul_nonneg_cancel_r :
forall n m, 0
< m -> (0
<= n*m <-> 0
<= n).
Theorem lt_1_mul_pos :
forall n m, 1
< n -> 0
< m -> 1
< n * m.
Theorem eq_mul_0 :
forall n m,
n * m == 0
<-> n == 0
\/ m == 0.
Theorem neq_mul_0 :
forall n m,
n ~= 0
/\ m ~= 0
<-> n * m ~= 0.
Theorem eq_square_0 :
forall n,
n * n == 0
<-> n == 0.
Theorem eq_mul_0_l :
forall n m,
n * m == 0 ->
m ~= 0 ->
n == 0.
Theorem eq_mul_0_r :
forall n m,
n * m == 0 ->
n ~= 0 ->
m == 0.
Some alternative names:
A few results about squares