(* ----------------------------------------------------------------- *)
(** *** Transitive Relations *)

(** A relation [R] is _transitive_ if [R a c] holds whenever [R a b]
    and [R b c] do. *)

Definition transitive {X: Type} (R: relation X) :=
  forall a b c : X, (R a b) -> (R b c) -> (R a c).

(* Specifications: *)
Theorem le_trans : transitive le.
Theorem lt_trans: transitive lt.
Theorem lt_trans' : transitive lt.
Theorem lt_trans'' : transitive lt.
Theorem le_Sn_le : forall n m, S n <= m -> n <= m.
Theorem le_S_n : forall n m, (S n <= S m) -> (n <= m).
Theorem le_Sn_n : forall n, ~ (S n <= n).