Exercise 4.7 (Scott 1981, PRG-19, Lecture IV) #
Formula 4.2(iii) gives the least fixed point fix(f) = ⊔ₙ fⁿ(⊥). Suppose
instead that
a ∈ |𝒟| satisfies a ⊑ f(a). Will there be a fixed point x = f(x) with a ⊑ x?
Yes. Replace ⊥ by a: the chain a ⊑ f(a) ⊑ f²(a) ⊑ … is increasing
(monotonicity of f
applied to a ⊑ f(a)), hence directed, so its union x = ⊔ₙ fⁿ(a) is a genuine
element of |𝒟|
(Scott's hint: this is why ⊔ makes sense — directed unions of filters are
filters, Exercise 2.11 /
iSupDirected). Approximable maps preserve directed unions
(toElementMap_iSupDirected), which makes
x a fixed point, and a = f⁰(a) ⊑ x by construction. Moreover x is the
least fixed point above
a (fixAbove_least), the relativized analogue of 4.2(iii).
All constructions are choice-free (#print axioms ⊆ {propext, Quot.sound}).
The chain of approximants from a base point a: iterFrom f a n = fⁿ(a).
Equations
- f.iterFrom a n = f.toElementMap^[n] a
Instances For
One step of the chain: fⁿ(a) ⊑ fⁿ⁺¹(a) (proved choice-free by induction).
When a ⊑ f(a), the chain fⁿ(a) is monotone: n ≤ m ⟹ fⁿ(a) ⊑ fᵐ(a).
Proved by induction
on n ≤ m (so as to stay choice-free, unlike monotone_nat_of_le_succ).
The fixed point of f lying above a pre-fixed-point candidate a (with a ⊑ f(a)),
constructed as the directed union ⊔ₙ fⁿ(a).
Equations
Instances For
a ⊑ fixAbove f ha: the constructed fixed point lies above a (it is the n = 0 term).
Exercise 4.7 (Scott 1981, PRG-19). fixAbove f ha is a fixed point: f(x) = x.
Exercise 4.7 (Scott 1981, PRG-19). fixAbove f ha is the least fixed
point above a:
any z with a ⊑ z and f(z) ⊑ z lies above it. (Relativized form of 4.2(iii).)