(** * Comparison and opposite *)

(* Specifications: *)
Lemma Zcompare_opp n m : (n ?= m) = (- m ?= - n).
(** * Comparison first-order specification *)
Lemma Zcompare_Gt_spec n m : (n ?= m) = Gt ->  exists h, n + - m = Zpos h.
(** * Comparison and addition *)
Lemma Zcompare_plus_compat n m p : (p + n ?= p + m) = (n ?= m).
Lemma Zplus_compare_compat (r:comparison) (n m p q:Z) :
(n ?= m) = r -> (p ?= q) = r -> (n + p ?= m + q) = r.
Lemma Zcompare_succ_Gt n : (Z.succ n ?= n) = Gt.
Lemma Zcompare_Gt_not_Lt n m : (n ?= m) = Gt <-> (n ?= m+1) <> Lt.
(** * Successor and comparison *)
Lemma Zcompare_succ_compat n m : (Z.succ n ?= Z.succ m) = (n ?= m).
(** * Multiplication and comparison *)
Lemma Zcompare_mult_compat :
forall (p:positive) (n m:Z), (Zpos p * n ?= Zpos p * m) = (n ?= m).
Lemma Zmult_compare_compat_l n m p:
p > 0 -> (n ?= m) = (p * n ?= p * m).
Lemma Zmult_compare_compat_r n m p :
p > 0 -> (n ?= m) = (n * p ?= m * p).