Proof
fun (x y z : A) (h : Rstar x y) =>
h (fun u v : A => Rstar v z -> Rstar u z)
(fun (u : A) (t : Rstar u z) => t)
(fun (u v w : A) (t1 : R u v) (t2 : Rstar w z -> Rstar v z)
(t3 : Rstar w z) => Rstar_R u v z t1 (t2 t3)).
(* Another characterization of R* *)
(* Smallest reflexive P containing R o R* *)
Definition Rstar' (x y : A) :=
forall P : A -> A -> Prop,
P x x -> (forall u : A, R x u -> Rstar u y -> P x y) -> P x y.

(* Specifications: *)
Theorem Rstar'_reflexive : forall x : A, Rstar' x x.
Proof
fun (x : A) (P : A -> A -> Prop) (h : P x x)
(h' : forall u : A, R x u -> Rstar u x -> P x x) => h.
Theorem Rstar'_R : forall x y z : A, R x z -> Rstar z y -> Rstar' x y.
Proof
fun (x y z : A) (t1 : R x z) (t2 : Rstar z y) (P : A -> A -> Prop)
(h1 : P x x) (h2 : forall u : A, R x u -> Rstar u y -> P x y) =>
h2 z t1 t2.