Documentation

LeanPool.DomainTheory.Neighborhood.Exercise409

Exercise 4.9 (Scott 1981, PRG-19, Lecture IV) — the operator Ψ and `fix = #

fix(Ψ)`

Scott asks for an approximable operator

Ψ : ((𝒟 → 𝒟) → 𝒟) → ((𝒟 → 𝒟) → 𝒟) with Ψ(θ)(f) = f(θ(f)),

and then to prove that fix : (𝒟 → 𝒟) → 𝒟 is the least fixed point of Ψ — the true equation fix = fix(λF λf. f(F(f))) (cf. the text following Exercise 4.9).

Construction. Writing G = (𝒟 → 𝒟) and E = (G → 𝒟), the term λF λf. f(F(f)) is built from the cartesian-closed combinators: Ψ = curry Φ where Φ : E × G → 𝒟 is Φ = eval_{𝒟,𝒟} ∘ ⟨π_G, eval_{G,𝒟}⟩, sending ⟨F, f⟩ ↦ f(F(f)). Approximability is automatic (bigPsi); the defining equation Ψ(θ)(f) = f(θ(f)) is bigPsi_apply (Theorem 3.12's curry β-rule plus the eval/projection laws).

fix = fix(Ψ). Representing fix as the element toFilter (fixMap V) ∈ |E|:

The operator data bigPsi is choice-free; equalities of elements/operators go through the project's permitted Element.ext / ext_of_toElementMap.

Exercise 4.9 (Scott 1981, PRG-19). The approximable operator Ψ = λF λf. f(F(f)) on the higher-order domain E = ((𝒟 → 𝒟) → 𝒟), built as curry (eval ∘ ⟨π_G, eval⟩).

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    Exercise 4.9 (Scott 1981, PRG-19). The defining equation Ψ(θ)(f) = f(θ(f)).

    fix, as the element of E = ((𝒟 → 𝒟) → 𝒟) corresponding to the operator fixMap, unfolds under toApproxMap back to fixMap (the funSpace round-trip).

    Exercise 4.9 (Scott 1981, PRG-19). fix is a fixed point of Ψ: Ψ(fix) = fix.

    theorem Domain.Neighborhood.bigPsi_least {α : Type u_1} (V : NeighborhoodSystem α) (θ : (funSpace (funSpace V V) V).Element) ( : (bigPsi V).toElementMap θ θ) :

    Exercise 4.9 (Scott 1981, PRG-19). fix is the least pre-fixed point of Ψ: any θ with Ψ(θ) ⊑ θ satisfies fix ⊑ θ.

    Exercise 4.9 (Scott 1981, PRG-19). fix = fix(Ψ): fix is the least fixed point of Ψ, i.e. coincides with Theorem 4.1's canonical least fixed point fixElement Ψ.