(**************)
(* order on Z *)
(**************)

(************)
Definition leZ (x y : Z) :=
  match x return Prop with
  | OZ =>
      match y return Prop with
      | OZ => True
      | pos n => True
      | neg n => False
      end
  | pos n =>
      match y return Prop with
      | OZ => False
      | pos m => n <= m
      | neg m => False
      end
  | neg n =>
      match y return Prop with
      | OZ => True
      | pos m => True
      | neg m => m <= n
      end
  end.

(* Specifications: *)
Lemma sign_absZ : forall x : Z, leZ OZ (absZ x).
Lemma tech_le_pos_abs : forall x : Z, leZ OZ x -> absZ x = x.
Theorem leZ_antisymmetric : antisym Z leZ.