Section PointFixe.
(* cadeau de Christine Paulin, pour definir un point fixe avec une relation bien fondee *)
Variable A : Set.
Variable P : A -> Set.
Variable R : A -> A -> Prop.
Hypothesis Rwf : well_founded R.
Variable F : forall x : A, (forall y : A, R y x -> P y) -> P x.
Hypothesis
F_ext :
forall (x : A) (f g : forall y : A, R y x -> P y),
(forall (y : A) (p : R y x), f y p = g y p) -> F x f = F x g.
Fixpoint Fix_F (x : A) (r : Acc R x) {struct r} : P x :=
F x (fun (y : A) (p : R y x) => Fix_F y (Acc_inv r y p)).
Scheme Acc_inv_dep := Induction for Acc Sort Prop.
intros x r; elim r using Acc_inv_dep; auto.
Qed.

Lemma Fix_F_inv : forall (x : A) (r s : Acc R x), Fix_F x r = Fix_F x s.