unfold A, lt in |- *; intros.
case a; case b.
intros a0 a1.
case (O1.lt_eq_lt_dec a0 a1).
simple destruct 1.
right.
auto.
simple destruct 1.
left.
right.
trivial.
left.
left.
trivial.
left; trivial.
left; trivial.
right.
auto.
intros a0 a1.
case (O2.lt_eq_lt_dec a0 a1).
simple destruct 1.
right.
auto.
simple destruct 1.
left.
right.
trivial.
left.
left.
trivial.
Defined.
End Sum_Order.
Module Nat_Order : DEC_ORDER with Definition A := nat with Definition
le := le with Definition lt := lt.
Definition A := nat.
Definition le := le.
Definition lt := lt.

Theorem lt_le_weak : forall a b : A, lt a b -> le a b.