Section Fix_measure_rects.
Variable A: Set.
Variable R: A -> A -> Prop.
Variable Rwf: well_founded R.
Variable P: A -> Type.
Variable f: forall x: A, (forall y: { y: A | R y x }, P (proj1_sig y)) -> P x.
(* Let's call f's second parameter its "lowers" function, since it provides it access to results for inputs with a lower measure.  In preparation of lemma similar to F_sub_rect, but for Wf.Fix_measure_sub (which is what Program uses), we first need an extra hypothesis stating that the function body has the same result for different "lowers" functions (g and h below) as long as those produce the same results for lower inputs, regardless of the lt proofs. *)
Hypothesis equiv_lowers:
forall x0 (g h: forall x: {y: A | R y x0}, P (proj1_sig x)),
(forall x p p', g (exist (fun y: A => R y x0) x p) = h (exist _ x p')) ->
f g = f h.
(* From equiv_lowers, it follows that [Wf.Fix_measure_F_sub A m P f x] applications do not not depend on the Acc proofs. *)

Lemma unfold x:
Wf.Fix_sub A R Rwf P f x =
f (fun y => Wf.Fix_sub A R Rwf P f (proj1_sig y)).