Definition lt_or_eq n m := {m > n} + {n = m}.

(* Specifications: *)
Lemma le_decide : forall n m, n <= m -> lt_or_eq n m.
Proof le_lt_eq_dec.
Lemma le_le_S_eq : forall n m, n <= m -> S n <= m \/ n = m.
Proof (fun n m Hle => proj1 (Nat.lt_eq_cases n m) Hle).
(* By special request of G. Kahn - Used in Group Theory *)
Lemma discrete_nat :
forall n m, n < m -> S n = m \/ (exists r : nat, m = S (S (n + r))).