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.