End Nat_Order.
(* the natural order on booleans ( false < true ) *)
Definition bool_le (b b' : bool) :=
if b then if b' then True else False else True.
Definition bool_lt (b b' : bool) :=
if b then False else if b' then True else False.
Module Bool_Order : DEC_ORDER with Definition A := bool with Definition
le := bool_le with Definition lt := bool_lt.
Definition A := bool.
Definition le := bool_le.
Definition lt := bool_lt.

(* Specifications: *)
Theorem ordered : order A le.
Theorem lt_le_weak : forall a b : A, lt a b -> le a b.
Theorem lt_diff : forall a b : A, lt a b -> a <> b.
Theorem le_lt_or_eq : forall a b : A, le a b -> lt a b \/ a = b.
Definition lt_eq_lt_dec : forall a b : A, {lt a b} + {a = b} + {lt b a}.