Documentation

LeanPool.DomainTheory.Neighborhood.Exercise415

Exercise 4.15 (Scott 1981, PRG-19, Lecture IV) β€” a maximal (and a least) fixed #

point

(For set theorists.) Let f : |π’Ÿ| β†’ |π’Ÿ| be a monotone function on the elements of a domain. Then f has a maximal fixed point β€” a fixed point that cannot be extended to a larger one β€” and (consequently) a least fixed point.

Maximal fixed point (Zorn). Consider the set S = {x ∣ x βŠ‘ f(x)} of post-fixed points. It is non-empty (βŠ₯ ∈ S) and every chain C βŠ† S has an upper bound in S: its union βŠ”C (Exercise 1.24's chainUnion, Scott's "use 2.11 to remark βŠ”C ∈ |π’Ÿ|") is again post-fixed, since each x ∈ C has x βŠ‘ f(x) βŠ‘ f(βŠ”C). By Zorn's Lemma (zorn_leβ‚€) S has a maximal element m. Then m is a fixed point: m βŠ‘ f(m) (it is in S) and f(m) βŠ‘ m (because f(m) ∈ S too, by monotonicity, and m is maximal). It is maximal among fixed points (exists_maximal_fixedPoint).

Least fixed point. Having produced some fixed point m, we have f(m) βŠ‘ m, so Exercise 4.13(1) (the monotone-only intersection construction monoFix) applies and yields the least fixed point fix(f) = β‹‚{x ∣ f(x) βŠ‘ x} βŠ‘ m (exists_least_fixedPoint).

This is the explicitly classical exercise (Zorn ⟹ Classical.choice), exactly like Exercise 1.24; the chainUnion construction itself is choice-free.

theorem Domain.Neighborhood.NeighborhoodSystem.chainUnion_le {Ξ± : Type u_1} {V : NeighborhoodSystem Ξ±} (C : Set V.Element) (hne : C.Nonempty) (hchain : IsChain (fun (x1 x2 : V.Element) => x1 ≀ x2) C) {y : V.Element} (hy : βˆ€ x ∈ C, x ≀ y) :
V.chainUnion C hne hchain ≀ y

chainUnion C is the least upper bound of the chain: an upper bound y of every member dominates it.

theorem Domain.Neighborhood.NeighborhoodSystem.exists_maximal_fixedPoint {Ξ± : Type u_1} {V : NeighborhoodSystem Ξ±} (f : V.Element β†’ V.Element) (hf : Monotone f) :
βˆƒ (m : V.Element), f m = m ∧ βˆ€ (y : V.Element), f y = y β†’ m ≀ y β†’ y ≀ m

Exercise 4.15 (Scott 1981, PRG-19). A monotone f : |π’Ÿ| β†’ |π’Ÿ| has a maximal fixed point: some m with f(m) = m that admits no strictly larger fixed point.

theorem Domain.Neighborhood.NeighborhoodSystem.exists_least_fixedPoint {Ξ± : Type u_1} {V : NeighborhoodSystem Ξ±} (f : V.Element β†’ V.Element) (hf : Monotone f) :
βˆƒ (b : V.Element), f b = b ∧ βˆ€ (y : V.Element), f y = y β†’ b ≀ y

Exercise 4.15 (Scott 1981, PRG-19). A monotone f : |π’Ÿ| β†’ |π’Ÿ| has a least fixed point. (Having a maximal fixed point m gives a pre-fixed point f(m) βŠ‘ m; Exercise 4.13(1)'s monoFix then constructs the least fixed point β‹‚{x ∣ f(x) βŠ‘ x}.)