Documentation

Mathlib.Order.Sublocale

Sublocale #

Locales are the dual concept to frames. Locale theory is a branch of point-free topology, where intuitively locales are like topological spaces which may or may not have enough points. Sublocales of a locale generalize the concept of subspaces in topology to the point-free setting.

TODO #

Create separate definitions for sInf_mem and HImpClosed (also useful for CompleteSublattice)

References #

structure Sublocale (X : Type u_2) [Order.Frame X] :
Type u_2

A sublocale of a locale X is a set S which is closed under all meets and such that x ⇨ s ∈ S for all x : X and s ∈ S.

Note that locales are the same thing as frames, but with reverse morphisms, which is why we assume Frame X. We only need to define locales categorically. See Locale.

  • carrier : Set X

    The set corresponding to the sublocale.

  • sInf_mem' (s : Set X) : s βŠ† self.carrier β†’ sInf s ∈ self.carrier

    A sublocale is closed under all meets.

    Do NOT use directly. Use Sublocale.sInf_mem instead.

  • himp_mem' (a b : X) : b ∈ self.carrier β†’ a ⇨ b ∈ self.carrier

    A sublocale is closed under heyting implication.

    Do NOT use directly. Use Sublocale.himp_mem instead.

Instances For
    @[implicit_reducible]
    @[simp]
    theorem Sublocale.mem_carrier {X : Type u_1} [Order.Frame X] {S : Sublocale X} {a : X} :
    a ∈ S.carrier ↔ a ∈ S
    @[simp]
    theorem Sublocale.mem_mk {X : Type u_1} [Order.Frame X] {a : X} (carrier : Set X) (sInf_mem' : βˆ€ s βŠ† carrier, sInf s ∈ carrier) (himp_mem' : βˆ€ (a b : X), b ∈ carrier β†’ a ⇨ b ∈ carrier) :
    a ∈ { carrier := carrier, sInf_mem' := sInf_mem', himp_mem' := himp_mem' } ↔ a ∈ carrier
    @[simp]
    theorem Sublocale.mk_le_mk {X : Type u_1} [Order.Frame X] (carrier₁ carrierβ‚‚ : Set X) (sInf_mem'₁ : βˆ€ s βŠ† carrier₁, sInf s ∈ carrier₁) (sInf_mem'β‚‚ : βˆ€ s βŠ† carrierβ‚‚, sInf s ∈ carrierβ‚‚) (himp_mem'₁ : βˆ€ (a b : X), b ∈ carrier₁ β†’ a ⇨ b ∈ carrier₁) (himp_mem'β‚‚ : βˆ€ (a b : X), b ∈ carrierβ‚‚ β†’ a ⇨ b ∈ carrierβ‚‚) :
    { carrier := carrier₁, sInf_mem' := sInf_mem'₁, himp_mem' := himp_mem'₁ } ≀ { carrier := carrierβ‚‚, sInf_mem' := sInf_mem'β‚‚, himp_mem' := himp_mem'β‚‚ } ↔ carrier₁ βŠ† carrierβ‚‚
    theorem Sublocale.ext {X : Type u_1} [Order.Frame X] {S T : Sublocale X} (h : βˆ€ (x : X), x ∈ S ↔ x ∈ T) :
    S = T
    theorem Sublocale.ext_iff {X : Type u_1} [Order.Frame X] {S T : Sublocale X} :
    S = T ↔ βˆ€ (x : X), x ∈ S ↔ x ∈ T
    theorem Sublocale.sInf_mem {X : Type u_1} [Order.Frame X] {S : Sublocale X} {s : Set X} (hs : s βŠ† ↑S) :
    sInf s ∈ S
    theorem Sublocale.iInf_mem {X : Type u_1} [Order.Frame X] {ΞΉ : Sort u_2} {S : Sublocale X} {f : ΞΉ β†’ X} (hf : βˆ€ (i : ΞΉ), f i ∈ S) :
    β¨… (i : ΞΉ), f i ∈ S
    theorem Sublocale.inf_mem {X : Type u_1} [Order.Frame X] {S : Sublocale X} {a b : X} (ha : a ∈ S) (hb : b ∈ S) :
    a βŠ“ b ∈ S
    theorem Sublocale.himp_mem {X : Type u_1} [Order.Frame X] {S : Sublocale X} {a b : X} (hb : b ∈ S) :
    a ⇨ b ∈ S
    @[implicit_reducible]
    @[implicit_reducible]
    instance Sublocale.carrier.instOrderTop {X : Type u_1} [Order.Frame X] {S : Sublocale X} :
    OrderTop β†₯S
    @[implicit_reducible]
    instance Sublocale.carrier.instHImp {X : Type u_1} [Order.Frame X] {S : Sublocale X} :
    HImp β†₯S
    @[implicit_reducible]
    instance Sublocale.carrier.instInfSet {X : Type u_1} [Order.Frame X] {S : Sublocale X} :
    InfSet β†₯S
    @[simp]
    theorem Sublocale.coe_inf {X : Type u_1} [Order.Frame X] {S : Sublocale X} (a b : β†₯S) :
    ↑(a βŠ“ b) = ↑a βŠ“ ↑b
    @[simp]
    theorem Sublocale.coe_sInf {X : Type u_1} [Order.Frame X] {S : Sublocale X} (s : Set β†₯S) :
    ↑(sInf s) = sInf (Subtype.val '' s)
    @[simp]
    theorem Sublocale.coe_iInf {X : Type u_1} [Order.Frame X] {ΞΉ : Sort u_2} {S : Sublocale X} (f : ΞΉ β†’ β†₯S) :
    ↑(β¨… (i : ΞΉ), f i) = β¨… (i : ΞΉ), ↑(f i)
    @[implicit_reducible]
    @[simp]
    theorem Sublocale.coe_himp {X : Type u_1} [Order.Frame X] {S : Sublocale X} (a b : β†₯S) :
    ↑(a ⇨ b) = ↑a ⇨ ↑b
    @[implicit_reducible]
    @[implicit_reducible]
    instance Sublocale.carrier.instFrame {X : Type u_1} [Order.Frame X] {S : Sublocale X} :
    Order.Frame β†₯S
    def Sublocale.restrict {X : Type u_1} [Order.Frame X] (S : Sublocale X) :
    FrameHom X β†₯S

    The restriction from a locale X into the sublocale S.

    Instances For
      def Sublocale.giRestrict {X : Type u_1} [Order.Frame X] (S : Sublocale X) :
      GaloisInsertion (⇑S.restrict) Subtype.val

      The restriction corresponding to a sublocale forms a Galois insertion with the forgetful map from the sublocale to the original locale.

      Instances For
        @[simp]
        theorem Sublocale.restrict_of_mem {X : Type u_1} [Order.Frame X] {S : Sublocale X} {a : X} (ha : a ∈ S) :
        S.restrict a = ⟨a, ha⟩

        The restriction from the locale X into a sublocale is a nucleus.

        Instances For
          @[simp]
          theorem Sublocale.toNucleus_apply {X : Type u_1} [Order.Frame X] (S : Sublocale X) (x : X) :
          S.toNucleus x = ↑(S.restrict x)
          @[simp]
          theorem Sublocale.range_toNucleus {X : Type u_1} [Order.Frame X] {S : Sublocale X} :
          Set.range ⇑S.toNucleus = ↑S

          The range of a nucleus is a sublocale.

          Instances For
            @[simp]
            theorem Nucleus.coe_toSublocale {X : Type u_1} [Order.Frame X] (n : Nucleus X) :
            ↑n.toSublocale = Set.range ⇑n
            @[simp]
            theorem Nucleus.mem_toSublocale {X : Type u_1} [Order.Frame X] {n : Nucleus X} {x : X} :
            x ∈ n.toSublocale ↔ βˆƒ (y : X), n y = x
            @[simp]
            theorem Nucleus.restrict_toSublocale {X : Type u_1} [Order.Frame X] (n : Nucleus X) (x : X) :
            n.toSublocale.restrict x = ⟨n x, β‹―βŸ©

            The nuclei on a frame corresponds exactly to the sublocales on this frame. The sublocales are ordered dually to the nuclei.

            Instances For
              @[implicit_reducible]