Module Import Private_BootStrap.
(** ** Operations and constants *)
(** ** Addition is commutative *)
(** ** Opposite distributes over addition *)
(** ** Opposite is injective *)
(** ** Addition is associative *)
Local Arguments add !x !y.
(** ** Opposite is inverse for addition *)
(** ** Multiplication and Opposite *)
(** ** Distributivity of multiplication over addition *)
End Private_BootStrap.
(** * Proofs of specifications *)
(** ** Specification of constants *)
(** ** Specification of addition *)
(** ** Specification of opposite *)
(** ** Specification of successor and predecessor *)
Local Arguments pos_sub : simpl nomatch.
(** ** Specification of subtraction *)
(** ** Specification of multiplication *)
(** ** Specification of comparisons and order *)
(** ** Specification of minimum and maximum *)
(** ** Induction principles based on successor / predecessor *)

Lemma bi_induction (P : Z -> Prop) :
Proper (eq ==> iff) P ->
P 0 ->
(forall x, P x <-> P (succ x)) ->
forall z, P z.