Documentation

Mathlib.CategoryTheory.Topos.Classifier

Subobject Classifier #

We define what it means for a morphism in a category to be a subobject classifier as CategoryTheory.HasClassifier.

c.f. the following Lean 3 code, where similar work was done: https://github.com/b-mehta/topos/blob/master/src/subobject_classifier.lean

Main definitions #

Let C refer to a category with a terminal object.

Main results #

References #

TODO #

A morphism truth : ⊤_ C ⟶ Ω from the terminal object of a category C is a subobject classifier if, for every monomorphism m : U ⟶ X in C, there is a unique map χ : X ⟶ Ω such that the following square is a pullback square:

      U ---------m----------> X
      |                       |
terminal.from U               χ
      |                       |
      v                       v
    ⊤_ C ------truth--------> Ω

An equivalent formulation replaces the object ⊤_ C with an arbitrary object, and instead includes the assumption that truth is a monomorphism.

Instances For

    A category C has a subobject classifier if there is at least one subobject classifier.

    Instances
      @[reducible, inline]

      Notation for the object in an arbitrary choice of a subobject classifier

      Equations
      Instances For
        @[reducible, inline]

        Notation for the "truth arrow" in an arbitrary choice of a subobject classifier

        Equations
        Instances For

          returns the characteristic morphism of the subobject (m : U ⟶ X) [Mono m]

          Equations
          Instances For

            The diagram

                  U ---------m----------> X
                  |                       |
            terminal.from U              χ m
                  |                       |
                  v                       v
                ⊤_ C -----truth C-------> Ω
            

            is a pullback square.

            The diagram

                  U ---------m----------> X
                  |                       |
            terminal.from U              χ m
                  |                       |
                  v                       v
                ⊤_ C -----truth C-------> Ω
            

            commutes.

            theorem CategoryTheory.HasClassifier.unique {C : Type u} [Category.{v, u} C] [Limits.HasTerminal C] [HasClassifier C] {U X : C} (m : U X) [Mono m] (χ' : X Ω C) (hχ' : IsPullback m (Limits.terminal.from U) χ' (truth C)) :
            χ' = χ m

            χ m is the only map for which the associated square is a pullback square.

            The following diagram

                  U ---------m----------> X
                  |                       |
            terminal.from U              χ m
                  |                       |
                  v                       v
                ⊤_ C -----truth C-------> Ω
            

            being a pullback for any monic m means that every monomorphism in C is the pullback of a regular monomorphism; since regularity is stable under base change, every monomorphism is regular. Hence, C is a regular mono category. It also follows that C is a balanced category.

            If the source of a faithful functor has a subobject classifier, the functor reflects isomorphisms. This holds for any balanced category.

            If the source of a faithful functor is the opposite category of one with a subobject classifier, the same holds -- the functor reflects isomorphisms.

            The representability theorem of subobject classifiers #

            From classifiers to representations #

            theorem CategoryTheory.Classifier.surjective_χ {C : Type u} [Category.{v, u} C] [Limits.HasTerminal C] [Limits.HasPullbacks C] (𝒞 : Classifier C) {X : C} (φ : X 𝒞.Ω) :
            ∃ (Z : C) (i : Z X) (x : Mono i), φ = 𝒞.χ i

            Any subobject classifier Ω represents the subobjects functor Subobject.presheaf.

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

              From representations to classifiers #

              @[reducible, inline]

              Abbreviation to enable dot notation on the hypothesis h stating that the subobjects presheaf is representable by some object Ω.

              Equations
              Instances For

                h.Ω₀ is the subobject of Ω which corresponds to the identity 𝟙 Ω, given h : SubobjectRepresentableBy Ω.

                Equations
                Instances For

                  h.homEquiv acts like an "object comprehension" operator: it maps any characteristic map f : X ⟶ Ω to the associated subobject of X, obtained by pulling back h.Ω₀ along f.

                  For any subobject x, the pullback of h.Ω₀ along the characteristic map of x given by h.homEquiv is x itself.

                  h.χ m is the characteristic map of monomorphism m given by the bijection h.homEquiv.

                  Equations
                  Instances For

                    h.iso m is the isomorphism between m and the pullback of Ω₀ along the characteristic map of m.

                    Equations
                    Instances For

                      h.π m is the first projection in the following pullback square:

                      U --h.π m--> (Ω₀ : C)
                      |                |
                      m             Ω₀.arrow
                      |                |
                      v                v
                      X -----h.χ m---> Ω
                      
                      Equations
                      Instances For
                        theorem CategoryTheory.Classifier.SubobjectRepresentableBy.uniq {C : Type u} [Category.{v, u} C] [Limits.HasPullbacks C] {Ω : C} (h : SubobjectRepresentableBy Ω) {U X : C} {m : U X} [Mono m] {χ' : X Ω} {π : U Subobject.underlying.obj h.Ω₀} (sq : IsPullback m π χ' h.Ω₀.arrow) :
                        χ' = h.χ m

                        Any representation Ω of Subobject.presheaf C gives a subobject classifier with truth values object Ω.

                        Equations
                        Instances For

                          A category has a subobject classifier if and only if the subobjects functor is representable.