Documentation

LeanPool.DomainTheory.ContinuousLattice.FunctionSpaces

Function spaces on continuous lattices (Scott 1972, §3) #

Scott's §3 studies spaces of continuous maps [X → Y] with the topology of pointwise convergence (subbasic sets {f | f x ∈ U}), the pointwise specialization order (3.2), and the fact that [D → D'] is a continuous lattice when D → D'] is (3.3).

March 1972 correction (Milner) #

Scott's remark before Proposition 2.5 was mistaken: a T₀-topology on a complete lattice need not have every open set Scott-open. The two extreme T₀-topologies inducing the same order are generated by {x | not x <= y} (lower) and {x | y ⊑ x} (principal up-sets). The corrected proofs of 2.9, 2.10, and 3.3 assume the given topology is coarser than the Scott (lattice) topology (scottTopologicalSpace ≤ τ in mathlib). We revisit that hypothesis when formalizing those results.

In the March 1972 correction (p. 135), Scott writes ⊔S′ (prime on the index, not on the join): for SD a subspace of ambient D′, ⊔S′ is the supremum of S computed in D′, while ⊔S is the supremum in the subspace D; the retraction identity is j(⊔S′) = ⊔S.

Definition 3.1 #

Subbasic sets for Scott's function-space topology (pointwise convergence).

