Exercise 4.20 (Scott 1981, PRG-19, Lecture IV) #
For approximable f, g : š ā š prove that
fix(f ā g) = f(fix(g ā f)).
In this development f ā g is f.comp g, whose elementwise action is
f.toElementMap ā g.toElementMap (toElementMap_comp). The least fixed point of
an endomap is
fixElement (Theorem 4.1), with its fixed-point equation
toElementMap_fixElement and its
least-pre-fixed-point characterization fixElement_le_of_toElementMap_le.
The proof is the classical "rolling rule" / dinaturality of the fixed-point
operator:
f(fix(g ā f)) is a fixed point of f ā g, hence ā the least one, and a
symmetric argument
gives the reverse inclusion. Everything stays at the level of V.Element, so the
whole file is
choice-free (#print axioms ā {propext, Quot.sound}).
f(fix(g ā f)) is a fixed point of f ā g:
(f ā g)(f(fix(gāf))) = f((gāf)(fix(gāf))) = f(fix(gāf)).
Exercise 4.20 (Scott 1981, PRG-19). fix(f ā g) = f(fix(g ā f)).