(* Definition of the reflexive-transitive closure R* of R *)
(* Smallest reflexive P containing R o P *)

Definition Rstar (x y : A) :=
  forall P : A -> A -> Prop,
  (forall u : A, P u u) ->
  (forall u v w : A, R u v -> P v w -> P u w) -> P x y.

(* Specifications: *)
Theorem Rstar_reflexive : forall x : A, Rstar x x.
Theorem Rstar_R : forall x y z : A, R x y -> Rstar y z -> Rstar x z.
Theorem Rstar_transitive : forall x y z : A, Rstar x y -> Rstar y z -> Rstar x z.