(****************)
(** * Ordering  *)
(****************)

Definition le (n m : nat) : Prop :=
  forall P : nat -> Prop, P n -> (forall p : nat, P p -> P (S p)) -> P m.

(* Specifications: *)
Lemma le_refl : forall n : nat, le n n.
Lemma le_trans : forall n1 n2 n3 : nat, le n1 n2 -> le n2 n3 -> le n1 n3.
Lemma le_S : forall n m : nat, le n m -> le n (S m).
Lemma le_Sn_O : forall n : nat, le (S n) O -> bot.
Lemma le_inv : forall n m : nat, le n m -> or (eq nat n m) (ex nat (fun k => and (le n k) (eq nat m (S k)))).
Lemma le_n_Sm : forall n : nat, wf_nat n -> forall m : nat, wf_nat m -> le n (S m) -> or (le n m) (eq nat n (S m)).