Documentation

Mathlib.CategoryTheory.Limits.Shapes.Kernels

Kernels and cokernels #

In a category with zero morphisms, the kernel of a morphism f : X ⟶ Y is the equalizer of f and 0 : X ⟶ Y. (Similarly the cokernel is the coequalizer.)

The basic definitions are

Main statements #

Besides the definition and lifts, we prove

and the corresponding dual statements.

Future work #

Implementation notes #

As with the other special shapes in the limits library, all the definitions here are given as abbrevs of the general statements for limits, so all the simp lemmas and theorems about general limits can be used.

References #

@[reducible, inline]
abbrev CategoryTheory.Limits.HasKernel {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) :

A morphism f has a kernel if the functor ParallelPair f 0 has a limit.

Equations
Instances For
    @[reducible, inline]

    A morphism f has a cokernel if the functor ParallelPair f 0 has a colimit.

    Equations
    Instances For
      @[reducible, inline]
      abbrev CategoryTheory.Limits.KernelFork {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) :
      Type (max u v)

      A kernel fork is just a fork where the second morphism is a zero morphism.

      Equations
      Instances For
        @[reducible, inline]
        abbrev CategoryTheory.Limits.KernelFork.ofι {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {Z : C} (ι : Z X) (w : CategoryStruct.comp ι f = 0) :

        A morphism ι satisfying ι ≫ f = 0 determines a kernel fork over f.

        Equations
        Instances For
          @[simp]
          theorem CategoryTheory.Limits.KernelFork.ι_ofι {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y P : C} (f : X Y) (ι : P X) (w : CategoryStruct.comp ι f = 0) :
          Fork.ι (ofι ι w) = ι
          def CategoryTheory.Limits.isoOfι {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} (s : Fork f 0) :
          s Fork.ofι s.ι

          Every kernel fork s is isomorphic (actually, equal) to fork.ofι (fork.ι s) _.

          Equations
          Instances For
            def CategoryTheory.Limits.ofιCongr {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {P : C} {ι ι' : P X} {w : CategoryStruct.comp ι f = 0} (h : ι = ι') :

            If ι = ι', then fork.ofι ι _ and fork.ofι ι' _ are isomorphic.

            Equations
            Instances For

              If F is an equivalence, then applying F to a diagram indexing a (co)kernel of f yields the diagram indexing the (co)kernel of F.map f.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def CategoryTheory.Limits.KernelFork.IsLimit.lift' {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {s : KernelFork f} (hs : IsLimit s) {W : C} (k : W X) (h : CategoryStruct.comp k f = 0) :

                If s is a limit kernel fork and k : W ⟶ X satisfies k ≫ f = 0, then there is some l : W ⟶ s.X such that l ≫ fork.ι s = k.

                Equations
                Instances For
                  def CategoryTheory.Limits.isLimitAux {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} (t : KernelFork f) (lift : (s : KernelFork f) → s.pt t.pt) (fac : ∀ (s : KernelFork f), CategoryStruct.comp (lift s) (Fork.ι t) = Fork.ι s) (uniq : ∀ (s : KernelFork f) (m : s.pt t.pt), CategoryStruct.comp m (Fork.ι t) = Fork.ι sm = lift s) :

                  This is a slightly more convenient method to verify that a kernel fork is a limit cone. It only asks for a proof of facts that carry any mathematical content

                  Equations
                  Instances For
                    def CategoryTheory.Limits.KernelFork.IsLimit.ofι {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {W : C} (g : W X) (eq : CategoryStruct.comp g f = 0) (lift : {W' : C} → (g' : W' X) → CategoryStruct.comp g' f = 0 → (W' W)) (fac : ∀ {W' : C} (g' : W' X) (eq' : CategoryStruct.comp g' f = 0), CategoryStruct.comp (lift g' eq') g = g') (uniq : ∀ {W' : C} (g' : W' X) (eq' : CategoryStruct.comp g' f = 0) (m : W' W), CategoryStruct.comp m g = g'm = lift g' eq') :

                    This is a more convenient formulation to show that a KernelFork constructed using KernelFork.ofι is a limit cone.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      def CategoryTheory.Limits.KernelFork.IsLimit.ofι' {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y K : C} {f : X Y} (i : K X) (w : CategoryStruct.comp i f = 0) (h : {A : C} → (k : A X) → CategoryStruct.comp k f = 0{ l : A K // CategoryStruct.comp l i = k }) [hi : Mono i] :

                      This is a more convenient formulation to show that a KernelFork of the form KernelFork.ofι i _ is a limit cone when we know that i is a monomorphism.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def CategoryTheory.Limits.isKernelCompMono {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {c : KernelFork f} (i : IsLimit c) {Z : C} (g : Y Z) [hg : Mono g] {h : X Z} (hh : h = CategoryStruct.comp f g) :

                        Every kernel of f induces a kernel of f ≫ g if g is mono.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem CategoryTheory.Limits.isKernelCompMono_lift {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {c : KernelFork f} (i : IsLimit c) {Z : C} (g : Y Z) [hg : Mono g] {h : X Z} (hh : h = CategoryStruct.comp f g) (s : KernelFork h) :
                          (isKernelCompMono i g hh).lift s = i.lift (Fork.ofι (Fork.ι s) )
                          def CategoryTheory.Limits.isKernelOfComp {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {W : C} (g : Y W) (h : X W) {c : KernelFork h} (i : IsLimit c) (hf : CategoryStruct.comp (Fork.ι c) f = 0) (hfg : CategoryStruct.comp f g = h) :

                          Every kernel of f ≫ g is also a kernel of f, as long as c.ι ≫ f vanishes.

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

                            X identifies to the kernel of a zero map X ⟶ Y.

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

                              Any zero object identifies to the kernel of a given monomorphisms.

                              Equations
                              Instances For
                                theorem CategoryTheory.Limits.KernelFork.IsLimit.isIso_ι {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} (c : KernelFork f) (hc : IsLimit c) (hf : f = 0) :
                                def CategoryTheory.Limits.KernelFork.isLimitOfIsLimitOfIff {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {g : X Y} {c : KernelFork g} (hc : IsLimit c) {X' Y' : C} (g' : X' Y') (e : X X') (iff : ∀ ⦃W : C⦄ (φ : W X), CategoryStruct.comp φ g = 0 CategoryStruct.comp φ (CategoryStruct.comp e.hom g') = 0) :

                                If c is a limit kernel fork for g : X ⟶ Y, e : X ≅ X' and g' : X' ⟶ Y is a morphism, then there is a limit kernel fork for g' with the same point as c if for any morphism φ : W ⟶ X, there is an equivalence φ ≫ g = 0 ↔ φ ≫ e.hom ≫ g' = 0.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  def CategoryTheory.Limits.KernelFork.isLimitOfIsLimitOfIff' {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {g : X Y} {c : KernelFork g} (hc : IsLimit c) {Y' : C} (g' : X Y') (iff : ∀ ⦃W : C⦄ (φ : W X), CategoryStruct.comp φ g = 0 CategoryStruct.comp φ g' = 0) :
                                  IsLimit (ofι (Fork.ι c) )

                                  If c is a limit kernel fork for g : X ⟶ Y, and g' : X ⟶ Y' is another morphism, then there is a limit kernel fork for g' with the same point as c if for any morphism φ : W ⟶ X, there is an equivalence φ ≫ g = 0 ↔ φ ≫ g' = 0.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    def CategoryTheory.Limits.KernelFork.mapOfIsLimit {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} (kf : KernelFork f) {kf' : KernelFork f'} (hf' : IsLimit kf') (φ : Arrow.mk f Arrow.mk f') :
                                    kf.pt kf'.pt

                                    The morphism between points of kernel forks induced by a morphism in the category of arrows.

                                    Equations
                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.Limits.KernelFork.mapOfIsLimit_ι {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} (kf : KernelFork f) {kf' : KernelFork f'} (hf' : IsLimit kf') (φ : Arrow.mk f Arrow.mk f') :
                                      @[simp]
                                      theorem CategoryTheory.Limits.KernelFork.mapOfIsLimit_ι_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} (kf : KernelFork f) {kf' : KernelFork f'} (hf' : IsLimit kf') (φ : Arrow.mk f Arrow.mk f') {Z : C} (h : (parallelPair f' 0).obj WalkingParallelPair.zero Z) :
                                      def CategoryTheory.Limits.KernelFork.mapIsoOfIsLimit {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} {kf : KernelFork f} {kf' : KernelFork f'} (hf : IsLimit kf) (hf' : IsLimit kf') (φ : Arrow.mk f Arrow.mk f') :
                                      kf.pt kf'.pt

                                      The isomorphism between points of limit kernel forks induced by an isomorphism in the category of arrows.

                                      Equations
                                      Instances For
                                        @[simp]
                                        theorem CategoryTheory.Limits.KernelFork.mapIsoOfIsLimit_inv {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} {kf : KernelFork f} {kf' : KernelFork f'} (hf : IsLimit kf) (hf' : IsLimit kf') (φ : Arrow.mk f Arrow.mk f') :
                                        (mapIsoOfIsLimit hf hf' φ).inv = kf'.mapOfIsLimit hf φ.inv
                                        @[simp]
                                        theorem CategoryTheory.Limits.KernelFork.mapIsoOfIsLimit_hom {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} {kf : KernelFork f} {kf' : KernelFork f'} (hf : IsLimit kf) (hf' : IsLimit kf') (φ : Arrow.mk f Arrow.mk f') :
                                        (mapIsoOfIsLimit hf hf' φ).hom = kf.mapOfIsLimit hf' φ.hom
                                        @[reducible, inline]
                                        noncomputable abbrev CategoryTheory.Limits.kernel {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] :
                                        C

                                        The kernel of a morphism, expressed as the equalizer with the 0 morphism.

                                        Equations
                                        Instances For
                                          @[reducible, inline]
                                          noncomputable abbrev CategoryTheory.Limits.kernel.ι {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] :

                                          The map from kernel f into the source of f.

                                          Equations
                                          Instances For
                                            noncomputable def CategoryTheory.Limits.kernelIsKernel {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] :

                                            The kernel built from kernel.ι f is limiting.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For
                                              @[reducible, inline]
                                              noncomputable abbrev CategoryTheory.Limits.kernel.lift {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {W : C} (k : W X) (h : CategoryStruct.comp k f = 0) :

                                              Given any morphism k : W ⟶ X satisfying k ≫ f = 0, k factors through kernel.ι f via kernel.lift : W ⟶ kernel f.

                                              Equations
                                              Instances For
                                                @[simp]
                                                theorem CategoryTheory.Limits.kernel.lift_ι {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {W : C} (k : W X) (h : CategoryStruct.comp k f = 0) :
                                                @[simp]
                                                theorem CategoryTheory.Limits.kernel.lift_ι_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {W : C} (k : W X) (h : CategoryStruct.comp k f = 0) {Z : C} (h✝ : X Z) :
                                                @[simp]
                                                theorem CategoryTheory.Limits.kernel.lift_zero {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {W : C} {h : CategoryStruct.comp 0 f = 0} :
                                                lift f 0 h = 0
                                                instance CategoryTheory.Limits.kernel.lift_mono {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {W : C} (k : W X) (h : CategoryStruct.comp k f = 0) [Mono k] :
                                                Mono (lift f k h)
                                                noncomputable def CategoryTheory.Limits.kernel.lift' {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {W : C} (k : W X) (h : CategoryStruct.comp k f = 0) :

                                                Any morphism k : W ⟶ X satisfying k ≫ f = 0 induces a morphism l : W ⟶ kernel f such that l ≫ kernel.ι f = k.

                                                Equations
                                                Instances For
                                                  @[reducible, inline]
                                                  noncomputable abbrev CategoryTheory.Limits.kernel.map {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {X' Y' : C} (f' : X' Y') [HasKernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q = CategoryStruct.comp p f') :

                                                  A commuting square induces a morphism of kernels.

                                                  Equations
                                                  Instances For
                                                    instance CategoryTheory.Limits.instIsIsoMapOfMono {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {X' Y' : C} (f' : X' Y') [HasKernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q = CategoryStruct.comp p f') [IsIso p] [Mono q] :
                                                    IsIso (kernel.map f f' p q w)
                                                    theorem CategoryTheory.Limits.kernel.lift_map {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z X' Y' Z' : C} (f : X Y) (g : Y Z) [HasKernel g] (w : CategoryStruct.comp f g = 0) (f' : X' Y') (g' : Y' Z') [HasKernel g'] (w' : CategoryStruct.comp f' g' = 0) (p : X X') (q : Y Y') (r : Z Z') (h₁ : CategoryStruct.comp f q = CategoryStruct.comp p f') (h₂ : CategoryStruct.comp g r = CategoryStruct.comp q g') :
                                                    CategoryStruct.comp (lift g f w) (map g g' q r h₂) = CategoryStruct.comp p (lift g' f' w')

                                                    Given a commutative diagram

                                                        X --f--> Y --g--> Z
                                                        |        |        |
                                                        |        |        |
                                                        v        v        v
                                                        X' -f'-> Y' -g'-> Z'
                                                    

                                                    with horizontal arrows composing to zero, then we obtain a commutative square

                                                       X ---> kernel g
                                                       |         |
                                                       |         | kernel.map
                                                       |         |
                                                       v         v
                                                       X' --> kernel g'
                                                    
                                                    @[simp]
                                                    theorem CategoryTheory.Limits.kernel.map_zero {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y X' Y' : C} (f : X Y) (f' : X' Y') [HasKernel f] [HasKernel f'] (q : Y Y') (w : CategoryStruct.comp f q = CategoryStruct.comp 0 f') :
                                                    map f f' 0 q w = 0
                                                    noncomputable def CategoryTheory.Limits.kernel.mapIso {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {X' Y' : C} (f' : X' Y') [HasKernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q.hom = CategoryStruct.comp p.hom f') :

                                                    A commuting square of isomorphisms induces an isomorphism of kernels.

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      @[simp]
                                                      theorem CategoryTheory.Limits.kernel.mapIso_hom {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {X' Y' : C} (f' : X' Y') [HasKernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q.hom = CategoryStruct.comp p.hom f') :
                                                      (mapIso f f' p q w).hom = map f f' p.hom q.hom w
                                                      @[simp]
                                                      theorem CategoryTheory.Limits.kernel.mapIso_inv {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {X' Y' : C} (f' : X' Y') [HasKernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q.hom = CategoryStruct.comp p.hom f') :
                                                      (mapIso f f' p q w).inv = map f' f p.inv q.inv

                                                      Every kernel of the zero morphism is an isomorphism

                                                      The kernel of a zero morphism is isomorphic to the source.

                                                      Equations
                                                      Instances For
                                                        noncomputable def CategoryTheory.Limits.kernelIsoOfEq {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f g : X Y} [HasKernel f] [HasKernel g] (h : f = g) :

                                                        If two morphisms are known to be equal, then their kernels are isomorphic.

                                                        Equations
                                                        Instances For
                                                          @[simp]
                                                          @[simp]
                                                          theorem CategoryTheory.Limits.lift_comp_kernelIsoOfEq_hom {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} {f g : X Y} [HasKernel f] [HasKernel g] (h : f = g) (e : Z X) (he : CategoryStruct.comp e f = 0) :
                                                          @[simp]
                                                          theorem CategoryTheory.Limits.lift_comp_kernelIsoOfEq_hom_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} {f g : X Y} [HasKernel f] [HasKernel g] (h : f = g) (e : Z X) (he : CategoryStruct.comp e f = 0) {Z✝ : C} (h✝ : kernel g Z✝) :
                                                          @[simp]
                                                          theorem CategoryTheory.Limits.lift_comp_kernelIsoOfEq_inv {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} {f g : X Y} [HasKernel f] [HasKernel g] (h : f = g) (e : Z X) (he : CategoryStruct.comp e g = 0) :
                                                          @[simp]
                                                          theorem CategoryTheory.Limits.lift_comp_kernelIsoOfEq_inv_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} {f g : X Y} [HasKernel f] [HasKernel g] (h : f = g) (e : Z X) (he : CategoryStruct.comp e g = 0) {Z✝ : C} (h✝ : kernel f Z✝) :
                                                          @[simp]
                                                          theorem CategoryTheory.Limits.kernelIsoOfEq_trans {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f g h : X Y} [HasKernel f] [HasKernel g] [HasKernel h] (w₁ : f = g) (w₂ : g = h) :
                                                          noncomputable def CategoryTheory.Limits.kernelCompMono {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} (f : X Y) (g : Y Z) [HasKernel f] [Mono g] :

                                                          When g is a monomorphism, the kernel of f ≫ g is isomorphic to the kernel of f.

                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          Instances For
                                                            @[simp]
                                                            @[simp]
                                                            noncomputable def CategoryTheory.Limits.kernelIsIsoComp {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} (f : X Y) (g : Y Z) [IsIso f] [HasKernel g] :

                                                            When f is an isomorphism, the kernel of f ≫ g is isomorphic to the kernel of g.

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For
                                                              noncomputable def CategoryTheory.Limits.kernel.congr {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f g : X Y) [HasKernel f] [HasKernel g] (h : f = g) :

                                                              Equal maps have isomorphic kernels.

                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                @[simp]
                                                                theorem CategoryTheory.Limits.kernel.congr_hom {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f g : X Y) [HasKernel f] [HasKernel g] (h : f = g) :
                                                                (congr f g h).hom = lift g (ι f)
                                                                @[simp]
                                                                theorem CategoryTheory.Limits.kernel.congr_inv {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f g : X Y) [HasKernel f] [HasKernel g] (h : f = g) :
                                                                (congr f g h).inv = lift f (ι g)

                                                                The morphism from the zero object determines a cone on a kernel diagram

                                                                Equations
                                                                Instances For

                                                                  The map from the zero object is a kernel of a monomorphism

                                                                  Equations
                                                                  Instances For
                                                                    noncomputable def CategoryTheory.Limits.kernel.ofMono {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasZeroObject C] [HasKernel f] [Mono f] :

                                                                    The kernel of a monomorphism is isomorphic to the zero object

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

                                                                      The kernel morphism of a monomorphism is a zero morphism

                                                                      noncomputable def CategoryTheory.Limits.zeroKernelOfCancelZero {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] [HasZeroObject C] {X Y : C} (f : X Y) (hf : ∀ (Z : C) (g : Z X), CategoryStruct.comp g f = 0g = 0) :

                                                                      If g ≫ f = 0 implies g = 0 for all g, then 0 : 0 ⟶ X is a kernel of f.

                                                                      Equations
                                                                      Instances For
                                                                        def CategoryTheory.Limits.IsKernel.ofIso {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {X' Y' : C} {f' : X' Y'} {s : KernelFork f} (hs : IsLimit s) (s' : KernelFork f') (eX : X X') (eY : Y Y') (e : s.pt s'.pt) (H : CategoryStruct.comp eX.hom f' = CategoryStruct.comp f eY.hom) (H' : CategoryStruct.comp e.hom (Fork.ι s') = CategoryStruct.comp (Fork.ι s) eX.hom) :

                                                                        Transport an IsKernel across isomorphisms.

                                                                        Equations
                                                                        • One or more equations did not get rendered due to their size.
                                                                        Instances For
                                                                          def CategoryTheory.Limits.IsKernel.ofCompIso {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {Z : C} (l : X Z) (i : Z Y) (h : CategoryStruct.comp l i.hom = f) {s : KernelFork f} (hs : IsLimit s) :

                                                                          If i is an isomorphism such that l ≫ i.hom = f, any kernel of f is a kernel of l.

                                                                          Equations
                                                                          • One or more equations did not get rendered due to their size.
                                                                          Instances For
                                                                            noncomputable def CategoryTheory.Limits.kernel.ofCompIso {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {Z : C} (l : X Z) (i : Z Y) (h : CategoryStruct.comp l i.hom = f) :

                                                                            If i is an isomorphism such that l ≫ i.hom = f, the kernel of f is a kernel of l.

                                                                            Equations
                                                                            Instances For
                                                                              def CategoryTheory.Limits.IsKernel.isoKernel {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {Z : C} (l : Z X) {s : KernelFork f} (hs : IsLimit s) (i : Z s.pt) (h : CategoryStruct.comp i.hom (Fork.ι s) = l) :

                                                                              If s is any limit kernel cone over f and if i is an isomorphism such that i.hom ≫ s.ι = l, then l is a kernel of f.

                                                                              Equations
                                                                              Instances For
                                                                                noncomputable def CategoryTheory.Limits.kernel.isoKernel {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasKernel f] {Z : C} (l : Z X) (i : Z kernel f) (h : CategoryStruct.comp i.hom (ι f) = l) :

                                                                                If i is an isomorphism such that i.hom ≫ kernel.ι f = l, then l is a kernel of f.

                                                                                Equations
                                                                                Instances For

                                                                                  The kernel morphism of a zero morphism is an isomorphism

                                                                                  @[reducible, inline]
                                                                                  abbrev CategoryTheory.Limits.CokernelCofork {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) :
                                                                                  Type (max u v)

                                                                                  A cokernel cofork is just a cofork where the second morphism is a zero morphism.

                                                                                  Equations
                                                                                  Instances For
                                                                                    @[reducible, inline]
                                                                                    abbrev CategoryTheory.Limits.CokernelCofork.ofπ {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {Z : C} (π : Y Z) (w : CategoryStruct.comp f π = 0) :

                                                                                    A morphism π satisfying f ≫ π = 0 determines a cokernel cofork on f.

                                                                                    Equations
                                                                                    Instances For
                                                                                      @[simp]
                                                                                      theorem CategoryTheory.Limits.CokernelCofork.π_ofπ {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y P : C} (f : X Y) (π : Y P) (w : CategoryStruct.comp f π = 0) :
                                                                                      Cofork.π (ofπ π w) = π
                                                                                      def CategoryTheory.Limits.isoOfπ {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} (s : Cofork f 0) :

                                                                                      Every cokernel cofork s is isomorphic (actually, equal) to cofork.ofπ (cofork.π s) _.

                                                                                      Equations
                                                                                      Instances For
                                                                                        def CategoryTheory.Limits.ofπCongr {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {P : C} {π π' : Y P} {w : CategoryStruct.comp f π = 0} (h : π = π') :

                                                                                        If π = π', then CokernelCofork.of_π π _ and CokernelCofork.of_π π' _ are isomorphic.

                                                                                        Equations
                                                                                        Instances For
                                                                                          def CategoryTheory.Limits.CokernelCofork.IsColimit.desc' {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {s : CokernelCofork f} (hs : IsColimit s) {W : C} (k : Y W) (h : CategoryStruct.comp f k = 0) :

                                                                                          If s is a colimit cokernel cofork, then every k : Y ⟶ W satisfying f ≫ k = 0 induces l : s.X ⟶ W such that cofork.π s ≫ l = k.

                                                                                          Equations
                                                                                          Instances For
                                                                                            def CategoryTheory.Limits.isColimitAux {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} (t : CokernelCofork f) (desc : (s : CokernelCofork f) → t.pt s.pt) (fac : ∀ (s : CokernelCofork f), CategoryStruct.comp (Cofork.π t) (desc s) = Cofork.π s) (uniq : ∀ (s : CokernelCofork f) (m : t.pt s.pt), CategoryStruct.comp (Cofork.π t) m = Cofork.π sm = desc s) :

                                                                                            This is a slightly more convenient method to verify that a cokernel cofork is a colimit cocone. It only asks for a proof of facts that carry any mathematical content

                                                                                            Equations
                                                                                            Instances For
                                                                                              def CategoryTheory.Limits.CokernelCofork.IsColimit.ofπ {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {Z : C} (g : Y Z) (eq : CategoryStruct.comp f g = 0) (desc : {Z' : C} → (g' : Y Z') → CategoryStruct.comp f g' = 0 → (Z Z')) (fac : ∀ {Z' : C} (g' : Y Z') (eq' : CategoryStruct.comp f g' = 0), CategoryStruct.comp g (desc g' eq') = g') (uniq : ∀ {Z' : C} (g' : Y Z') (eq' : CategoryStruct.comp f g' = 0) (m : Z Z'), CategoryStruct.comp g m = g'm = desc g' eq') :

                                                                                              This is a more convenient formulation to show that a CokernelCofork constructed using CokernelCofork.ofπ is a limit cone.

                                                                                              Equations
                                                                                              • One or more equations did not get rendered due to their size.
                                                                                              Instances For
                                                                                                def CategoryTheory.Limits.CokernelCofork.IsColimit.ofπ' {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Q : C} {f : X Y} (p : Y Q) (w : CategoryStruct.comp f p = 0) (h : {A : C} → (k : Y A) → CategoryStruct.comp f k = 0{ l : Q A // CategoryStruct.comp p l = k }) [hp : Epi p] :

                                                                                                This is a more convenient formulation to show that a CokernelCofork of the form CokernelCofork.ofπ p _ is a colimit cocone when we know that p is an epimorphism.

                                                                                                Equations
                                                                                                • One or more equations did not get rendered due to their size.
                                                                                                Instances For
                                                                                                  def CategoryTheory.Limits.isCokernelEpiComp {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {c : CokernelCofork f} (i : IsColimit c) {W : C} (g : W X) [hg : Epi g] {h : W Y} (hh : h = CategoryStruct.comp g f) :

                                                                                                  Every cokernel of f induces a cokernel of g ≫ f if g is epi.

                                                                                                  Equations
                                                                                                  • One or more equations did not get rendered due to their size.
                                                                                                  Instances For
                                                                                                    @[simp]
                                                                                                    theorem CategoryTheory.Limits.isCokernelEpiComp_desc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {c : CokernelCofork f} (i : IsColimit c) {W : C} (g : W X) [hg : Epi g] {h : W Y} (hh : h = CategoryStruct.comp g f) (s : CokernelCofork h) :
                                                                                                    def CategoryTheory.Limits.isCokernelOfComp {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {W : C} (g : W X) (h : W Y) {c : CokernelCofork h} (i : IsColimit c) (hf : CategoryStruct.comp f (Cofork.π c) = 0) (hfg : CategoryStruct.comp g f = h) :

                                                                                                    Every cokernel of g ≫ f is also a cokernel of f, as long as f ≫ c.π vanishes.

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

                                                                                                      Y identifies to the cokernel of a zero map X ⟶ Y.

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

                                                                                                        Any zero object identifies to the cokernel of a given epimorphisms.

                                                                                                        Equations
                                                                                                        Instances For
                                                                                                          def CategoryTheory.Limits.CokernelCofork.isColimitOfIsColimitOfIff {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {c : CokernelCofork f} (hc : IsColimit c) {X' Y' : C} (f' : X' Y') (e : Y' Y) (iff : ∀ ⦃W : C⦄ (φ : Y W), CategoryStruct.comp f φ = 0 CategoryStruct.comp f' (CategoryStruct.comp e.hom φ) = 0) :

                                                                                                          If c is a colimit cokernel cofork for f : X ⟶ Y, e : Y ≅ Y' and f' : X' ⟶ Y is a morphism, then there is a colimit cokernel cofork for f' with the same point as c if for any morphism φ : Y ⟶ W, there is an equivalence f ≫ φ = 0 ↔ f' ≫ e.hom ≫ φ = 0.

                                                                                                          Equations
                                                                                                          • One or more equations did not get rendered due to their size.
                                                                                                          Instances For
                                                                                                            def CategoryTheory.Limits.CokernelCofork.isColimitOfIsColimitOfIff' {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {c : CokernelCofork f} (hc : IsColimit c) {X' : C} (f' : X' Y) (iff : ∀ ⦃W : C⦄ (φ : Y W), CategoryStruct.comp f φ = 0 CategoryStruct.comp f' φ = 0) :

                                                                                                            If c is a colimit cokernel cofork for f : X ⟶ Y, and f' : X' ⟶ Y is another morphism, then there is a colimit cokernel cofork for f' with the same point as c if for any morphism φ : Y ⟶ W, there is an equivalence f ≫ φ = 0 ↔ f' ≫ φ = 0.

                                                                                                            Equations
                                                                                                            • One or more equations did not get rendered due to their size.
                                                                                                            Instances For
                                                                                                              def CategoryTheory.Limits.CokernelCofork.mapOfIsColimit {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} {cc : CokernelCofork f} (hf : IsColimit cc) (cc' : CokernelCofork f') (φ : Arrow.mk f Arrow.mk f') :
                                                                                                              cc.pt cc'.pt

                                                                                                              The morphism between points of cokernel coforks induced by a morphism in the category of arrows.

                                                                                                              Equations
                                                                                                              • One or more equations did not get rendered due to their size.
                                                                                                              Instances For
                                                                                                                @[simp]
                                                                                                                theorem CategoryTheory.Limits.CokernelCofork.π_mapOfIsColimit {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} {cc : CokernelCofork f} (hf : IsColimit cc) (cc' : CokernelCofork f') (φ : Arrow.mk f Arrow.mk f') :
                                                                                                                @[simp]
                                                                                                                theorem CategoryTheory.Limits.CokernelCofork.π_mapOfIsColimit_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} {cc : CokernelCofork f} (hf : IsColimit cc) (cc' : CokernelCofork f') (φ : Arrow.mk f Arrow.mk f') {Z : C} (h : cc'.pt Z) :
                                                                                                                def CategoryTheory.Limits.CokernelCofork.mapIsoOfIsColimit {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} {cc : CokernelCofork f} {cc' : CokernelCofork f'} (hf : IsColimit cc) (hf' : IsColimit cc') (φ : Arrow.mk f Arrow.mk f') :
                                                                                                                cc.pt cc'.pt

                                                                                                                The isomorphism between points of limit cokernel coforks induced by an isomorphism in the category of arrows.

                                                                                                                Equations
                                                                                                                • One or more equations did not get rendered due to their size.
                                                                                                                Instances For
                                                                                                                  @[simp]
                                                                                                                  theorem CategoryTheory.Limits.CokernelCofork.mapIsoOfIsColimit_inv {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} {cc : CokernelCofork f} {cc' : CokernelCofork f'} (hf : IsColimit cc) (hf' : IsColimit cc') (φ : Arrow.mk f Arrow.mk f') :
                                                                                                                  (mapIsoOfIsColimit hf hf' φ).inv = mapOfIsColimit hf' cc φ.inv
                                                                                                                  @[simp]
                                                                                                                  theorem CategoryTheory.Limits.CokernelCofork.mapIsoOfIsColimit_hom {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f : X Y} {X' Y' : C} {f' : X' Y'} {cc : CokernelCofork f} {cc' : CokernelCofork f'} (hf : IsColimit cc) (hf' : IsColimit cc') (φ : Arrow.mk f Arrow.mk f') :
                                                                                                                  (mapIsoOfIsColimit hf hf' φ).hom = mapOfIsColimit hf cc' φ.hom
                                                                                                                  @[reducible, inline]
                                                                                                                  noncomputable abbrev CategoryTheory.Limits.cokernel {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] :
                                                                                                                  C

                                                                                                                  The cokernel of a morphism, expressed as the coequalizer with the 0 morphism.

                                                                                                                  Equations
                                                                                                                  Instances For
                                                                                                                    @[reducible, inline]
                                                                                                                    noncomputable abbrev CategoryTheory.Limits.cokernel.π {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] :

                                                                                                                    The map from the target of f to cokernel f.

                                                                                                                    Equations
                                                                                                                    Instances For

                                                                                                                      The cokernel built from cokernel.π f is colimiting.

                                                                                                                      Equations
                                                                                                                      • One or more equations did not get rendered due to their size.
                                                                                                                      Instances For
                                                                                                                        @[reducible, inline]
                                                                                                                        noncomputable abbrev CategoryTheory.Limits.cokernel.desc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {W : C} (k : Y W) (h : CategoryStruct.comp f k = 0) :

                                                                                                                        Given any morphism k : Y ⟶ W such that f ≫ k = 0, k factors through cokernel.π f via cokernel.desc : cokernel f ⟶ W.

                                                                                                                        Equations
                                                                                                                        Instances For
                                                                                                                          @[simp]
                                                                                                                          theorem CategoryTheory.Limits.cokernel.π_desc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {W : C} (k : Y W) (h : CategoryStruct.comp f k = 0) :
                                                                                                                          @[simp]
                                                                                                                          theorem CategoryTheory.Limits.cokernel.π_desc_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {W : C} (k : Y W) (h : CategoryStruct.comp f k = 0) {Z : C} (h✝ : W Z) :
                                                                                                                          @[simp]
                                                                                                                          theorem CategoryTheory.Limits.cokernel.desc_zero {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {W : C} {h : CategoryStruct.comp f 0 = 0} :
                                                                                                                          desc f 0 h = 0
                                                                                                                          instance CategoryTheory.Limits.cokernel.desc_epi {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {W : C} (k : Y W) (h : CategoryStruct.comp f k = 0) [Epi k] :
                                                                                                                          Epi (desc f k h)
                                                                                                                          noncomputable def CategoryTheory.Limits.cokernel.desc' {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {W : C} (k : Y W) (h : CategoryStruct.comp f k = 0) :

                                                                                                                          Any morphism k : Y ⟶ W satisfying f ≫ k = 0 induces l : cokernel f ⟶ W such that cokernel.π f ≫ l = k.

                                                                                                                          Equations
                                                                                                                          Instances For
                                                                                                                            @[reducible, inline]
                                                                                                                            noncomputable abbrev CategoryTheory.Limits.cokernel.map {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {X' Y' : C} (f' : X' Y') [HasCokernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q = CategoryStruct.comp p f') :

                                                                                                                            A commuting square induces a morphism of cokernels.

                                                                                                                            Equations
                                                                                                                            Instances For
                                                                                                                              instance CategoryTheory.Limits.instIsIsoMapOfEpi {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {X' Y' : C} (f' : X' Y') [HasCokernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q = CategoryStruct.comp p f') [Epi p] [IsIso q] :
                                                                                                                              IsIso (cokernel.map f f' p q w)
                                                                                                                              theorem CategoryTheory.Limits.cokernel.map_desc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z X' Y' Z' : C} (f : X Y) [HasCokernel f] (g : Y Z) (w : CategoryStruct.comp f g = 0) (f' : X' Y') [HasCokernel f'] (g' : Y' Z') (w' : CategoryStruct.comp f' g' = 0) (p : X X') (q : Y Y') (r : Z Z') (h₁ : CategoryStruct.comp f q = CategoryStruct.comp p f') (h₂ : CategoryStruct.comp g r = CategoryStruct.comp q g') :
                                                                                                                              CategoryStruct.comp (map f f' p q h₁) (desc f' g' w') = CategoryStruct.comp (desc f g w) r

                                                                                                                              Given a commutative diagram

                                                                                                                                  X --f--> Y --g--> Z
                                                                                                                                  |        |        |
                                                                                                                                  |        |        |
                                                                                                                                  v        v        v
                                                                                                                                  X' -f'-> Y' -g'-> Z'
                                                                                                                              

                                                                                                                              with horizontal arrows composing to zero, then we obtain a commutative square

                                                                                                                                 cokernel f ---> Z
                                                                                                                                 |               |
                                                                                                                                 | cokernel.map  |
                                                                                                                                 |               |
                                                                                                                                 v               v
                                                                                                                                 cokernel f' --> Z'
                                                                                                                              
                                                                                                                              @[simp]
                                                                                                                              theorem CategoryTheory.Limits.cokernel.map_zero {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y X' Y' : C} (f : X Y) (f' : X' Y') [HasCokernel f] [HasCokernel f'] (q : X X') (w : CategoryStruct.comp f 0 = CategoryStruct.comp q f') :
                                                                                                                              map f f' q 0 w = 0
                                                                                                                              noncomputable def CategoryTheory.Limits.cokernel.mapIso {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {X' Y' : C} (f' : X' Y') [HasCokernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q.hom = CategoryStruct.comp p.hom f') :

                                                                                                                              A commuting square of isomorphisms induces an isomorphism of cokernels.

                                                                                                                              Equations
                                                                                                                              • One or more equations did not get rendered due to their size.
                                                                                                                              Instances For
                                                                                                                                @[simp]
                                                                                                                                theorem CategoryTheory.Limits.cokernel.mapIso_hom {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {X' Y' : C} (f' : X' Y') [HasCokernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q.hom = CategoryStruct.comp p.hom f') :
                                                                                                                                (mapIso f f' p q w).hom = map f f' p.hom q.hom w
                                                                                                                                @[simp]
                                                                                                                                theorem CategoryTheory.Limits.cokernel.mapIso_inv {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {X' Y' : C} (f' : X' Y') [HasCokernel f'] (p : X X') (q : Y Y') (w : CategoryStruct.comp f q.hom = CategoryStruct.comp p.hom f') :
                                                                                                                                (mapIso f f' p q w).inv = map f' f p.inv q.inv

                                                                                                                                The cokernel of the zero morphism is an isomorphism

                                                                                                                                The cokernel of a zero morphism is isomorphic to the target.

                                                                                                                                Equations
                                                                                                                                Instances For
                                                                                                                                  noncomputable def CategoryTheory.Limits.cokernelIsoOfEq {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f g : X Y} [HasCokernel f] [HasCokernel g] (h : f = g) :

                                                                                                                                  If two morphisms are known to be equal, then their cokernels are isomorphic.

                                                                                                                                  Equations
                                                                                                                                  Instances For
                                                                                                                                    @[simp]
                                                                                                                                    theorem CategoryTheory.Limits.cokernelIsoOfEq_hom_comp_desc_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} {f g : X Y} [HasCokernel f] [HasCokernel g] (h : f = g) (e : Y Z) (he : CategoryStruct.comp g e = 0) {Z✝ : C} (h✝ : Z Z✝) :
                                                                                                                                    @[simp]
                                                                                                                                    theorem CategoryTheory.Limits.cokernelIsoOfEq_inv_comp_desc_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} {f g : X Y} [HasCokernel f] [HasCokernel g] (h : f = g) (e : Y Z) (he : CategoryStruct.comp f e = 0) {Z✝ : C} (h✝ : Z Z✝) :
                                                                                                                                    @[simp]
                                                                                                                                    theorem CategoryTheory.Limits.cokernelIsoOfEq_trans {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} {f g h : X Y} [HasCokernel f] [HasCokernel g] [HasCokernel h] (w₁ : f = g) (w₂ : g = h) :
                                                                                                                                    noncomputable def CategoryTheory.Limits.cokernelCompIsIso {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} (f : X Y) (g : Y Z) [HasCokernel f] [IsIso g] :

                                                                                                                                    When g is an isomorphism, the cokernel of f ≫ g is isomorphic to the cokernel of f.

                                                                                                                                    Equations
                                                                                                                                    • One or more equations did not get rendered due to their size.
                                                                                                                                    Instances For
                                                                                                                                      noncomputable def CategoryTheory.Limits.cokernelEpiComp {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y Z : C} (f : X Y) (g : Y Z) [Epi f] [HasCokernel g] :

                                                                                                                                      When f is an epimorphism, the cokernel of f ≫ g is isomorphic to the cokernel of g.

                                                                                                                                      Equations
                                                                                                                                      • One or more equations did not get rendered due to their size.
                                                                                                                                      Instances For
                                                                                                                                        noncomputable def CategoryTheory.Limits.cokernel.congr {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f g : X Y) [HasCokernel f] [HasCokernel g] (h : f = g) :

                                                                                                                                        Equal maps have isomorphic cokernels.

                                                                                                                                        Equations
                                                                                                                                        • One or more equations did not get rendered due to their size.
                                                                                                                                        Instances For
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.Limits.cokernel.congr_hom {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f g : X Y) [HasCokernel f] [HasCokernel g] (h : f = g) :
                                                                                                                                          (congr f g h).hom = desc f (π g)
                                                                                                                                          @[simp]
                                                                                                                                          theorem CategoryTheory.Limits.cokernel.congr_inv {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f g : X Y) [HasCokernel f] [HasCokernel g] (h : f = g) :
                                                                                                                                          (congr f g h).inv = desc g (π f)

                                                                                                                                          The morphism to the zero object determines a cocone on a cokernel diagram

                                                                                                                                          Equations
                                                                                                                                          Instances For

                                                                                                                                            The morphism to the zero object is a cokernel of an epimorphism

                                                                                                                                            Equations
                                                                                                                                            • One or more equations did not get rendered due to their size.
                                                                                                                                            Instances For
                                                                                                                                              noncomputable def CategoryTheory.Limits.cokernel.ofEpi {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasZeroObject C] [HasCokernel f] [Epi f] :

                                                                                                                                              The cokernel of an epimorphism is isomorphic to the zero object

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

                                                                                                                                                The cokernel morphism of an epimorphism is a zero morphism

                                                                                                                                                The cokernel of the image inclusion of a morphism f is isomorphic to the cokernel of f.

                                                                                                                                                (This result requires that the factorisation through the image is an epimorphism. This holds in any category with equalizers.)

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

                                                                                                                                                  The kernel of the morphism X ⟶ image f is just the kernel of f.

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

                                                                                                                                                    The cokernel of a zero morphism is an isomorphism

                                                                                                                                                    The kernel of the cokernel of an epimorphism is an isomorphism

                                                                                                                                                    The cokernel of the kernel of a monomorphism is an isomorphism

                                                                                                                                                    noncomputable def CategoryTheory.Limits.zeroCokernelOfZeroCancel {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] [HasZeroObject C] {X Y : C} (f : X Y) (hf : ∀ (Z : C) (g : Y Z), CategoryStruct.comp f g = 0g = 0) :

                                                                                                                                                    If f ≫ g = 0 implies g = 0 for all g, then 0 : Y ⟶ 0 is a cokernel of f.

                                                                                                                                                    Equations
                                                                                                                                                    • One or more equations did not get rendered due to their size.
                                                                                                                                                    Instances For
                                                                                                                                                      def CategoryTheory.Limits.IsCokernel.ofIsoComp {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {Z : C} (l : Z Y) (i : X Z) (h : CategoryStruct.comp i.hom l = f) {s : CokernelCofork f} (hs : IsColimit s) :

                                                                                                                                                      If i is an isomorphism such that i.hom ≫ l = f, then any cokernel of f is a cokernel of l.

                                                                                                                                                      Equations
                                                                                                                                                      • One or more equations did not get rendered due to their size.
                                                                                                                                                      Instances For
                                                                                                                                                        noncomputable def CategoryTheory.Limits.cokernel.ofIsoComp {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {Z : C} (l : Z Y) (i : X Z) (h : CategoryStruct.comp i.hom l = f) :

                                                                                                                                                        If i is an isomorphism such that i.hom ≫ l = f, then the cokernel of f is a cokernel of l.

                                                                                                                                                        Equations
                                                                                                                                                        Instances For
                                                                                                                                                          def CategoryTheory.Limits.IsCokernel.cokernelIso {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {Z : C} (l : Y Z) {s : CokernelCofork f} (hs : IsColimit s) (i : s.pt Z) (h : CategoryStruct.comp (Cofork.π s) i.hom = l) :

                                                                                                                                                          If s is any colimit cokernel cocone over f and i is an isomorphism such that s.π ≫ i.hom = l, then l is a cokernel of f.

                                                                                                                                                          Equations
                                                                                                                                                          Instances For
                                                                                                                                                            def CategoryTheory.Limits.IsCokernel.ofIso {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {X' Y' : C} {f' : X' Y'} {s : CokernelCofork f} (hs : IsColimit s) (s' : CokernelCofork f') (eX : X X') (eY : Y Y') (e : s.pt s'.pt) (H : CategoryStruct.comp eX.hom f' = CategoryStruct.comp f eY.hom) (H' : CategoryStruct.comp eY.hom (Cofork.π s') = CategoryStruct.comp (Cofork.π s) e.hom) :

                                                                                                                                                            Transport an IsCokernel across isomorphisms.

                                                                                                                                                            Equations
                                                                                                                                                            • One or more equations did not get rendered due to their size.
                                                                                                                                                            Instances For
                                                                                                                                                              noncomputable def CategoryTheory.Limits.cokernel.cokernelIso {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) [HasCokernel f] {Z : C} (l : Y Z) (i : cokernel f Z) (h : CategoryStruct.comp (π f) i.hom = l) :

                                                                                                                                                              If i is an isomorphism such that cokernel.π f ≫ i.hom = l, then l is a cokernel of f.

                                                                                                                                                              Equations
                                                                                                                                                              Instances For
                                                                                                                                                                noncomputable def CategoryTheory.Limits.kernelComparison {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {D : Type u₂} [Category.{v₂, u₂} D] [HasZeroMorphisms D] (G : Functor C D) [G.PreservesZeroMorphisms] [HasKernel f] [HasKernel (G.map f)] :
                                                                                                                                                                G.obj (kernel f) kernel (G.map f)

                                                                                                                                                                The comparison morphism for the kernel of f. This is an isomorphism iff G preserves the kernel of f; see Mathlib/CategoryTheory/Limits/Preserves/Shapes/Kernels.lean

                                                                                                                                                                Equations
                                                                                                                                                                Instances For
                                                                                                                                                                  @[simp]
                                                                                                                                                                  @[simp]
                                                                                                                                                                  theorem CategoryTheory.Limits.map_lift_kernelComparison_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {D : Type u₂} [Category.{v₂, u₂} D] [HasZeroMorphisms D] (G : Functor C D) [G.PreservesZeroMorphisms] [HasKernel f] [HasKernel (G.map f)] {Z : C} {h : Z X} (w : CategoryStruct.comp h f = 0) {Z✝ : D} (h✝ : kernel (G.map f) Z✝) :
                                                                                                                                                                  theorem CategoryTheory.Limits.kernelComparison_comp_kernel_map {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {D : Type u₂} [Category.{v₂, u₂} D] [HasZeroMorphisms D] (G : Functor C D) [G.PreservesZeroMorphisms] {X' Y' : C} [HasKernel f] [HasKernel (G.map f)] (g : X' Y') [HasKernel g] [HasKernel (G.map g)] (p : X X') (q : Y Y') (hpq : CategoryStruct.comp f q = CategoryStruct.comp p g) :
                                                                                                                                                                  CategoryStruct.comp (kernelComparison f G) (kernel.map (G.map f) (G.map g) (G.map p) (G.map q) ) = CategoryStruct.comp (G.map (kernel.map f g p q hpq)) (kernelComparison g G)
                                                                                                                                                                  theorem CategoryTheory.Limits.kernelComparison_comp_kernel_map_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {D : Type u₂} [Category.{v₂, u₂} D] [HasZeroMorphisms D] (G : Functor C D) [G.PreservesZeroMorphisms] {X' Y' : C} [HasKernel f] [HasKernel (G.map f)] (g : X' Y') [HasKernel g] [HasKernel (G.map g)] (p : X X') (q : Y Y') (hpq : CategoryStruct.comp f q = CategoryStruct.comp p g) {Z : D} (h : kernel (G.map g) Z) :

                                                                                                                                                                  The comparison morphism for the cokernel of f.

                                                                                                                                                                  Equations
                                                                                                                                                                  Instances For
                                                                                                                                                                    @[simp]
                                                                                                                                                                    theorem CategoryTheory.Limits.cokernelComparison_map_desc_assoc {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {D : Type u₂} [Category.{v₂, u₂} D] [HasZeroMorphisms D] (G : Functor C D) [G.PreservesZeroMorphisms] [HasCokernel f] [HasCokernel (G.map f)] {Z : C} {h : Y Z} (w : CategoryStruct.comp f h = 0) {Z✝ : D} (h✝ : G.obj Z Z✝) :
                                                                                                                                                                    theorem CategoryTheory.Limits.cokernel_map_comp_cokernelComparison {C : Type u} [Category.{v, u} C] [HasZeroMorphisms C] {X Y : C} (f : X Y) {D : Type u₂} [Category.{v₂, u₂} D] [HasZeroMorphisms D] (G : Functor C D) [G.PreservesZeroMorphisms] {X' Y' : C} [HasCokernel f] [HasCokernel (G.map f)] (g : X' Y') [HasCokernel g] [HasCokernel (G.map g)] (p : X X') (q : Y Y') (hpq : CategoryStruct.comp f q = CategoryStruct.comp p g) :

                                                                                                                                                                    HasKernels represents the existence of kernels for every morphism.

                                                                                                                                                                    Instances

                                                                                                                                                                      HasCokernels represents the existence of cokernels for every morphism.

                                                                                                                                                                      Instances

                                                                                                                                                                        The kernel of an arrow is natural.

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

                                                                                                                                                                          The kernel inclusion is natural.

                                                                                                                                                                          Equations
                                                                                                                                                                          Instances For

                                                                                                                                                                            The cokernel of an arrow is natural.

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

                                                                                                                                                                              The cokernel projection is natural.

                                                                                                                                                                              Equations
                                                                                                                                                                              Instances For