Library Coq.Numbers.NatInt.NZAdd
Require Import NZAxioms NZBase.
Module Type NZAddProp (
Import NZ :
NZAxiomsSig´)(
Import NZBase :
NZBaseProp NZ).
Hint Rewrite
pred_succ add_0_l add_succ_l mul_0_l mul_succ_l sub_0_r sub_succ_r :
nz.
Hint Rewrite one_succ two_succ :
nz´.
Ltac nzsimpl :=
autorewrite with nz.
Ltac nzsimpl´ :=
autorewrite with nz nz´.
Theorem add_0_r :
forall n,
n + 0
== n.
Theorem add_succ_r :
forall n m,
n + S m == S (
n + m).
Theorem add_succ_comm :
forall n m,
S n + m == n + S m.
Hint Rewrite add_0_r add_succ_r :
nz.
Theorem add_comm :
forall n m,
n + m == m + n.
Theorem add_1_l :
forall n, 1
+ n == S n.
Theorem add_1_r :
forall n,
n + 1
== S n.
Hint Rewrite add_1_l add_1_r :
nz.
Theorem add_assoc :
forall n m p,
n + (m + p) == (n + m) + p.
Theorem add_cancel_l :
forall n m p,
p + n == p + m <-> n == m.
Theorem add_cancel_r :
forall n m p,
n + p == m + p <-> n == m.
Theorem add_shuffle0 :
forall n m p,
n+m+p == n+p+m.
Theorem add_shuffle1 :
forall n m p q,
(n + m) + (p + q) == (n + p) + (m + q).
Theorem add_shuffle2 :
forall n m p q,
(n + m) + (p + q) == (n + q) + (m + p).
Theorem add_shuffle3 :
forall n m p,
n + (m + p) == m + (n + p).
Theorem sub_1_r :
forall n,
n - 1
== P n.
Hint Rewrite sub_1_r :
nz.
End NZAddProp.