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.

      Equations
        Instances For
          @[simp]
          theorem CategoryTheory.Core.inclusion_map (C : Type u₁) [Category.{v₁, u₁} C] {X✝ Y✝ : Core C} (f : X✝ ⟢ Y✝) :
          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
          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.

          Equations
            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.

              Equations
                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✝) :
                  @[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.

                  Equations
                    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.

                      Equations
                        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_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.

                          Equations
                            Instances For

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

                              Equations
                                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.

                                  Equations
                                    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.

                                      Equations
                                        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.

                                          Equations
                                            Instances For

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

                                              Equations
                                                Instances For

                                                  The functor functorToCore (𝟭 G) is a section of inclusion G.

                                                  Equations
                                                    Instances For

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

                                                      Equations
                                                        Instances For

                                                          Equivalent categories have equivalent cores.

                                                          Equations
                                                            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.

                                                              Equations
                                                                Instances For
                                                                  @[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β‚‚).

                                                                  Equations
                                                                    Instances For