Equations
Instances For
    @[reducible]

    Scott 1972, Definition 3.1. The function space [X → Y] carries the topology generated by {f : f x ∈ U | x ∈ X, U open in Y}.

    Equations
    Instances For
      @[reducible, inline]
      abbrev Domain.ContinuousLattice.ScottFunctionSpace (X : Type u_10) (Y : Type u_11) [TopologicalSpace X] [TopologicalSpace Y] :
      Type (max u_10 u_11)

      Scott's notation [X → Y]: continuous maps with the pointwise (product) topology.

      Equations
      Instances For

        Proposition 3.2 #

        theorem Domain.ContinuousLattice.scottFunctionSubbasis_isOpen {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {x : X} {U : Set Y} (hU : IsOpen U) :
        IsOpen {f : C(X, Y) | f x U}
        theorem Domain.ContinuousLattice.specializationLe_generateOpen {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (f g : C(X, Y)) (hfg : ∀ (x : X), SpecializationLe (f x) (g x)) {V : Set C(X, Y)} (hV : TopologicalSpace.GenerateOpen (scottFunctionEvalSubbasis X Y) V) (hf : f V) :
        g V
        theorem Domain.ContinuousLattice.proposition_3_2 {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f g : C(X, Y)} :
        SpecializationLe f g ∀ (x : X), SpecializationLe (f x) (g x)

        Scott 1972, Proposition 3.2. The specialization order on [X → Y] is pointwise.

        §3 on continuous lattices: pointwise lattice structure #

        @[reducible, inline]
        abbrev Domain.ContinuousLattice.ScottC (D : Type u_10) (D' : Type u_11) [CompleteLattice D] [CompleteLattice D'] :
        Type (max u_10 u_11)

        Continuous maps D → D' with Scott topologies on domain and codomain.

        Equations
        Instances For
          def Domain.ContinuousLattice.ScottMap (D : Type u_10) (D' : Type u_11) [CompleteLattice D] [CompleteLattice D'] :
          Type (max u_10 u_11)

          Continuous maps between complete lattices with Scott's induced topologies.

          Equations
          Instances For
            @[implicit_reducible]
            instance Domain.ContinuousLattice.ScottMap.instCoeFunForall {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] :
            CoeFun (ScottMap D D') fun (x : ScottMap D D') => DD'
            Equations
            theorem Domain.ContinuousLattice.ScottMap.ext {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {f g : ScottMap D D'} (h : ∀ (x : D), f x = g x) :
            f = g
            theorem Domain.ContinuousLattice.ScottMap.ext_iff {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {f g : ScottMap D D'} :
            f = g ∀ (x : D), f x = g x
            theorem Domain.ContinuousLattice.ScottMap.preservesDirectedSup_coe {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (f : ScottMap D D') (S : Set D) (hS : S.Nonempty) (hSdir : DirectedOn (fun (x1 x2 : D) => x1 x2) S) :
            f (sSup S) = sSup (f '' S)
            def Domain.ContinuousLattice.ScottMap.comp {D : Type u_3} {D' : Type u_4} {D'' : Type u_5} [CompleteLattice D] [CompleteLattice D'] [CompleteLattice D''] (f : ScottMap D' D'') (g : ScottMap D D') :
            ScottMap D D''

            Composition of Scott-continuous maps.

            Equations
            Instances For

              The constant Scott map with value c.

              Equations
              Instances For
                noncomputable def Domain.ContinuousLattice.ScottMap.bot {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] :

                The bottom Scott map, pointwise constantly .

                Equations
                Instances For

                  The pointwise order on Scott maps.

                  Equations
                  • f.le g = ∀ (x : D), f x g x
                  Instances For
                    noncomputable def Domain.ContinuousLattice.ScottMap.sup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (f g : ScottMap D D') :

                    The pointwise supremum of two Scott maps.

                    Equations
                    • f.sup g = fun (x : D) => f xg x,
                    Instances For
                      theorem Domain.ContinuousLattice.ScottMap.pointwise_sSup_preservesDirectedSup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (F : Set (ScottMap D D')) :
                      PreservesDirectedSup fun (x : D) => sSup ((fun (f : ScottMap D D') => f x) '' F)
                      noncomputable def Domain.ContinuousLattice.ScottMap.sSupMaps {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (F : Set (ScottMap D D')) :

                      The pointwise supremum of a set of Scott maps.

                      Equations
                      Instances For
                        theorem Domain.ContinuousLattice.ScottMap.sSupMaps_apply {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (F : Set (ScottMap D D')) (x : D) :
                        (sSupMaps F) x = sSup ((fun (f : ScottMap D D') => f x) '' F)

                        The complete lattice [D → D'] (Theorem 3.3, order content) #

                        The pointwise order makes ScottMap D D' a partial order; sSupMaps gives suprema (pointwise, since directed and arbitrary suprema of Scott maps are computed pointwise — Theorem 3.3). By completeLatticeOfSup this is a complete lattice. Note infima are not pointwise (Scott's warning); completeLatticeOfSup derives them as sSup of lower bounds.

                        @[implicit_reducible]
                        Equations
                        theorem Domain.ContinuousLattice.ScottMap.le_def {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {f g : ScottMap D D'} :
                        f g ∀ (x : D), f x g x
                        theorem Domain.ContinuousLattice.ScottMap.sSup_apply {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (F : Set (ScottMap D D')) (x : D) :
                        (sSup F) x = sSup ((fun (f : ScottMap D D') => f x) '' F)

                        The identity Scott map.

                        Equations
                        Instances For
                          @[simp]
                          theorem Domain.ContinuousLattice.ScottMap.comp_apply {D : Type u_3} {D' : Type u_4} {D'' : Type u_5} [CompleteLattice D] [CompleteLattice D'] [CompleteLattice D''] (f : ScottMap D' D'') (g : ScottMap D D') (x : D) :
                          (f.comp g) x = f (g x)
                          theorem Domain.ContinuousLattice.ScottMap.sup_apply {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (f g : ScottMap D D') (x : D) :
                          (fg) x = f xg x

                          The (completeLatticeOfSup-derived) binary join of Scott maps is computed pointwise.

                          theorem Domain.ContinuousLattice.ScottMap.bot_apply {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (x : D) :
                          x =

                          The bottom Scott map is the constant .

                          @[simp]
                          theorem Domain.ContinuousLattice.ScottMap.const_apply {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (c : D') (x : D) :
                          (const c) x = c

                          Theorem 3.3 (core) #

                          noncomputable def Domain.ContinuousLattice.theorem33sSup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (F : Set (ScottMap D D')) :

                          Scott 1972, Theorem 3.3 (directed sup). Pointwise suprema of Scott-continuous maps are Scott-continuous; this is the heart of Scott's proof that [D → D'] is a complete lattice.

                          Equations
                          Instances For
                            noncomputable def Domain.ContinuousLattice.theorem33Sup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (f g : ScottMap D D') :

                            Scott 1972, Theorem 3.3 (binary join). Pointwise join of Scott-continuous maps is Scott-continuous.

                            Equations
                            Instances For

                              Theorem 3.3 ([D → D'] is a continuous lattice) #

                              Scott's step functions ē[e, e'] are the building blocks: ē[e,e'](x) = e' if e ≪ x, else . We encode the conditional value as ⨆ _ : e ≪ x, e' (which is e' when e ≪ x and otherwise), avoiding any decidability assumption. Each step function is Scott-continuous (the way-above set {x | e ≪ x} is Scott-open), is way below f whenever e' ≪ f e, and f is the supremum of the step functions below it — whence [D → D'] is a continuous lattice.

                              noncomputable def Domain.ContinuousLattice.stepFun {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (e : D) (e' : D') (x : D) :
                              D'

                              The (value of the) step function ē[e, e'] at x: e' if e ≪ x, else .

                              Equations
                              Instances For
                                theorem Domain.ContinuousLattice.stepFun_of_wayBelow {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {e : D} {e' : D'} {x : D} (h : WayBelow e x) :
                                stepFun e e' x = e'
                                theorem Domain.ContinuousLattice.stepFun_of_not_wayBelow {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {e : D} {e' : D'} {x : D} (h : ¬WayBelow e x) :
                                stepFun e e' x =

                                Step functions are Scott-continuous: {x | e ≪ x} is Scott-open, so the conditional commutes with directed suprema.

                                noncomputable def Domain.ContinuousLattice.stepMap {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (e : D) (e' : D') :

                                The step function ē[e, e'] as a Scott map.

                                Equations
                                Instances For
                                  theorem Domain.ContinuousLattice.stepMap_apply_of_wayBelow {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {e : D} {e' : D'} {x : D} (h : WayBelow e x) :
                                  (stepMap e e') x = e'
                                  theorem Domain.ContinuousLattice.stepMap_le_of_wayBelow {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {e : D} {e' : D'} {g : ScottMap D D'} (h : WayBelow e' (g e)) :
                                  stepMap e e' g

                                  If e' ≪ g e then the step function ē[e, e'] lies below g (a pointwise argument).

                                  theorem Domain.ContinuousLattice.stepMap_wayBelow {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {e : D} {e' : D'} {f : ScottMap D D'} (he' : WayBelow e' (f e)) :
                                  WayBelow (stepMap e e') f

                                  The step function is way below f. If e' ≪ f e, then ē[e, e'] ≪ f in [D → D'], witnessed by the Scott-open set {g | e' ≪ g e} (open because suprema in [D → D'] are pointwise and {· ≪ ·} is inaccessible by directed suprema).

                                  theorem Domain.ContinuousLattice.stepMap_pointwise_sSup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (hD : IsContinuousLattice D) (hD' : IsContinuousLattice D') (f : ScottMap D D') (x : D) :
                                  sSup {e' : D' | ∃ (e : D), WayBelow e x WayBelow e' (f e)} = f x

                                  Pointwise reconstruction. For a Scott map f, the supremum of the values of the step functions below f recovers f x: f x = ⊔ {e' | ∃ e ≪ x, e' ≪ f e}. Uses continuity of D (x = ⊔{e | e ≪ x}), Scott-continuity of f, and continuity of D'.

                                  Scott 1972, Theorem 3.3 (order content). If D and D' are continuous lattices, then so is [D → D'] under the pointwise order. Every f is the supremum of the step functions way below it: f = ⊔ {ē[e,e'] | e' ≪ f e}, and each such step function is way below f.

                                  Theorem 3.3(b): the lattice topology = the topology of pointwise #

                                  convergence

                                  The Scott topology of the continuous lattice [D → D'] coincides with the product (pointwise convergence) topology, whose subbasis is {f | f x ∈ U} (U Scott-open in D'). One inclusion (pointwise ⊆ Scott) is immediate: each subbasic set is Scott-open in the lattice (joins are pointwise). The other (Scott ⊆ pointwise) is Scott's argument via the ↟φ basis of a continuous lattice: φ ≪ g forces φ ≤ ⊔ᵢ ē[eᵢ,eᵢ'] for finitely many pairs with eᵢ' ≪ g eᵢ, and the finite intersection ⋂ᵢ {h | eᵢ' ≪ h eᵢ} is a pointwise-open neighbourhood of g inside ↟φ.

                                  theorem Domain.ContinuousLattice.wayBelow_finset_sup {ι : Type u_10} {L : Type u_11} [CompleteLattice L] {s : Finset ι} {f : ιL} {g : L} (h : is, WayBelow (f i) g) :
                                  WayBelow (s.sup f) g

                                  A finite sup of elements way below g is way below g.

                                  Subbasic sets of the pointwise (product) topology on [D → D']: {f | f x ∈ U} for U Scott-open in D'.

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

                                    Scott 1972, Definition 3.1 (on lattices). The topology of pointwise convergence on [D → D'].

                                    Equations
                                    Instances For
                                      theorem Domain.ContinuousLattice.pointwiseSubbasic_isOpen {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (x : D) {U : Set D'} (hU : IsOpen U) :
                                      IsOpen {f : ScottMap D D' | f x U}
                                      theorem Domain.ContinuousLattice.pointwiseSubbasic_scottOpen {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (x : D) {U : Set D'} (hU : ScottOpen U) :
                                      ScottOpen {f : ScottMap D D' | f x U}

                                      Each pointwise-subbasic set {f | f x ∈ U} (U Scott-open) is Scott-open in the lattice [D → D'], because suprema there are pointwise. This is the easy inclusion pointwise ⊆ Scott.

                                      theorem Domain.ContinuousLattice.wayBelow_le_finset_sup_step {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (hD : IsContinuousLattice D) (hD' : IsContinuousLattice D') {φ g : ScottMap D D'} (h : WayBelow φ g) :
                                      ∃ (F : Finset (D × D')), (∀ pF, WayBelow p.2 (g p.1)) φ F.sup fun (p : D × D') => stepMap p.1 p.2

                                      Step-function decomposition of . If φ ≪ g in [D → D'], then φ lies below a finite join of step functions ē[eᵢ,eᵢ'] with eᵢ' ≪ g eᵢ. The finite joins of such step functions form a directed family with supremum g, so wayBelow_sSup_iff produces one above φ.

                                      Scott 1972, Theorem 3.3(b). The Scott (lattice) topology on [D → D'] agrees with the topology of pointwise convergence.

                                      Scott 1972, Theorem 3.3 (full statement). For continuous lattices D, D', the function space [D → D'] is a continuous lattice (theorem_3_3_isContinuousLattice) whose Scott topology agrees with the topology of pointwise convergence (theorem_3_3_topology).

                                      Corollary 3.4 #

                                      theorem Domain.ContinuousLattice.scottFunctionSubbasis_isOpen_scott {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {x : D} {U : Set D'} (hU : IsOpen U) :
                                      IsOpen {f : ScottC D D' | f x U}
                                      theorem Domain.ContinuousLattice.corollary_3_4_eval_on_C {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (x : D) :
                                      Continuous fun (f : ScottC D D') => f x
                                      theorem Domain.ContinuousLattice.corollary_3_4 {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (x : D) :
                                      Continuous fun (f : ScottC D D') => f x

                                      Scott 1972, Corollary 3.4 (fixed x). Evaluation at fixed x is continuous on [D → D'] (with Scott topologies on D and D'); this is one half of the separate-continuity input to joint continuity.

                                      Scott 1972, Corollary 3.4 (joint continuity, core). Evaluation [D → D'] × D → D', (f, x) ↦ f x, preserves directed suprema. By Proposition 2.6 it suffices to check separate Scott-continuity: in x (with f fixed) it is f's own continuity, and in f (with x fixed) it is the pointwise formula for suprema in [D → D'] (ScottMap.sSup_apply).

                                      theorem Domain.ContinuousLattice.corollary_3_4_jointly_continuous {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] :
                                      Continuous fun (p : ScottMap D D' × D) => p.1 p.2

                                      Scott 1972, Corollary 3.4. The evaluation map eval : [D → D'] × D → D', (f, x) ↦ f x, is (jointly) Scott-continuous. Via Theorem 3.3(b) and Proposition 2.9(b) the Scott topology of the product lattice is the product of the pointwise topology on [D → D'] and the Scott topology on D, so this is exactly joint continuity for Scott's product topology.

                                      Proposition 3.5 (currying) #

                                      theorem Domain.ContinuousLattice.sSup_image_prod_mk_left {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (x : D) (S : Set D') (hS : S.Nonempty) :
                                      sSup ((fun (y : D') => (x, y)) '' S) = (x, sSup S)
                                      theorem Domain.ContinuousLattice.curry_right_preservesDirectedSup {D : Type u_3} {D' : Type u_4} {D'' : Type u_5} [CompleteLattice D] [CompleteLattice D'] [CompleteLattice D''] (f : ScottMap (D × D') D'') (x : D) :
                                      PreservesDirectedSup fun (y : D') => f (x, y)
                                      noncomputable def Domain.ContinuousLattice.scottLambdaAt {D : Type u_3} {D' : Type u_4} {D'' : Type u_5} [CompleteLattice D] [CompleteLattice D'] [CompleteLattice D''] (f : ScottMap (D × D') D'') (x : D) :
                                      ScottMap D' D''

                                      Scott 1972, Proposition 3.5 (right). Currying in the y-variable is Scott-continuous.

                                      Equations
                                      Instances For
                                        theorem Domain.ContinuousLattice.sSup_image_prod_mk_right {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (y : D') (S : Set D) (hS : S.Nonempty) :
                                        sSup ((fun (x : D) => (x, y)) '' S) = (sSup S, y)
                                        theorem Domain.ContinuousLattice.curry_left_preservesDirectedSup {D : Type u_3} {D' : Type u_4} {D'' : Type u_5} [CompleteLattice D] [CompleteLattice D'] [CompleteLattice D''] (f : ScottMap (D × D') D'') (y : D') :
                                        PreservesDirectedSup fun (x : D) => f (x, y)

                                        Currying in the x-variable: x ↦ f (x, y) is Scott-continuous (used for continuity of lambda f as a map D → [D' → D'']).

                                        The outer half of currying: x ↦ (y ↦ f (x, y)) preserves directed suprema (so lambda f is a Scott map D → [D' → D'']). Equality in [D' → D''] is pointwise, reducing to curry_left.

                                        noncomputable def Domain.ContinuousLattice.scottLambda {D : Type u_3} {D' : Type u_4} {D'' : Type u_5} [CompleteLattice D] [CompleteLattice D'] [CompleteLattice D''] (f : ScottMap (D × D') D'') :
                                        ScottMap D (ScottMap D' D'')

                                        Scott 1972, Proposition 3.5. Functional abstraction lambda : [[D × D'] → D''] → [D → [D' → D'']], lambda f x y = f (x, y). By Theorem 3.3, [D → [D' → D'']] is itself a continuous lattice, and lambda f is a Scott map.

                                        Equations
                                        Instances For
                                          @[simp]
                                          theorem Domain.ContinuousLattice.scottLambda_apply {D : Type u_3} {D' : Type u_4} {D'' : Type u_5} [CompleteLattice D] [CompleteLattice D'] [CompleteLattice D''] (f : ScottMap (D × D') D'') (x : D) (y : D') :
                                          ((scottLambda f) x) y = f (x, y)

                                          lambda preserves directed suprema: both sides evaluate, pointwise at (x, y), to ⊔ {f (x, y) | f ∈ 𝓕}, since suprema in every function lattice involved are pointwise.

                                          Scott 1972, Proposition 3.5. Functional abstraction lambda is Scott-continuous.

                                          Definition 3.6 #

                                          structure Domain.ContinuousLattice.IsContinuousLatticeRetraction (D : Type u_10) (D' : Type u_11) [CompleteLattice D] [CompleteLattice D'] :
                                          Type (max u_10 u_11)

                                          Scott 1972, Definition 3.6. A retraction of continuous lattices.

                                          • incl : ScottMap D D'

                                            The inclusion map into the ambient lattice.

                                          • retr : ScottMap D' D

                                            The retraction map back to the sublattice.

                                          • retr_incl (d : D) : self.retr (self.incl d) = d
                                          Instances For

                                            Scott 1972, Definition 3.6. A projection of continuous lattices: a retract with i ∘ j ⊑ id.

                                            Instances For

                                              Scott 1972, Prop 2.10 / March 1972 correction (p. 135). For SD a subspace of ambient D', write ⊔S′ for the supremum of S computed in D' (Scott's prime is on the index, not the join). This is sSup (i '' S) in Lean.

                                              Equations
                                              Instances For
                                                theorem Domain.ContinuousLattice.IsContinuousLatticeRetraction.retr_ambientSSup_eq_sSup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (R : IsContinuousLatticeRetraction D D') (S : Set D) (hS : S.Nonempty) (hdir : DirectedOn (fun (x1 x2 : D) => x1 x2) S) :
                                                R.retr (R.ambientSSup S) = sSup S

                                                Scott 1972, Prop 2.10 / March 1972 correction (p. 135). For directed SD, j(⊔S′) = ⊔S: the retraction sends the ambient join back to the subspace join.

                                                The inclusion of a retraction preserves directed suprema (it is a Scott map).

                                                Heart of Scott's proof of 2.10. If x' ≪ i(d) in the ambient continuous lattice D', then its image j(x') is way below d in the retract D. The Scott-open witness in D is the preimage i⁻¹V' of an ambient Scott-open witness V' (Scott-open because i preserves directed suprema); for z ∈ i⁻¹V' we have x' ⊑ i(z), hence j(x') ⊑ j(i(z)) = z. No projection hypothesis is needed — j ∘ i = id and monotonicity suffice.

                                                For d in the retract, the ambient way-below set of i(d) pushed back by j is a directed family whose supremum (computed in D) is d. This is the identity j(⊔S′) = ⊔S applied to S = {j(x') : x' ≪ i(d)}, combined with continuity of D'.

                                                Proposition 2.10: a retract of a continuous lattice is a continuous #

                                                lattice

                                                Scott 1972, Proposition 2.10(a). A (Scott-continuous) retract of a continuous lattice is a continuous lattice. For dD we have, in the ambient D', i(d) = ⊔{x' | x' ≪ i(d)}; applying the retraction j (which preserves this directed supremum) gives d = ⊔{j(x') | x' ≪ i(d)} in D, and each j(x') ≪ d by retr_wayBelow_of_wayBelow_incl. Hence any upper bound of {x | x ≪ d} dominates d, so d = ⊔{x | x ≪ d}.

                                                Scott 1972, Proposition 2.10(b) (March 1972 / Milner correction). The Scott topology of the retract D coincides with the subspace topology induced from the ambient D' along i.

                                                • scott ≤ induced: each induced-open i⁻¹V' is Scott-open in D because i is a Scott map.
                                                • induced ≤ scott: the sets i⁻¹(↟x') = {z | x' ≪ i(z)} (x' ∈ D') are a basis of D's Scott topology — given a Scott-open U ∋ d, the directed family {j(x') | x' ≪ i(d)} (sup d) meets U at some j(x'), and i⁻¹(↟x') ⊆ U since x' ≪ i(z) ⟹ j(x') ⊑ z with U upper. Each such basic set is induced-open by construction, so every Scott-open of D is induced-open.

                                                Scott 1972, Proposition 2.10 (full statement). A retract of a continuous lattice is a continuous lattice (proposition_2_10_a) whose Scott topology agrees with the subspace topology (proposition_2_10_b).

                                                Proposition 3.7 #

                                                structure Domain.ContinuousLattice.ScottMapRetraction (D₀ : Type u_10) (D₀' : Type u_11) (D₁ : Type u_12) (D₁' : Type u_13) [CompleteLattice D₀] [CompleteLattice D₀'] [CompleteLattice D₁] [CompleteLattice D₁'] :
                                                Type (max (max (max u_10 u_11) u_12) u_13)

                                                Scott 1972, Proposition 3.7 (retraction half). If D_n is a retract of D'_n (n = 0,1), then [D₀ → D₁] is a retract of [D'₀ → D'₁] via f ↦ i₁ ∘ f ∘ j₀ and f' ↦ j₁ ∘ f' ∘ i₀.

                                                • incl : ScottMap D₀ D₁ScottMap D₀' D₁'

                                                  The induced inclusion on function spaces.

                                                • retr : ScottMap D₀' D₁'ScottMap D₀ D₁

                                                  The induced retraction on function spaces.

                                                • retr_incl (f : ScottMap D₀ D₁) : self.retr (self.incl f) = f
                                                Instances For
                                                  structure Domain.ContinuousLattice.ScottMapProjection (D₀ : Type u_10) (D₀' : Type u_11) (D₁ : Type u_12) (D₁' : Type u_13) [CompleteLattice D₀] [CompleteLattice D₀'] [CompleteLattice D₁] [CompleteLattice D₁'] extends Domain.ContinuousLattice.ScottMapRetraction D₀ D₀' D₁ D₁' :
                                                  Type (max (max (max u_10 u_11) u_12) u_13)

                                                  Scott 1972, Proposition 3.7 (projection half). Under the same hypotheses with projections, the induced pair on function spaces is also a projection.

                                                  Instances For
                                                    def Domain.ContinuousLattice.ScottMapRetraction.functionSpace {D₀ : Type u_6} {D₀' : Type u_7} {D₁ : Type u_8} {D₁' : Type u_9} [CompleteLattice D₀] [CompleteLattice D₀'] [CompleteLattice D₁] [CompleteLattice D₁'] (R₀ : IsContinuousLatticeRetraction D₀ D₀') (R₁ : IsContinuousLatticeRetraction D₁ D₁') :
                                                    ScottMapRetraction D₀ D₀' D₁ D₁'

                                                    The function-space retraction induced by retractions on the domain and codomain.

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      def Domain.ContinuousLattice.ScottMapProjection.functionSpace {D₀ : Type u_6} {D₀' : Type u_7} {D₁ : Type u_8} {D₁' : Type u_9} [CompleteLattice D₀] [CompleteLattice D₀'] [CompleteLattice D₁] [CompleteLattice D₁'] (P₀ : IsContinuousLatticeProjection D₀ D₀') (P₁ : IsContinuousLatticeProjection D₁ D₁') :
                                                      ScottMapProjection D₀ D₀' D₁ D₁'

                                                      The function-space projection induced by projections on the domain and codomain.

                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        def Domain.ContinuousLattice.proposition37Retraction {D₀ : Type u_6} {D₀' : Type u_7} {D₁ : Type u_8} {D₁' : Type u_9} [CompleteLattice D₀] [CompleteLattice D₀'] [CompleteLattice D₁] [CompleteLattice D₁'] (R₀ : IsContinuousLatticeRetraction D₀ D₀') (R₁ : IsContinuousLatticeRetraction D₁ D₁') :
                                                        ScottMapRetraction D₀ D₀' D₁ D₁'

                                                        Scott 1972, Proposition 3.7 (retraction). Function spaces inherit retractions.

                                                        Equations
                                                        Instances For
                                                          def Domain.ContinuousLattice.proposition37Projection {D₀ : Type u_6} {D₀' : Type u_7} {D₁ : Type u_8} {D₁' : Type u_9} [CompleteLattice D₀] [CompleteLattice D₀'] [CompleteLattice D₁] [CompleteLattice D₁'] (P₀ : IsContinuousLatticeProjection D₀ D₀') (P₁ : IsContinuousLatticeProjection D₁ D₁') :
                                                          ScottMapProjection D₀ D₀' D₁ D₁'

                                                          Scott 1972, Proposition 3.7 (projection). Function spaces inherit projections.

                                                          Equations
                                                          Instances For

                                                            Proposition 3.10 #

                                                            Scott 1972, Proposition 3.10(ii). The inclusion map of a projection is injective.

                                                            Scott 1972, Proposition 3.10(i), empty case. i(⊥) = ⊥.

                                                            theorem Domain.ContinuousLattice.IsContinuousLatticeProjection.incl_sup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (P : IsContinuousLatticeProjection D D') (x y : D) :
                                                            P.incl (xy) = P.incl xP.incl y

                                                            Scott 1972, Proposition 3.10(i), binary case. i(x ⊔ y) = i(x) ⊔ i(y).

                                                            theorem Domain.ContinuousLattice.IsContinuousLatticeProjection.incl_finset_sup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (P : IsContinuousLatticeProjection D D') (T : Finset D) :
                                                            P.incl (T.sup fun (x : D) => x) = T.sup fun (x : D) => P.incl x

                                                            Finite sub-lubs used in Scott's proof of Proposition 3.10(i).

                                                            Equations
                                                            Instances For

                                                              Scott 1972, Proposition 3.10(i). Projections preserve arbitrary suprema.

                                                              Scott 1972, Proposition 3.10(iii). Projections preserve the way-below relation.

                                                              theorem Domain.ContinuousLattice.IsContinuousLatticeProjection.proposition_3_10_forward {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (P : IsContinuousLatticeProjection D D') (hD' : IsContinuousLattice D') :
                                                              (∀ (S : Set D), P.incl (sSup S) = sSup (P.incl '' S)) Function.Injective P.incl ∀ (x y : D), WayBelow x yWayBelow (P.incl x) (P.incl y)

                                                              Scott 1972, Proposition 3.10(i)–(iii), bundled. The inclusion i of a projection preserves arbitrary suprema, is injective, and preserves the way-below relation.

                                                              Scott 1972, Proposition 3.10(iv), uniqueness. The retraction of any projection is forced to be Scott's formula j(x') = ⊔ { x | i(x) ⊑ x' }. : j(x') itself satisfies i(j x') ⊑ x' (by i ∘ j ⊑ id), so it is a member of the set; : each member x (with i x ⊑ x') satisfies x = j(i x) ⊑ j(x') by j ∘ i = id and monotonicity.

                                                              Proposition 3.10, converse direction #

                                                              Given a map i : D → D' satisfying (i)–(iii), Scott's formula (iv) j(x') = ⊔ { x | i(x) ⊑ x' } is the unique continuous retraction making D a projection of D'.

                                                              noncomputable def Domain.ContinuousLattice.converseRetr {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] (i : DD') (x' : D') :
                                                              D

                                                              Scott 1972, Proposition 3.10(iv). Scott's candidate retraction j(x') = ⊔ { x | i(x) ⊑ x' }.

                                                              Equations
                                                              Instances For
                                                                theorem Domain.ContinuousLattice.incl_sup_of_preservesSSup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {i : DD'} (hi : ∀ (S : Set D), i (sSup S) = sSup (i '' S)) (x y : D) :
                                                                i (xy) = i xi y

                                                                From (i): i preserves binary joins (Scott checks (i) on two-element sets).

                                                                theorem Domain.ContinuousLattice.incl_mono_of_preservesSSup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {i : DD'} (hi : ∀ (S : Set D), i (sSup S) = sSup (i '' S)) :

                                                                From (i): i is monotone.

                                                                theorem Domain.ContinuousLattice.le_of_incl_le {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {i : DD'} (hi : ∀ (S : Set D), i (sSup S) = sSup (i '' S)) (hinj : Function.Injective i) {x y : D} (h : i x i y) :
                                                                x y

                                                                From (i)+(ii): i is order-reflecting (xy ↔ i x ⊑ i y), since xyxy = y.

                                                                theorem Domain.ContinuousLattice.incl_converseRetr_le {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {i : DD'} (hi : ∀ (S : Set D), i (sSup S) = sSup (i '' S)) (x' : D') :
                                                                i (converseRetr i x') x'

                                                                i ∘ j ⊑ id (uses only (i)).

                                                                theorem Domain.ContinuousLattice.converseRetr_incl {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {i : DD'} (hi : ∀ (S : Set D), i (sSup S) = sSup (i '' S)) (hinj : Function.Injective i) (y : D) :
                                                                converseRetr i (i y) = y

                                                                j ∘ i = id (uses (i)+(ii)): {x | i x ⊑ i y} = Iic y, whose join is y.

                                                                theorem Domain.ContinuousLattice.converseRetr_preservesDirectedSup {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {i : DD'} (_hi : ∀ (S : Set D), i (sSup S) = sSup (i '' S)) (hwb : ∀ {x y : D}, WayBelow x yWayBelow (i x) (i y)) (hD : IsContinuousLattice D) :

                                                                j is Scott-continuous (uses (i)+(iii) and continuity of D). For directed S': monotonicity gives ⊔ j''S' ⊑ j(⊔S'); conversely if i x ⊑ ⊔S' then for every zx we have i z ≪ i x ⊑ ⊔S', so i z ⊑ x' for some x' ∈ S' (directedness), whence z ⊑ j(x') ⊑ ⊔ j''S'; continuity of D then gives x ⊑ ⊔ j''S'.

                                                                noncomputable def Domain.ContinuousLattice.converseProjection {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {i : DD'} (hi : ∀ (S : Set D), i (sSup S) = sSup (i '' S)) (hinj : Function.Injective i) (hwb : ∀ {x y : D}, WayBelow x yWayBelow (i x) (i y)) (hD : IsContinuousLattice D) :

                                                                The projection assembled from a map i satisfying 3.10(i)–(iii).

                                                                Equations
                                                                Instances For
                                                                  theorem Domain.ContinuousLattice.proposition_3_10_converse {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {i : DD'} (hi : ∀ (S : Set D), i (sSup S) = sSup (i '' S)) (hinj : Function.Injective i) (hwb : ∀ {x y : D}, WayBelow x yWayBelow (i x) (i y)) (hD : IsContinuousLattice D) :
                                                                  ∃ (P : IsContinuousLatticeProjection D D'), (∀ (d : D), P.incl d = i d) ∀ (x' : D'), P.retr x' = sSup {x : D | i x x'}

                                                                  Scott 1972, Proposition 3.10 (converse). If i : D → D' (between continuous lattices) satisfies (i) preservation of arbitrary suprema, (ii) injectivity, and (iii) preservation of , then there is a continuous j making D a projection of D' via i, with j given by Scott's formula (iv) j(x') = ⊔ { x | i(x) ⊑ x' }.

                                                                  Proposition 3.8 #

                                                                  noncomputable def Domain.ContinuousLattice.scottSubspaceExtendInf {D : Type u_3} [CompleteLattice D] {X : Type u_10} {Y : Type u_11} (e : XY) (f : XD) (U : Set Y) :
                                                                  D

                                                                  Scott 1972, Proposition 3.8. The infimum term ⊓ { f(x) : e(x) ∈ U } for open U ⊆ Y.

                                                                  Equations
                                                                  Instances For
                                                                    noncomputable def Domain.ContinuousLattice.scottSubspaceExtend {D : Type u_3} [CompleteLattice D] {X : Type u_10} {Y : Type u_11} [CompleteLattice Y] (e : XY) (f : XD) (y : Y) :
                                                                    D

                                                                    Scott 1972, Proposition 3.8. Scott's maximal subspace extension fbar : Y → D.

                                                                    Equations
                                                                    Instances For
                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtendInf_le_of_mem {D : Type u_3} [CompleteLattice D] {Y : Type u_11} [CompleteLattice Y] {f' : ScottMap Y D} {U : Set Y} {y : Y} (hyU : y U) :
                                                                      sInf (f' '' U) f' y
                                                                      theorem Domain.ContinuousLattice.sInf_image_le_sInf_image_of_subset {D : Type u_3} [CompleteLattice D] {α : Type u_12} {f : αD} {S T : Set α} (hST : S T) :
                                                                      sInf (f '' T) sInf (f '' S)
                                                                      theorem Domain.ContinuousLattice.scottMap_eq_sSup_openInfs {D : Type u_3} [CompleteLattice D] {Y : Type u_11} [CompleteLattice Y] (hD : IsContinuousLattice D) (f' : ScottMap Y D) (y : Y) :
                                                                      f' y = sSup {d : D | ∃ (U : Set Y), IsOpen U y U d = sInf (f' '' U)}
                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtendInf_eq_of_comp {D : Type u_3} [CompleteLattice D] {X : Type u_10} {Y : Type u_11} [CompleteLattice Y] {e : XY} {f : XD} {U : Set Y} (f' : ScottMap Y D) (h : ∀ (x : X), f' (e x) = f x) :
                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtend_maximal {D : Type u_3} [CompleteLattice D] {X : Type u_10} {Y : Type u_11} [TopologicalSpace X] [TopologicalSpace Y] [CompleteLattice Y] (hD : IsContinuousLattice D) (e : XY) (_he : Topology.IsEmbedding e) (f : XD) (f' : ScottMap Y D) (h_ext : ∀ (x : X), f' (e x) = f x) (y : Y) :
                                                                      f' y scottSubspaceExtend e f y

                                                                      Scott 1972, Proposition 3.8 (subspace variant). fbar (with the Scott topology on Y) is the maximal extension along a subspace embedding. The faithful statement (arbitrary topology on Y) is proposition_3_8 in Constructions.lean.

                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtendInf_mono {D : Type u_3} [CompleteLattice D] {X : Type u_10} {Y : Type u_11} {e : XY} {f g₀ : XD} (hfg : ∀ (x : X), f x g₀ x) (U : Set Y) :
                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtend_mono {D : Type u_3} [CompleteLattice D] {X : Type u_10} {Y : Type u_11} [CompleteLattice Y] {e : XY} {f g₀ : XD} (hfg : ∀ (x : X), f x g₀ x) (y : Y) :
                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtendInf_eq_of_ext {D : Type u_3} [CompleteLattice D] {X : Type u_10} {Y : Type u_11} {e : XY} {f g' : XD} (h : ∀ (x : X), f x = g' x) (U : Set Y) :
                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtend_eq_of_ext {D : Type u_3} [CompleteLattice D] {X : Type u_10} {Y : Type u_11} [CompleteLattice Y] {e : XY} {f g' : XD} (h : ∀ (x : X), f x = g' x) (y : Y) :
                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtendInf_mono_retr {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {X : Type u_10} {Y : Type u_11} {e : XY} {g : XD'} (P : IsContinuousLatticeProjection D D') (U : Set Y) :
                                                                      P.retr (scottSubspaceExtendInf e g U) scottSubspaceExtendInf e (fun (x : X) => P.retr (g x)) U
                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtendInf_mono_incl {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {X : Type u_10} {Y : Type u_11} {e : XY} {f : XD} {g : XD'} (P : IsContinuousLatticeProjection D D') (hfg : ∀ (x : X), f x = P.retr (g x)) (U : Set Y) :
                                                                      scottSubspaceExtendInf e (fun (x : X) => P.incl (f x)) U scottSubspaceExtendInf e g U
                                                                      theorem Domain.ContinuousLattice.scottSubspaceExtendInf_mono_incl_apply {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {X : Type u_10} {Y : Type u_11} {e : XY} {f : XD} (U : Set Y) (P : IsContinuousLatticeProjection D D') :
                                                                      P.incl (scottSubspaceExtendInf e f U) scottSubspaceExtendInf e (fun (x : X) => P.incl (f x)) U
                                                                      theorem Domain.ContinuousLattice.lemma_3_9_incl_inf {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {X : Type u_10} {Y : Type u_11} {e : XY} (P : IsContinuousLatticeProjection D D') {f : XD} {g : XD'} (hfg : ∀ (x : X), f x = P.retr (g x)) (U : Set Y) :

                                                                      Scott 1972, Lemma 3.9 (inclusion at infimum level). Used in the inverse-limit argument (Theorem 4.4).

                                                                      theorem Domain.ContinuousLattice.lemma_3_9_retr_inf {D : Type u_3} {D' : Type u_4} [CompleteLattice D] [CompleteLattice D'] {X : Type u_10} {Y : Type u_11} {e : XY} (P : IsContinuousLatticeProjection D D') {g : XD'} (U : Set Y) :
                                                                      P.retr (scottSubspaceExtendInf e g U) scottSubspaceExtendInf e (fun (x : X) => P.retr (g x)) U

                                                                      Scott 1972, Lemma 3.9 (retraction at infimum level). The global equality fbar = j ∘ gbar assembles these infimum bounds via Proposition 3.10(i).

                                                                      Definition 3.11 / Proposition 3.12: the lattice of projections J_D #

                                                                      Scott 1972, Definition 3.11. J_D = { j ∈ [D → D] : j = j ∘ j ⊑ id }: the Scott-continuous projections of D (idempotent self-maps below the identity), as a predicate on [D → D].

                                                                      Equations
                                                                      Instances For
                                                                        theorem Domain.ContinuousLattice.isProjection_iff {D : Type u_3} [CompleteLattice D] {j : ScottMap D D} :
                                                                        IsProjection j (∀ (x : D), j (j x) = j x) ∀ (x : D), j x x

                                                                        Pointwise characterization of projections: idempotent and deflationary.

                                                                        (the constant map) is a projection — Scott's ⊔∅ ∈ J_D.

                                                                        J_D is closed under binary joins (Scott 1972, 3.12). The key step: since j x ⊔ k xx, monotonicity and idempotency force j (j x ⊔ k x) = j x and k (j x ⊔ k x) = k x.

                                                                        J_D is closed under finite joins.

                                                                        theorem Domain.ContinuousLattice.isProjection_directedSup {D : Type u_3} [CompleteLattice D] {S : Set (ScottMap D D)} (hSne : S.Nonempty) (hSdir : DirectedOn (fun (x1 x2 : ScottMap D D) => x1 x2) S) (hS : jS, IsProjection j) :

                                                                        J_D is closed under directed joins (Scott 1972, 3.12). Continuity of each member lets the inner (⊔S)-application distribute over the directed family { j x : j ∈ S }, and directedness plus idempotency collapse the double family { k (j x) } to (⊔S) x.

                                                                        theorem Domain.ContinuousLattice.isProjection_sSup {D : Type u_3} [CompleteLattice D] {T : Set (ScottMap D D)} (hT : jT, IsProjection j) :

                                                                        Scott 1972, Proposition 3.12 (-closure). J_D is closed under arbitrary suprema in [D → D]: every supremum is the directed supremum of finite sub-joins (finsetSupOf), each a projection by isProjection_finsetSup.

                                                                        @[reducible, inline]

                                                                        Scott 1972, Definition 3.11. The space J_D of projections of D, as a subtype of [D → D].

                                                                        Equations
                                                                        Instances For
                                                                          @[implicit_reducible]

                                                                          Scott 1972, Proposition 3.12. J_D is a complete lattice (a -closed subspace of [D → D]). Suprema are inherited from [D → D]; infima are derived by completeLatticeOfSup.

                                                                          Equations

                                                                          Scott 1972, Proposition 3.12. For a (complete, in particular continuous) lattice D, the projections J_D form a complete lattice as a -closed subspace of [D → D]: the -closure is isProjection_sSup, and the complete-lattice structure is Projections.instCompleteLattice.

                                                                          Proposition 3.13: D is a projection of [D → D] #

                                                                          Scott 1972, Proposition 3.13. con : D → [D → D] sends x to the constant function x.

                                                                          Equations
                                                                          Instances For

                                                                            Scott 1972, Proposition 3.13. min : [D → D] → D sends f to its least value f(⊥).

                                                                            Equations
                                                                            Instances For
                                                                              @[simp]
                                                                              theorem Domain.ContinuousLattice.Proposition313.con_apply {D : Type u_3} [CompleteLattice D] (x y : D) :
                                                                              (con x) y = x

                                                                              Scott 1972, Proposition 3.13. (con, min) makes D a projection of [D → D]: mincon = id (a constant's least value is its value) and conminid (the constant f(⊥) is ≤ f pointwise, since f(⊥) ⊑ f(y) by monotonicity).

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

                                                                                Scott 1972, Proposition 3.13. Every continuous lattice D is a projection of its function space [D → D], via con/min (Proposition313.projection).

                                                                                Proposition 3.14: the fixed-point operator fix : [D → D] → D #

                                                                                The monotone map underlying a Scott map, suitable for OrderHom.lfp.

                                                                                Equations
                                                                                Instances For
                                                                                  noncomputable def Domain.ContinuousLattice.Proposition314.fix {D : Type u_3} [CompleteLattice D] (f : ScottMap D D) :
                                                                                  D

                                                                                  Scott 1972, Proposition 3.14. fix f is the least (pre-)fixed point of f, supplied by mathlib's OrderHom.lfp.

                                                                                  Equations
                                                                                  Instances For

                                                                                    fix f is a fixed point of f.

                                                                                    theorem Domain.ContinuousLattice.Proposition314.fix_le {D : Type u_3} [CompleteLattice D] {f : ScottMap D D} {x : D} (h : f x x) :
                                                                                    fix f x

                                                                                    fix f is below every pre-fixed point: f xxfix f ⊑ x.

                                                                                    theorem Domain.ContinuousLattice.Proposition314.fix_mono {D : Type u_3} [CompleteLattice D] {f f' : ScottMap D D} (hff' : f f') :
                                                                                    fix f fix f'

                                                                                    fix is monotone in f: if f ⊑ f' then fix f ⊑ fix f', since f (fix f') ⊑ f' (fix f') = fix f' makes fix f' a pre-fixed point of f.

                                                                                    Scott 1972, Proposition 3.14 (continuity). fix preserves directed suprema. Direct lattice argument (no Kleene iteration): write g = ⊔S and a = ⊔{fix f : f ∈ S}. The reverse bound a ⊑ fix g is fix-monotonicity. For fix g ⊑ a it suffices (by fix_le) that a is a pre-fixed point of g. Now g a = ⊔_{f∈S} f a (pointwise sup), and each f a = ⊔_{f'∈S} f (fix f') (continuity of f on the directed family {fix f'}); for any f, f' ∈ S pick h ∈ S above both, so f (fix f') ⊑ h (fix f') ⊑ h (fix h) = fix h ⊑ a. Hence g a ⊑ a.

                                                                                    Scott 1972, Proposition 3.14. The fixed-point operator as a Scott-continuous map.

                                                                                    Equations
                                                                                    Instances For
                                                                                      theorem Domain.ContinuousLattice.Proposition314.fix_unique {D : Type u_3} [CompleteLattice D] {f : ScottMap D D} {a : D} (hfix : f a = a) (hleast : ∀ (x : D), f x xa x) :
                                                                                      a = fix f

                                                                                      Uniqueness: any value that is a fixed point of f and below every pre-fixed point equals fix f (the least fixed point is unique).

                                                                                      theorem Domain.ContinuousLattice.proposition_3_14 {D : Type u_3} [CompleteLattice D] (_hD : IsContinuousLattice D) :
                                                                                      ∃ (Fix : ScottMap (ScottMap D D) D), (∀ (f : ScottMap D D), f (Fix f) = Fix f) (∀ (f : ScottMap D D) (x : D), f x xFix f x) ∀ (g : ScottMap D DD), (∀ (f : ScottMap D D), f (g f) = g f)(∀ (f : ScottMap D D) (x : D), f x xg f x)∀ (f : ScottMap D D), g f = Fix f

                                                                                      Scott 1972, Proposition 3.14. For a continuous lattice D there is a uniquely determined continuous mapping fix : [D → D] → D such that f (fix f) = fix f for all f, and fix f ⊑ x whenever f xx. Existence and continuity are Proposition314.fixMap; the defining equations are fix_eq/fix_le; uniqueness (any operator with these two properties agrees with fix) is fix_unique.