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 *)
(** Induction on the right transitive step *)
induction 3; auto.
apply H0 with y; auto.
Qed.

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