Documentation

LeanPool.DomainTheory.Neighborhood.Theorem41

Lecture IV (§4) — fixed points and recursion: Theorems 4.1 and 4.2 #

Following Dana Scott, Lectures on a Mathematical Theory of Computation, PRG-19 (1981), Lecture IV, Fixed points and recursion. The heart of the matter is the Fixed-point Theorem:

All data constructions (iterMap, fixElement, iterElem, fixMap) are choice-free (#print axioms ⊆ {propext, Quot.sound}); the uniqueness lemma fixMap_unique pulls Classical.choice only through the project's ext_of_toElementMap, as permitted.

The iterated map fⁿ. #

Theorem 4.1 (Scott 1981, PRG-19). The n-fold composition fⁿ of an endomap with itself: f⁰ = I_𝒟 and f^{n+1} = f ∘ fⁿ.

Equations
Instances For
    @[simp]
    theorem Domain.Neighborhood.ApproximableMap.comp_mono {α : Type u_1} {V : NeighborhoodSystem α} {f g a b : ApproximableMap V V} (hfg : f g) (hab : a b) :
    f.comp a g.comp b

    Composition is monotone in both arguments.

    theorem Domain.Neighborhood.ApproximableMap.iterMap_mono_map {α : Type u_1} {V : NeighborhoodSystem α} {f g : ApproximableMap V V} (hfg : f g) (n : ) :

    The iterate is monotone in the map: f ⊑ g ⟹ fⁿ ⊑ gⁿ (Scott's "fⁿ ⊆ gⁿ").

    f commutes with its own iterate: f ∘ fⁿ = fⁿ ∘ f. Proved by induction using associativity and the identity laws.

    theorem Domain.Neighborhood.ApproximableMap.rel_master_succ {α : Type u_1} {V : NeighborhoodSystem α} (f : ApproximableMap V V) {n : } {X : Set α} (h : (f.iterMap n).rel V.master X) :
    (f.iterMap (n + 1)).rel V.master X

    Scott's "a sequence for an Xx can always be extended": if Δ fⁿ X, then Δ f^{n+1} X (prepend a Δ-step, using Δ f Δ).

    theorem Domain.Neighborhood.ApproximableMap.rel_master_mono {α : Type u_1} {V : NeighborhoodSystem α} (f : ApproximableMap V V) {n m : } (hnm : n m) {X : Set α} (h : (f.iterMap n).rel V.master X) :
    (f.iterMap m).rel V.master X

    Monotonicity of the reachability relation in the number of steps: n ≤ m and Δ fⁿ X imply Δ fᵐ X.

    Theorem 4.1 — the least fixed point. #

    Theorem 4.1 (Scott 1981, PRG-19). The least fixed point of f, Scott's x = {X ∈ 𝒟 ∣ Δ fⁿ X for some n}. The three filter conditions are exactly Scott's: Δx (the n = 0 witness I_𝒟); closure under intersection follows from intersectivity (inter_right) of the single iterate f^{max n m} reached by extending the shorter chain; upward closure is mono.

    Equations
    Instances For
      @[simp]
      theorem Domain.Neighborhood.ApproximableMap.mem_fixElement {α : Type u_1} {V : NeighborhoodSystem α} (f : ApproximableMap V V) {X : Set α} :
      f.fixElement.mem X ∃ (n : ), (f.iterMap n).rel V.master X

      Theorem 4.1 (Scott 1981, PRG-19). fixElement f is a fixed point: f(x) = x. f(x) ⊆ x appends an f-step (Δ f^{n+1} X from Δ fⁿ X' f X); x ⊆ f(x) reads off the last step of the chain (the empty chain forces X = Δ, handled by master_mem/master_rel).

      Theorem 4.1 (Scott 1981, PRG-19). fixElement f is the least pre-fixed point: if f(z) ⊆ z, then xz. (Scott's induction: Δz, and Xz, X f Y give Y ∈ f(z) ⊆ z, so Δ fⁿ X implies Xz.) In particular x is the least element with f(x) = x.

      The least fixed point is monotone in the map: f ⊑ g ⟹ fix(f) ⊑ fix(g) (immediate from iterMap_mono_map; underlies the approximability of fix in 4.2).

      Theorem 4.2(iii) — the iterates fⁿ(⊥). #

      The n-th approximant fⁿ(⊥) of the least fixed point.

      Equations
      Instances For
        theorem Domain.Neighborhood.ApproximableMap.mem_iterElem {α : Type u_1} {V : NeighborhoodSystem α} (f : ApproximableMap V V) (n : ) {X : Set α} :
        (f.iterElem n).mem X (f.iterMap n).rel V.master X

        Y ∈ fⁿ(⊥) ↔ Δ fⁿ Y: the n-th approximant is the family of neighbourhoods reachable from Δ in exactly the n steps recorded by fⁿ.

        theorem Domain.Neighborhood.ApproximableMap.iterElem_mono {α : Type u_1} {V : NeighborhoodSystem α} (f : ApproximableMap V V) {n m : } (hnm : n m) :

        The approximants form an increasing chain: n ≤ m ⟹ fⁿ(⊥) ⊑ fᵐ(⊥).

        fⁿ(⊥) agrees with the iterated elementwise function (f(·))^[n] ⊥ — Scott's fⁿ(⊥).

        Theorem 4.2(iii) (Scott 1981, PRG-19). fix(f) = ⊔ₙ fⁿ(⊥), here as the directed union of the increasing chain of approximants.

        Theorem 4.2 — the approximable fixed-point operator fix. #

        Theorem 4.2 (Scott 1981, PRG-19). The fixed-point operator fix : (𝒟 → 𝒟) → 𝒟 as an approximable mapping. Built by the extension principle (Exercise 2.8, ofMono): on the finite element ↑F it returns fix(↑F), where ↑F = toApproxMap (principal hF) is the least map of the neighbourhood F (Proposition 3.9). Monotonicity of ↑F ↦ fix(↑F) is fixElement_mono composed with the order-iso funSpaceEquiv.

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

          On a finite element ↑F, fix returns fix(↑F) (the least fixed point of the least map of F).

          theorem Domain.Neighborhood.exists_principal_iterMap {α : Type u_1} (V : NeighborhoodSystem α) (φ : (funSpace V V).Element) (n : ) (X : Set α) :
          ((toApproxMap φ).iterMap n).rel V.master X∃ (W : Set (ApproximableMap V V)) (hw : φ.mem W), ((toApproxMap ((funSpace V V).principal )).iterMap n).rel V.master X

          Theorem 4.2 (Scott 1981, PRG-19) — Scott's equation (∗), hard half. A finite f-chain Δ (toApproxMap φ)ⁿ X factors through a single finite approximant F ∈ φ: there is a neighbourhood W ∈ φ whose least map already realizes the same chain Δ (↑W)ⁿ X. The witness W is accumulated as the intersection of the (finitely many) step-neighbourhoods used by the chain, which lies in φ because φ is a filter.

          Theorem 4.2 (Scott 1981, PRG-19) — Scott's equation (∗). The elementwise action of fix is the least fixed point of the corresponding map: fix.toElementMap φ = fix(toApproxMap φ). The forward inclusion (x) is exists_principal_iterMap; the reverse is monotonicity of fix along ↑W ⊑ toApproxMap φ.

          Theorem 4.2(i) (Scott 1981, PRG-19). fix(f) = f(fix(f)): the value of fix is a fixed point of the argument. (Equivalently eval(f, fix(f)) = fix(f) by evalMap_apply.)

          theorem Domain.Neighborhood.fixMap_least {α : Type u_1} (V : NeighborhoodSystem α) (φ : (funSpace V V).Element) {z : V.Element} (hz : (toApproxMap φ).toElementMap z z) :

          Theorem 4.2(ii) (Scott 1981, PRG-19). f(x) ⊆ x ⟹ fix(f) ⊆ x: fix lands in the least pre-fixed point.

          Theorem 4.2(iii) (Scott 1981, PRG-19). fix(f) = ⊔ₙ fⁿ(⊥) (as a directed union).

          fix applied to (the filter of) an approximable map f returns the least fixed point of f. This is the bridge to the "for any f : 𝒟 → 𝒟" form of Theorem 4.2, using the Theorem 3.10 isomorphism toApproxMap (toFilter f) = f.

          theorem Domain.Neighborhood.fixMap_unique {α : Type u_1} (V : NeighborhoodSystem α) (fax : ApproximableMap (funSpace V V) V) (h_fix : ∀ (φ : (funSpace V V).Element), (toApproxMap φ).toElementMap (fax.toElementMap φ) = fax.toElementMap φ) (h_least : ∀ (φ : (funSpace V V).Element) (z : V.Element), (toApproxMap φ).toElementMap z zfax.toElementMap φ z) :
          fax = fixMap V

          Theorem 4.2 (Scott 1981, PRG-19) — uniqueness. Any approximable operator fax satisfying (i) and (ii) coincides with fix. (Scott: from (i)(ii) one proves fix(f) ⊆ fax(f) and fax(f) ⊆ fix(f).)