Section WF_ROOT.
(* application au cas qui nous preoccupe, la relation est bien fondee car il existe une fonction f de E dans nat strictement croissante, la relation est decidable en ce sens qu'il existe une preuve qu'un element a ou non des antecedents et un algorithme permettant de choisir un antecedent quand il en a, il est alors possible de definir par point fixe une fonction root qui a tout element associe l'antecedent sans parent accessible par l'algorithme *)
Variable E : Set.
Variable f : E -> nat.
Variable R : E -> E -> Prop.
Hypothesis R_dec : forall x : E, {y : E | R y x} + {(forall y : E, ~ R y x)}.
Hypothesis strict : forall x y : E, R x y -> f x < f y.
Definition F (x : E) (f : forall y : E, R y x -> E) :=
match R_dec x with
| inleft z => let (y0, r0) := z in f y0 r0
| inright _ => x
end.

Lemma F_eq :
forall (x : E) (f1 f2 : forall y : E, R y x -> E),
(forall (y : E) (r : R y x), f1 y r = f2 y r) -> F x f1 = F x f2.