Module Tac := !MakeOrderTac NZ IsTotal.
End Private_OrderTac.
Ltac order := Private_OrderTac.Tac.order.
(** Some direct consequences of [order]. *)
(** The order tactic enriched with some knowledge of 0,1,2 *)
Ltac order' := generalize lt_0_1 lt_1_2; order.
(** More Trichotomy, decidability and double negation elimination. *)
(** The following theorem is cleary redundant, but helps not to remember whether one has to say le_gt_cases or lt_ge_cases *)
(** Decidability of equality, even though true in each finite ring, does not have a uniform proof. Otherwise, the proof for two fixed numbers would reduce to a normal form that will say if the numbers are equal or not, which cannot be true in all finite rings. Therefore, we prove decidability in the presence of order. *)
(** DNE stands for double-negation elimination *)

Theorem lt_dne : forall n m, ~ ~ n < m <-> n < m.