Documentation

Mathlib.CategoryTheory.Core

The core of a category #

The core of a category C is the (non-full) subcategory of C consisting of all objects, and all isomorphisms. We construct it as a CategoryTheory.Groupoid.

CategoryTheory.Core.inclusion : Core C β₯€ C gives the faithful inclusion into the original category.

Any functor F from a groupoid G into C factors through CategoryTheory.Core C, but this is not functorial with respect to F.

structure CategoryTheory.Core (C : Type u₁) :
Type u₁

The core of a category C is the groupoid whose morphisms are all the isomorphisms of C.

  • of : C

    The object of the base category underlying an object in Core C.

Instances For
    structure CategoryTheory.CoreHom {C : Type u₁} [Category.{v₁, u₁} C] (X Y : Core C) :
    Type v₁

    The hom-type between two objects of Core C. It is defined as a one-field structure to prevent defeq abuses.

    • iso : X.of β‰… Y.of

      The isomorphism of objects of C underlying a morphism in Core C.

    Instances For
      theorem CategoryTheory.CoreHom.ext_iff {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {X Y : Core C} {x y : CoreHom X Y} :
      x = y ↔ x.iso = y.iso
      theorem CategoryTheory.CoreHom.ext {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {X Y : Core C} {x y : CoreHom X Y} (iso : x.iso = y.iso) :
      x = y
      @[simp]
      theorem CategoryTheory.coreCategory_inv_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {x✝ x✝¹ : Core C} (f : CoreHom x✝ x✝¹) :
      @[simp]
      theorem CategoryTheory.coreCategory_comp_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {X✝ Y✝ Z✝ : Core C} (f : CoreHom X✝ Y✝) (g : CoreHom Y✝ Z✝) :
      @[simp]
      theorem CategoryTheory.coreCategory_inv_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {x✝ x✝¹ : Core C} (f : CoreHom x✝ x✝¹) :
      @[simp]
      theorem CategoryTheory.coreCategory_comp_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {X✝ Y✝ Z✝ : Core C} (f : CoreHom X✝ Y✝) (g : CoreHom Y✝ Z✝) :

      The core of a category is naturally included in the category.

      Instances For
        @[simp]
        theorem CategoryTheory.Core.inclusion_map (C : Type u₁) [Category.{v₁, u₁} C] {X✝ Y✝ : Core C} (f : X✝ ⟢ Y✝) :
        (inclusion C).map f = f.iso.hom
        @[simp]
        theorem CategoryTheory.Core.inclusion_obj (C : Type u₁) [Category.{v₁, u₁} C] (self : Core C) :
        (inclusion C).obj self = self.of
        theorem CategoryTheory.Core.hom_ext {C : Type u₁} [Category.{v₁, u₁} C] {X Y : Core C} {f g : X ⟢ Y} (h : f.iso.hom = g.iso.hom) :
        f = g
        theorem CategoryTheory.Core.hom_ext_iff {C : Type u₁} [Category.{v₁, u₁} C] {X Y : Core C} {f g : X ⟢ Y} :
        f = g ↔ f.iso.hom = g.iso.hom
        def CategoryTheory.Core.isoMk {C : Type u₁} [Category.{v₁, u₁} C] {x y : Core C} (e : x.of β‰… y.of) :
        x β‰… y

        Construct an isomorphism in Core C from an isomorphism in C.

        Instances For
          def CategoryTheory.Core.functorToCore {C : Type u₁} [Category.{v₁, u₁} C] {G : Type uβ‚‚} [Groupoid G] (F : Functor G C) :

          A functor from a groupoid to a category C factors through the core of C.

          Instances For
            @[simp]
            theorem CategoryTheory.Core.functorToCore_obj_of {C : Type u₁} [Category.{v₁, u₁} C] {G : Type uβ‚‚} [Groupoid G] (F : Functor G C) (X : G) :
            ((functorToCore F).obj X).of = F.obj X
            @[simp]
            theorem CategoryTheory.Core.functorToCore_map_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {G : Type uβ‚‚} [Groupoid G] (F : Functor G C) {X✝ Y✝ : G} (f : X✝ ⟢ Y✝) :
            ((functorToCore F).map f).iso.hom = F.map f
            @[simp]
            theorem CategoryTheory.Core.functorToCore_map_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {G : Type uβ‚‚} [Groupoid G] (F : Functor G C) {X✝ Y✝ : G} (f : X✝ ⟢ Y✝) :
            ((functorToCore F).map f).iso.inv = inv (F.map f)

            We can functorially associate to any functor from a groupoid to the core of a category C, a functor from the groupoid to C, simply by composing with the embedding Core C β₯€ C.

            Instances For
              @[simp]
              theorem CategoryTheory.Core.forgetFunctorToCore_map_app {C : Type u₁} [Category.{v₁, u₁} C] {G : Type uβ‚‚} [Groupoid G] {X✝ Y✝ : Functor G (Core C)} (Ξ± : X✝ ⟢ Y✝) (X : G) :
              (forgetFunctorToCore.map Ξ±).app X = (Ξ±.app X).iso.hom
              @[simp]
              theorem CategoryTheory.Core.forgetFunctorToCore_obj_map {C : Type u₁} [Category.{v₁, u₁} C] {G : Type uβ‚‚} [Groupoid G] (F : Functor G (Core C)) {X✝ Y✝ : G} (f : X✝ ⟢ Y✝) :

              A functor C β₯€ D induces a functor Core C β₯€ Core D.

              Instances For
                @[simp]
                theorem CategoryTheory.Functor.core_map_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] (F : Functor C D) {X✝ Y✝ : Core C} (f : X✝ ⟢ Y✝) :
                (F.core.map f).iso.inv = F.map f.iso.inv
                @[simp]
                theorem CategoryTheory.Functor.core_obj_of {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] (F : Functor C D) (X : Core C) :
                (F.core.obj X).of = F.obj X.of
                @[simp]
                theorem CategoryTheory.Functor.core_map_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] (F : Functor C D) {X✝ Y✝ : Core C} (f : X✝ ⟢ Y✝) :
                (F.core.map f).iso.hom = F.map f.iso.hom

                The core of the identity functor is the identity functor on the cores.

                Instances For

                  The core of the composition of F and G is the composition of the cores.

                  Instances For

                    The natural isomorphism

                                      F.core
                                Core C β₯€ Core D
                     inclusion C  β€–          β€–  inclusion D
                                  V          V
                                  C    β₯€    D
                                        F
                    

                    thought of as pseudonaturality of inclusion, when viewing Core as a pseudofunctor.

                    Instances For
                      def CategoryTheory.Iso.core {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] {F G : Functor C D} (Ξ± : F β‰… G) :

                      A natural isomorphism of functors induces a natural isomorphism between their cores.

                      Instances For
                        @[simp]
                        theorem CategoryTheory.Iso.core_hom_app_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] {F G : Functor C D} (Ξ± : F β‰… G) (X : Core C) :
                        (Ξ±.core.hom.app X).iso.hom = Ξ±.hom.app X.of
                        @[simp]
                        theorem CategoryTheory.Iso.core_inv_app_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] {F G : Functor C D} (Ξ± : F β‰… G) (X : Core C) :
                        (Ξ±.core.inv.app X).iso.hom = Ξ±.inv.app X.of
                        @[simp]
                        theorem CategoryTheory.Iso.core_inv_app_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] {F G : Functor C D} (Ξ± : F β‰… G) (X : Core C) :
                        (Ξ±.core.inv.app X).iso.inv = Ξ±.hom.app X.of
                        @[simp]
                        theorem CategoryTheory.Iso.core_hom_app_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] {F G : Functor C D} (Ξ± : F β‰… G) (X : Core C) :
                        (Ξ±.core.hom.app X).iso.inv = Ξ±.inv.app X.of
                        @[simp]
                        theorem CategoryTheory.Iso.coreComp {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] {F G H : Functor C D} (Ξ± : F β‰… G) (Ξ² : G β‰… H) :
                        (Ξ± β‰ͺ≫ Ξ²).core = Ξ±.core β‰ͺ≫ Ξ².core
                        def CategoryTheory.Core.functorToCoreCompLeftIso {C : Type u₁} [Category.{v₁, u₁} C] {G : Type uβ‚‚} [Groupoid G] {G' : Type u₃} [Groupoid G'] (H : Functor G C) (F : Functor G' G) :

                        The functor functorToCore (F β‹™ H) factors through functorToCore H.

                        Instances For
                          theorem CategoryTheory.Core.functorToCore_comp_left {C : Type u₁} [Category.{v₁, u₁} C] {G : Type uβ‚‚} [Groupoid G] {G' : Type u₃} [Groupoid G'] (H : Functor G C) (F : Functor G' G) :

                          The functor functorToCore (H β‹™ F) factors through functorToCore H.

                          Instances For

                            The functor functorToCore (inclusion C) is isomorphic to the identity on Core C.

                            Instances For

                              Equivalent categories have equivalent cores.

                              Instances For
                                @[simp]
                                theorem CategoryTheory.Equivalence.core_inverse_map_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] (E : C β‰Œ D) {X✝ Y✝ : Core D} (f : X✝ ⟢ Y✝) :
                                @[simp]
                                theorem CategoryTheory.Equivalence.core_functor_map_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] (E : C β‰Œ D) {X✝ Y✝ : Core C} (f : X✝ ⟢ Y✝) :
                                @[simp]
                                theorem CategoryTheory.Equivalence.core_inverse_map_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] (E : C β‰Œ D) {X✝ Y✝ : Core D} (f : X✝ ⟢ Y✝) :
                                @[simp]
                                theorem CategoryTheory.Equivalence.core_functor_map_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] {D : Type uβ‚‚} [Category.{vβ‚‚, uβ‚‚} D] (E : C β‰Œ D) {X✝ Y✝ : Core C} (f : X✝ ⟢ Y✝) :

                                Taking the core of a functor is functorial if we discard non-invertible natural transformations.

                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.coreFunctor_obj_obj_of (C : Type u₁) [Category.{v₁, u₁} C] (D : Type uβ‚‚) [Category.{vβ‚‚, uβ‚‚} D] (F : Core (Functor C D)) (X : Core C) :
                                  (((coreFunctor C D).obj F).obj X).of = F.of.obj X.of
                                  @[simp]
                                  theorem CategoryTheory.coreFunctor_map_app_iso_hom (C : Type u₁) [Category.{v₁, u₁} C] (D : Type uβ‚‚) [Category.{vβ‚‚, uβ‚‚} D] {X✝ Y✝ : Core (Functor C D)} (Ξ· : X✝ ⟢ Y✝) (X : Core C) :
                                  (((coreFunctor C D).map Ξ·).app X).iso.hom = Ξ·.iso.hom.app X.of
                                  @[simp]
                                  theorem CategoryTheory.coreFunctor_map_app_iso_inv (C : Type u₁) [Category.{v₁, u₁} C] (D : Type uβ‚‚) [Category.{vβ‚‚, uβ‚‚} D] {X✝ Y✝ : Core (Functor C D)} (Ξ· : X✝ ⟢ Y✝) (X : Core C) :
                                  (((coreFunctor C D).map Ξ·).app X).iso.inv = Ξ·.iso.inv.app X.of
                                  @[simp]
                                  theorem CategoryTheory.coreFunctor_obj_map_iso_inv (C : Type u₁) [Category.{v₁, u₁} C] (D : Type uβ‚‚) [Category.{vβ‚‚, uβ‚‚} D] (F : Core (Functor C D)) {X✝ Y✝ : Core C} (f : X✝ ⟢ Y✝) :
                                  (((coreFunctor C D).obj F).map f).iso.inv = F.of.map f.iso.inv
                                  @[simp]
                                  theorem CategoryTheory.coreFunctor_obj_map_iso_hom (C : Type u₁) [Category.{v₁, u₁} C] (D : Type uβ‚‚) [Category.{vβ‚‚, uβ‚‚} D] (F : Core (Functor C D)) {X✝ Y✝ : Core C} (f : X✝ ⟢ Y✝) :
                                  (((coreFunctor C D).obj F).map f).iso.hom = F.of.map f.iso.hom
                                  def CategoryTheory.ofEquivFunctor (m : Type u₁ β†’ Type uβ‚‚) [EquivFunctor m] :
                                  Functor (Core (Type u₁)) (Core (Type uβ‚‚))

                                  ofEquivFunctor m lifts a type-level EquivFunctor to a categorical functor Core (Type u₁) β₯€ Core (Type uβ‚‚).

                                  Instances For