Documentation

Mathlib.CategoryTheory.Subterminal

Subterminal objects #

Subterminal objects are the objects which can be thought of as subobjects of the terminal object. In fact, the definition can be constructed to not require a terminal object, by defining A to be subterminal iff for any Z, there is at most one morphism Z ⟶ A. An alternate definition is that the diagonal morphism A ⟶ A ⨯ A is an isomorphism. In this file we define subterminal objects and show the equivalence of these three definitions.

We also construct the subcategory of subterminal objects.

TODO #

An object A is subterminal iff for any Z, there is at most one morphism Z ⟶ A.

Equations
Instances For
    theorem CategoryTheory.IsSubterminal.def {C : Type u₁} [Category.{v₁, u₁} C] {A : C} :
    IsSubterminal A ∀ ⦃Z : C⦄ (f g : Z A), f = g
    theorem CategoryTheory.IsSubterminal.mono_isTerminal_from {C : Type u₁} [Category.{v₁, u₁} C] {A : C} (hA : IsSubterminal A) {T : C} (hT : Limits.IsTerminal T) :
    Mono (hT.from A)

    If A is subterminal, the unique morphism from it to a terminal object is a monomorphism. The converse of isSubterminal_of_mono_isTerminal_from.

    If A is subterminal, the unique morphism from it to the terminal object is a monomorphism. The converse of isSubterminal_of_mono_terminal_from.

    If the unique morphism from A to a terminal object is a monomorphism, A is subterminal. The converse of IsSubterminal.mono_isTerminal_from.

    If the unique morphism from A to the terminal object is a monomorphism, A is subterminal. The converse of IsSubterminal.mono_terminal_from.

    If A is subterminal, its diagonal morphism is an isomorphism. The converse of isSubterminal_of_isIso_diag.

    If the diagonal morphism of A is an isomorphism, then it is subterminal. The converse of isSubterminal.isIso_diag.

    If A is subterminal, it is isomorphic to A ⨯ A.

    Equations
    Instances For

      The (full sub)category of subterminal objects. TODO: If C is the category of sheaves on a topological space X, this category is equivalent to the lattice of open subsets of X. More generally, if C is a topos, this is the lattice of "external truth values".

      Equations
      Instances For

        The inclusion of the subterminal objects into the original category.

        Equations
        Instances For
          @[simp]
          theorem CategoryTheory.subterminalInclusion_obj (C : Type u₁) [Category.{v₁, u₁} C] (self : FullSubcategory fun (A : C) => IsSubterminal A) :
          (subterminalInclusion C).obj self = self.obj

          The category of subterminal objects is equivalent to the category of monomorphisms to the terminal object (which is in turn equivalent to the subobjects of the terminal object).

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem CategoryTheory.subterminalsEquivMonoOverTerminal_counitIso (C : Type u₁) [Category.{v₁, u₁} C] [Limits.HasTerminal C] :
            (subterminalsEquivMonoOverTerminal C).counitIso = NatIso.ofComponents (fun (X : MonoOver (⊤_ C)) => MonoOver.isoMk (Iso.refl (({ obj := fun (X : MonoOver (⊤_ C)) => { obj := X.obj.left, property := }, map := fun {X Y : MonoOver (⊤_ C)} (f : X Y) => f.left, map_id := , map_comp := }.comp { obj := fun (X : Subterminals C) => { obj := Over.mk (Limits.terminal.from X.obj), property := }, map := fun {X Y : Subterminals C} (f : X Y) => MonoOver.homMk f , map_id := , map_comp := }).obj X).obj.left) )