Section Equivalences.
(** *** Equivalences between the different definition of the reflexive, symmetric, transitive closures *)
(** *** Contributed by P. Castéran *)
(** Direct transitive closure vs left-step extension *)
(** Direct transitive closure vs right-step extension *)
(** Direct reflexive-transitive closure is equivalent to transitivity by left-step extension *)
(** Direct reflexive-transitive closure is equivalent to transitivity by right-step extension *)
(** Induction on the left transitive step *)

Lemma clos_refl_trans_ind_left :
forall (x:A) (P:A -> Prop), P x ->
(forall y z:A, clos_refl_trans R x y -> P y -> R y z -> P z) ->
forall z:A, clos_refl_trans R x z -> P z.