Loogle!
Result
Found 193 declarations mentioning CategoryTheory.Limits.HasCokernel.
- CategoryTheory.Limits.HasCokernel 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) : Prop - CategoryTheory.Limits.cokernel 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] : C - CategoryTheory.Limits.HasCokernels.has_colimit 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} {inst✝ : CategoryTheory.Category.{v, u} C} {inst✝¹ : CategoryTheory.Limits.HasZeroMorphisms C} [self : CategoryTheory.Limits.HasCokernels C] {X Y : C} (f : X ⟶ Y) : CategoryTheory.Limits.HasCokernel f - CategoryTheory.Limits.HasCokernels.mk 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (has_colimit : ∀ {X Y : C} (f : X ⟶ Y), CategoryTheory.Limits.HasCokernel f := by infer_instance) : CategoryTheory.Limits.HasCokernels C - CategoryTheory.Limits.cokernel.π 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] : Y ⟶ CategoryTheory.Limits.cokernel f - CategoryTheory.Limits.isZero_cokernel_of_epi 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Epi f] [CategoryTheory.Limits.HasCokernel f] : CategoryTheory.Limits.IsZero (CategoryTheory.Limits.cokernel f) - CategoryTheory.Limits.cokernel.ofEpi 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Epi f] : CategoryTheory.Limits.cokernel f ≅ 0 - CategoryTheory.Limits.hasCokernel_comp_iso 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.IsIso g] : CategoryTheory.Limits.HasCokernel (CategoryTheory.CategoryStruct.comp f g) - CategoryTheory.Limits.hasCokernel_epi_comp 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {W : C} (g : W ⟶ X) [CategoryTheory.Epi g] : CategoryTheory.Limits.HasCokernel (CategoryTheory.CategoryStruct.comp g f) - CategoryTheory.Limits.cokernelIsoOfEq 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) : CategoryTheory.Limits.cokernel f ≅ CategoryTheory.Limits.cokernel g - CategoryTheory.Limits.cokernel.congr 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) : CategoryTheory.Limits.cokernel f ≅ CategoryTheory.Limits.cokernel g - CategoryTheory.Limits.cokernelCompIsIso 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.IsIso g] : CategoryTheory.Limits.cokernel (CategoryTheory.CategoryStruct.comp f g) ≅ CategoryTheory.Limits.cokernel f - CategoryTheory.Limits.cokernelEpiComp 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) [CategoryTheory.Epi f] [CategoryTheory.Limits.HasCokernel g] : CategoryTheory.Limits.cokernel (CategoryTheory.CategoryStruct.comp f g) ≅ CategoryTheory.Limits.cokernel g - CategoryTheory.Limits.cokernelIsoOfEq_refl 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {h : f = f} : CategoryTheory.Limits.cokernelIsoOfEq h = CategoryTheory.Iso.refl (CategoryTheory.Limits.cokernel f) - CategoryTheory.Limits.eq_zero_of_mono_cokernel 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Mono (CategoryTheory.Limits.cokernel.π f)] : f = 0 - CategoryTheory.Limits.cokernel.π_of_zero 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] (eq : f = 0) : CategoryTheory.IsIso (CategoryTheory.Limits.cokernel.π f) - CategoryTheory.Limits.cokernel_not_iso_of_nonzero 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] (w : f ≠ 0) : CategoryTheory.IsIso (CategoryTheory.Limits.cokernel.π f) → False - CategoryTheory.Limits.cokernel_not_mono_of_nonzero 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] (w : f ≠ 0) : ¬CategoryTheory.Mono (CategoryTheory.Limits.cokernel.π f) - CategoryTheory.Limits.cokernel.desc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {W : C} (k : Y ⟶ W) (h : CategoryTheory.CategoryStruct.comp f k = 0) : CategoryTheory.Limits.cokernel f ⟶ W - CategoryTheory.Limits.cokernelImageι 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasImage f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.image.ι f)] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Epi (CategoryTheory.Limits.factorThruImage f)] : CategoryTheory.Limits.cokernel (CategoryTheory.Limits.image.ι f) ≅ CategoryTheory.Limits.cokernel f - CategoryTheory.Limits.cokernel.of_kernel_of_mono 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Mono f] : CategoryTheory.IsIso (CategoryTheory.Limits.cokernel.π (CategoryTheory.Limits.kernel.ι f)) - CategoryTheory.Limits.kernel.of_cokernel_of_epi 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Epi f] : CategoryTheory.IsIso (CategoryTheory.Limits.kernel.ι (CategoryTheory.Limits.cokernel.π f)) - CategoryTheory.Limits.cokernel.π_of_epi 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Epi f] : CategoryTheory.Limits.cokernel.π f = 0 - CategoryTheory.Limits.coequalizer_as_cokernel 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] : CategoryTheory.Limits.coequalizer.π f 0 = CategoryTheory.Limits.cokernel.π f - CategoryTheory.Limits.cokernel.desc_epi 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {W : C} (k : Y ⟶ W) (h : CategoryTheory.CategoryStruct.comp f k = 0) [CategoryTheory.Epi k] : CategoryTheory.Epi (CategoryTheory.Limits.cokernel.desc f k h) - CategoryTheory.Limits.cokernel.mapIso 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel f'] (p : X ≅ X') (q : Y ≅ Y') (w : CategoryTheory.CategoryStruct.comp f q.hom = CategoryTheory.CategoryStruct.comp p.hom f') : CategoryTheory.Limits.cokernel f ≅ CategoryTheory.Limits.cokernel f' - CategoryTheory.Limits.cokernel.condition 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] : CategoryTheory.CategoryStruct.comp f (CategoryTheory.Limits.cokernel.π f) = 0 - CategoryTheory.Limits.cokernel.map 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel f'] (p : X ⟶ X') (q : Y ⟶ Y') (w : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p f') : CategoryTheory.Limits.cokernel f ⟶ CategoryTheory.Limits.cokernel f' - CategoryTheory.Limits.cokernelComparison 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] : CategoryTheory.Limits.cokernel (G.map f) ⟶ G.obj (CategoryTheory.Limits.cokernel f) - CategoryTheory.Limits.cokernel.map_id 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] (q : X ⟶ X) (w : CategoryTheory.CategoryStruct.comp f (CategoryTheory.CategoryStruct.id Y) = CategoryTheory.CategoryStruct.comp q f) : CategoryTheory.Limits.cokernel.map f f q (CategoryTheory.CategoryStruct.id Y) w = CategoryTheory.CategoryStruct.id (CategoryTheory.Limits.cokernel f) - CategoryTheory.Limits.cokernel.π_desc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {W : C} (k : Y ⟶ W) (h : CategoryTheory.CategoryStruct.comp f k = 0) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π f) (CategoryTheory.Limits.cokernel.desc f k h) = k - CategoryTheory.Limits.instIsIsoMapOfEpi 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel f'] (p : X ⟶ X') (q : Y ⟶ Y') (w : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p f') [CategoryTheory.Epi p] [CategoryTheory.IsIso q] : CategoryTheory.IsIso (CategoryTheory.Limits.cokernel.map f f' p q w) - CategoryTheory.Limits.π_comp_cokernelIsoOfEq_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π f) (CategoryTheory.Limits.cokernelIsoOfEq h).hom = CategoryTheory.Limits.cokernel.π g - CategoryTheory.Limits.π_comp_cokernelIsoOfEq_inv 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π g) (CategoryTheory.Limits.cokernelIsoOfEq h).inv = CategoryTheory.Limits.cokernel.π f - CategoryTheory.Limits.cokernel.condition_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {Z : C} (h : CategoryTheory.Limits.cokernel f ⟶ Z) : CategoryTheory.CategoryStruct.comp f (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π f) h) = CategoryTheory.CategoryStruct.comp 0 h - CategoryTheory.Limits.cokernel.desc' 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {W : C} (k : Y ⟶ W) (h : CategoryTheory.CategoryStruct.comp f k = 0) : { l // CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π f) l = k } - CategoryTheory.Limits.cokernel.cokernelIso 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {Z : C} (l : Y ⟶ Z) (i : CategoryTheory.Limits.cokernel f ≅ Z) (h : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π f) i.hom = l) : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ l ⋯) - CategoryTheory.Limits.cokernel.π_desc_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {W : C} (k : Y ⟶ W) (h : CategoryTheory.CategoryStruct.comp f k = 0) {Z : C} (h✝ : W ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π f) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.desc f k h) h✝) = CategoryTheory.CategoryStruct.comp k h✝ - CategoryTheory.Limits.cokernelIsoOfEq_trans 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f g h : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] [CategoryTheory.Limits.HasCokernel h] (w₁ : f = g) (w₂ : g = h) : CategoryTheory.Limits.cokernelIsoOfEq w₁ ≪≫ CategoryTheory.Limits.cokernelIsoOfEq w₂ = CategoryTheory.Limits.cokernelIsoOfEq ⋯ - CategoryTheory.Limits.cokernel.mapIso_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel f'] (p : X ≅ X') (q : Y ≅ Y') (w : CategoryTheory.CategoryStruct.comp f q.hom = CategoryTheory.CategoryStruct.comp p.hom f') : (CategoryTheory.Limits.cokernel.mapIso f f' p q w).hom = CategoryTheory.Limits.cokernel.map f f' p.hom q.hom w - CategoryTheory.Limits.π_comp_cokernelIsoOfEq_hom_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) {Z : C} (h✝ : CategoryTheory.Limits.cokernel g ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π f) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelIsoOfEq h).hom h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π g) h✝ - CategoryTheory.Limits.π_comp_cokernelIsoOfEq_inv_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) {Z : C} (h✝ : CategoryTheory.Limits.cokernel f ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelIsoOfEq h).inv h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π f) h✝ - CategoryTheory.Limits.cokernelEpiComp_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) [CategoryTheory.Epi f] [CategoryTheory.Limits.HasCokernel g] : (CategoryTheory.Limits.cokernelEpiComp f g).hom = CategoryTheory.Limits.cokernel.desc (CategoryTheory.CategoryStruct.comp f g) (CategoryTheory.Limits.cokernel.π g) ⋯ - CategoryTheory.Limits.cokernel.mapIso_inv 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel f'] (p : X ≅ X') (q : Y ≅ Y') (w : CategoryTheory.CategoryStruct.comp f q.hom = CategoryTheory.CategoryStruct.comp p.hom f') : (CategoryTheory.Limits.cokernel.mapIso f f' p q w).inv = CategoryTheory.Limits.cokernel.map f' f p.inv q.inv ⋯ - CategoryTheory.Limits.cokernelImageι_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasImage f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.image.ι f)] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Epi (CategoryTheory.Limits.factorThruImage f)] : (CategoryTheory.Limits.cokernelImageι f).hom = CategoryTheory.Limits.cokernel.desc (CategoryTheory.Limits.image.ι f) (CategoryTheory.Limits.cokernel.π f) ⋯ - CategoryTheory.Limits.cokernel.desc_zero 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {W : C} {h : CategoryTheory.CategoryStruct.comp f 0 = 0} : CategoryTheory.Limits.cokernel.desc f 0 h = 0 - CategoryTheory.Limits.cokernelImageι_inv 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasImage f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.image.ι f)] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Epi (CategoryTheory.Limits.factorThruImage f)] : (CategoryTheory.Limits.cokernelImageι f).inv = CategoryTheory.Limits.cokernel.desc f (CategoryTheory.Limits.cokernel.π (CategoryTheory.Limits.image.ι f)) ⋯ - CategoryTheory.Limits.cokernelEpiComp_inv 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) [CategoryTheory.Epi f] [CategoryTheory.Limits.HasCokernel g] : (CategoryTheory.Limits.cokernelEpiComp f g).inv = CategoryTheory.Limits.cokernel.desc g (CategoryTheory.Limits.cokernel.π (CategoryTheory.CategoryStruct.comp f g)) ⋯ - CategoryTheory.Limits.cokernelCompIsIso_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.IsIso g] : (CategoryTheory.Limits.cokernelCompIsIso f g).hom = CategoryTheory.Limits.cokernel.desc (CategoryTheory.CategoryStruct.comp f g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.inv g) (CategoryTheory.Limits.cokernel.π f)) ⋯ - CategoryTheory.Limits.cokernelIsoOfEq_hom_comp_desc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) (e : Y ⟶ Z) (he : CategoryTheory.CategoryStruct.comp g e = 0) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelIsoOfEq h).hom (CategoryTheory.Limits.cokernel.desc g e he) = CategoryTheory.Limits.cokernel.desc f e ⋯ - CategoryTheory.Limits.cokernelIsoOfEq_inv_comp_desc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) (e : Y ⟶ Z) (he : CategoryTheory.CategoryStruct.comp f e = 0) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelIsoOfEq h).inv (CategoryTheory.Limits.cokernel.desc f e he) = CategoryTheory.Limits.cokernel.desc g e ⋯ - CategoryTheory.Limits.π_comp_cokernelComparison 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π (G.map f)) (CategoryTheory.Limits.cokernelComparison f G) = G.map (CategoryTheory.Limits.cokernel.π f) - CategoryTheory.Limits.cokernel.ofIsoComp 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {Z : C} (l : Z ⟶ Y) (i : X ≅ Z) (h : CategoryTheory.CategoryStruct.comp i.hom l = f) : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ (CategoryTheory.Limits.cokernel.π f) ⋯) - CategoryTheory.Limits.cokernelCompIsIso_inv 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.IsIso g] : (CategoryTheory.Limits.cokernelCompIsIso f g).inv = CategoryTheory.Limits.cokernel.desc f (CategoryTheory.CategoryStruct.comp g (CategoryTheory.Limits.cokernel.π (CategoryTheory.CategoryStruct.comp f g))) ⋯ - CategoryTheory.Limits.cokernel.map_zero 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y X' Y' : C} (f : X ⟶ Y) (f' : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel f'] (q : X ⟶ X') (w : CategoryTheory.CategoryStruct.comp f 0 = CategoryTheory.CategoryStruct.comp q f') : CategoryTheory.Limits.cokernel.map f f' q 0 w = 0 - CategoryTheory.Limits.cokernelIsoOfEq_hom_comp_desc_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) (e : Y ⟶ Z) (he : CategoryTheory.CategoryStruct.comp g e = 0) {Z✝ : C} (h✝ : Z ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelIsoOfEq h).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.desc g e he) h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.desc f e ⋯) h✝ - CategoryTheory.Limits.cokernelIsoOfEq_inv_comp_desc_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} {f g : X ⟶ Y} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel g] (h : f = g) (e : Y ⟶ Z) (he : CategoryTheory.CategoryStruct.comp f e = 0) {Z✝ : C} (h✝ : Z ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelIsoOfEq h).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.desc f e he) h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.desc g e ⋯) h✝ - CategoryTheory.Limits.π_comp_cokernelComparison_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] {Z : D} (h : G.obj (CategoryTheory.Limits.cokernel f) ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π (G.map f)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelComparison f G) h) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.cokernel.π f)) h - CategoryTheory.Limits.cokernelComparison_map_desc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] {Z : C} {h : Y ⟶ Z} (w : CategoryTheory.CategoryStruct.comp f h = 0) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelComparison f G) (G.map (CategoryTheory.Limits.cokernel.desc f h w)) = CategoryTheory.Limits.cokernel.desc (G.map f) (G.map h) ⋯ - CategoryTheory.Limits.cokernel.map_desc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z X' Y' Z' : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] (g : Y ⟶ Z) (w : CategoryTheory.CategoryStruct.comp f g = 0) (f' : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel f'] (g' : Y' ⟶ Z') (w' : CategoryTheory.CategoryStruct.comp f' g' = 0) (p : X ⟶ X') (q : Y ⟶ Y') (r : Z ⟶ Z') (h₁ : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p f') (h₂ : CategoryTheory.CategoryStruct.comp g r = CategoryTheory.CategoryStruct.comp q g') : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.map f f' p q h₁) (CategoryTheory.Limits.cokernel.desc f' g' w') = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.desc f g w) r - CategoryTheory.Limits.cokernelIsCokernel 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofork.ofπ (CategoryTheory.Limits.cokernel.π f) ⋯) - CategoryTheory.Limits.cokernelComparison_map_desc_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] {Z : C} {h : Y ⟶ Z} (w : CategoryTheory.CategoryStruct.comp f h = 0) {Z✝ : D} (h✝ : G.obj Z ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelComparison f G) (CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.cokernel.desc f h w)) h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.desc (G.map f) (G.map h) ⋯) h✝ - CategoryTheory.Limits.colimit_ι_zero_cokernel_desc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) (h : CategoryTheory.CategoryStruct.comp f g = 0) [CategoryTheory.Limits.HasCokernel f] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.colimit.ι (CategoryTheory.Limits.parallelPair f 0) CategoryTheory.Limits.WalkingParallelPair.zero) (CategoryTheory.Limits.cokernel.desc f g h) = 0 - CategoryTheory.Limits.cokernel_map_comp_cokernelComparison 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X' Y' : C} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] (g : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel g] [CategoryTheory.Limits.HasCokernel (G.map g)] (p : X ⟶ X') (q : Y ⟶ Y') (hpq : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p g) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.map (G.map f) (G.map g) (G.map p) (G.map q) ⋯) (CategoryTheory.Limits.cokernelComparison g G) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelComparison f G) (G.map (CategoryTheory.Limits.cokernel.map f g p q hpq)) - CategoryTheory.Limits.colimit_ι_zero_cokernel_desc_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) (h : CategoryTheory.CategoryStruct.comp f g = 0) [CategoryTheory.Limits.HasCokernel f] {Z✝ : C} (h✝ : Z ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.colimit.ι (CategoryTheory.Limits.parallelPair f 0) CategoryTheory.Limits.WalkingParallelPair.zero) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.desc f g h) h✝) = CategoryTheory.CategoryStruct.comp 0 h✝ - CategoryTheory.Limits.cokernel_map_comp_cokernelComparison_assoc 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X' Y' : C} [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] (g : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel g] [CategoryTheory.Limits.HasCokernel (G.map g)] (p : X ⟶ X') (q : Y ⟶ Y') (hpq : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p g) {Z : D} (h : G.obj (CategoryTheory.Limits.cokernel g) ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.map (G.map f) (G.map g) (G.map p) (G.map q) ⋯) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelComparison g G) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernelComparison f G) (CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.cokernel.map f g p q hpq)) h) - CategoryTheory.Preadditive.epi_of_isZero_cokernel 📋 Mathlib.CategoryTheory.Preadditive.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] (h : CategoryTheory.Limits.IsZero (CategoryTheory.Limits.cokernel f)) : CategoryTheory.Epi f - CategoryTheory.Preadditive.epi_iff_isZero_cokernel 📋 Mathlib.CategoryTheory.Preadditive.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] : CategoryTheory.Epi f ↔ CategoryTheory.Limits.IsZero (CategoryTheory.Limits.cokernel f) - CategoryTheory.Preadditive.hasCoequalizer_of_hasCokernel 📋 Mathlib.CategoryTheory.Preadditive.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f g : X ⟶ Y) [CategoryTheory.Limits.HasCokernel (f - g)] : CategoryTheory.Limits.HasCoequalizer f g - CategoryTheory.Preadditive.hasCokernel_of_hasCoequalizer 📋 Mathlib.CategoryTheory.Preadditive.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f g : X ⟶ Y) [CategoryTheory.Limits.HasCoequalizer f g] : CategoryTheory.Limits.HasCokernel (f - g) - CategoryTheory.Limits.instHasCokernelι 📋 Mathlib.CategoryTheory.Limits.Shapes.Biproducts
{J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) (i : J) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (Subtype.restrict (fun j => j ≠ i) f)] : CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.biproduct.ι f i) - CategoryTheory.Limits.instHasCokernelFromSubtype 📋 Mathlib.CategoryTheory.Limits.Shapes.Biproducts
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {K : Type} [Finite K] [CategoryTheory.Limits.HasFiniteBiproducts C] (f : K → C) (p : K → Prop) : CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.biproduct.fromSubtype f p) - CategoryTheory.Limits.instHasCokernelInl 📋 Mathlib.CategoryTheory.Limits.Shapes.BinaryBiproducts
{C : Type uC} [CategoryTheory.Category.{uC', uC} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} [CategoryTheory.Limits.HasBinaryBiproduct X Y] : CategoryTheory.Limits.HasCokernel CategoryTheory.Limits.biprod.inl - CategoryTheory.Limits.instHasCokernelInr 📋 Mathlib.CategoryTheory.Limits.Shapes.BinaryBiproducts
{C : Type uC} [CategoryTheory.Category.{uC', uC} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} [CategoryTheory.Limits.HasBinaryBiproduct X Y] : CategoryTheory.Limits.HasCokernel CategoryTheory.Limits.biprod.inr - CategoryTheory.Limits.cokernel.condition_apply 📋 Mathlib.CategoryTheory.ConcreteCategory.Elementwise
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {F : C → C → Type uF} {carrier : C → Type w} {instFunLike : (X Y : C) → FunLike (F X Y) (carrier X) (carrier Y)} [inst : CategoryTheory.ConcreteCategory C F] (x : carrier X) : (CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.cokernel.π f)) ((CategoryTheory.ConcreteCategory.hom f) x) = (CategoryTheory.ConcreteCategory.hom 0) x - CategoryTheory.Limits.cokernel.π_desc_apply 📋 Mathlib.CategoryTheory.ConcreteCategory.Elementwise
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] {W : C} (k : Y ⟶ W) (h : CategoryTheory.CategoryStruct.comp f k = 0) {F : C → C → Type uF} {carrier : C → Type w} {instFunLike : (X Y : C) → FunLike (F X Y) (carrier X) (carrier Y)} [inst : CategoryTheory.ConcreteCategory C F] (x : carrier Y) : (CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.cokernel.desc f k h)) ((CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.cokernel.π f)) x) = (CategoryTheory.ConcreteCategory.hom k) x - CategoryTheory.Limits.instHasCokernelMapOfPreservesColimitWalkingParallelPairParallelPairOfNatHom 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G] : CategoryTheory.Limits.HasCokernel (G.map f) - CategoryTheory.Limits.PreservesCokernel.iso 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G] : G.obj (CategoryTheory.Limits.cokernel f) ≅ CategoryTheory.Limits.cokernel (G.map f) - CategoryTheory.Limits.instIsIsoCokernelComparison 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G] : CategoryTheory.IsIso (CategoryTheory.Limits.cokernelComparison f G) - CategoryTheory.Limits.PreservesCokernel.of_iso_comparison 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] [i : CategoryTheory.IsIso (CategoryTheory.Limits.cokernelComparison f G)] : CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G - CategoryTheory.Limits.PreservesCokernel.iso_inv 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G] : (CategoryTheory.Limits.PreservesCokernel.iso G f).inv = CategoryTheory.Limits.cokernelComparison f G - CategoryTheory.Limits.isColimitOfHasCokernelOfPreservesColimit 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G] : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofork.ofπ (G.map (CategoryTheory.Limits.cokernel.π f)) ⋯) - CategoryTheory.Limits.PreservesCokernel.π_iso_hom 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G] : CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.cokernel.π f)) (CategoryTheory.Limits.PreservesCokernel.iso G f).hom = CategoryTheory.Limits.cokernel.π (G.map f) - CategoryTheory.Limits.PreservesCokernel.π_iso_hom_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G] {Z : D} (h : CategoryTheory.Limits.cokernel (G.map f) ⟶ Z) : CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.cokernel.π f)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesCokernel.iso G f).hom h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π (G.map f)) h - CategoryTheory.Limits.preserves_cokernel_iso_comp_cokernel_map 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G] {X' Y' : C} (g : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel g] [CategoryTheory.Limits.HasCokernel (G.map g)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair g 0) G] (p : X ⟶ X') (q : Y ⟶ Y') (hpq : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p g) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesCokernel.iso G f).hom (CategoryTheory.Limits.cokernel.map (G.map f) (G.map g) (G.map p) (G.map q) ⋯) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.cokernel.map f g p q hpq)) (CategoryTheory.Limits.PreservesCokernel.iso G g).hom - CategoryTheory.Limits.preserves_cokernel_iso_comp_cokernel_map_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (G : CategoryTheory.Functor C D) [G.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasCokernel (G.map f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) G] {X' Y' : C} (g : X' ⟶ Y') [CategoryTheory.Limits.HasCokernel g] [CategoryTheory.Limits.HasCokernel (G.map g)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair g 0) G] (p : X ⟶ X') (q : Y ⟶ Y') (hpq : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p g) {Z : D} (h : CategoryTheory.Limits.cokernel (G.map g) ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesCokernel.iso G f).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.map (G.map f) (G.map g) (G.map p) (G.map q) ⋯) h) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.cokernel.map f g p q hpq)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesCokernel.iso G g).hom h) - CategoryTheory.Abelian.coimage 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : C - CategoryTheory.Abelian.image 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] : C - CategoryTheory.Abelian.factorThruCoimage 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : CategoryTheory.Abelian.coimage f ⟶ Q - CategoryTheory.Abelian.factorThruImage 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] : P ⟶ CategoryTheory.Abelian.image f - CategoryTheory.Abelian.coimage.π 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : P ⟶ CategoryTheory.Abelian.coimage f - CategoryTheory.Abelian.image.ι 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] : CategoryTheory.Abelian.image f ⟶ Q - CategoryTheory.Abelian.epi_factorThruCoimage 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Epi f] : CategoryTheory.Epi (CategoryTheory.Abelian.factorThruCoimage f) - CategoryTheory.Abelian.mono_factorThruImage 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Mono f] : CategoryTheory.Mono (CategoryTheory.Abelian.factorThruImage f) - CategoryTheory.Abelian.coimage.fac 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.coimage.π f) (CategoryTheory.Abelian.factorThruCoimage f) = f - CategoryTheory.Abelian.image.fac 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.factorThruImage f) (CategoryTheory.Abelian.image.ι f) = f - CategoryTheory.Abelian.coimageImageComparison 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : CategoryTheory.Abelian.coimage f ⟶ CategoryTheory.Abelian.image f - CategoryTheory.Abelian.coimageImageComparison' 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : CategoryTheory.Abelian.coimage f ⟶ CategoryTheory.Abelian.image f - CategoryTheory.Abelian.coimageImageComparison_eq_coimageImageComparison' 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : CategoryTheory.Abelian.coimageImageComparison f = CategoryTheory.Abelian.coimageImageComparison' f - CategoryTheory.Abelian.coimage_image_factorisation 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.coimage.π f) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.coimageImageComparison f) (CategoryTheory.Abelian.image.ι f)) = f - CategoryTheory.Abelian.coimage_image_factorisation_assoc 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] {Z : C} (h : Q ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.coimage.π f) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.coimageImageComparison f) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.image.ι f) h)) = CategoryTheory.CategoryStruct.comp f h - CategoryTheory.Abelian.isLimitMapConeOfKernelForkOfι 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {D : Type u_1} [CategoryTheory.Category.{v_1, u_1} D] [CategoryTheory.Limits.HasZeroMorphisms D] {X Y : D} (i : X ⟶ Y) [CategoryTheory.Limits.HasCokernel i] (F : CategoryTheory.Functor D C) [F.PreservesZeroMorphisms] [CategoryTheory.Mono (F.map i)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair i 0) F] : CategoryTheory.Limits.IsLimit (F.mapCone (CategoryTheory.Limits.KernelFork.ofι i ⋯)) - CategoryTheory.Abelian.PreservesCoimage.iso 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (F.map f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : F.obj (CategoryTheory.Abelian.coimage f) ≅ CategoryTheory.Abelian.coimage (F.map f) - CategoryTheory.Abelian.PreservesImage.iso 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.HasCokernel (F.map f)] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] : F.obj (CategoryTheory.Abelian.image f) ≅ CategoryTheory.Abelian.image (F.map f) - CategoryTheory.Abelian.PreservesCoimage.factorThruCoimage_iso_hom 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (F.map f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesCoimage.iso F f).hom (CategoryTheory.Abelian.factorThruCoimage (F.map f)) = F.map (CategoryTheory.Abelian.factorThruCoimage f) - CategoryTheory.Abelian.PreservesCoimage.iso_inv_π 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (F.map f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.coimage.π (F.map f)) (CategoryTheory.Abelian.PreservesCoimage.iso F f).inv = F.map (CategoryTheory.Abelian.coimage.π f) - CategoryTheory.Abelian.PreservesImage.factorThruImage_iso_inv 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.HasCokernel (F.map f)] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.factorThruImage (F.map f)) (CategoryTheory.Abelian.PreservesImage.iso F f).inv = F.map (CategoryTheory.Abelian.factorThruImage f) - CategoryTheory.Abelian.PreservesImage.iso_hom_ι 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.HasCokernel (F.map f)] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesImage.iso F f).hom (CategoryTheory.Abelian.image.ι (F.map f)) = F.map (CategoryTheory.Abelian.image.ι f) - CategoryTheory.Abelian.PreservesCoimage.factorThruCoimage_iso_inv 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (F.map f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesCoimage.iso F f).inv (F.map (CategoryTheory.Abelian.factorThruCoimage f)) = CategoryTheory.Abelian.factorThruCoimage (F.map f) - CategoryTheory.Abelian.PreservesCoimage.iso_hom_π 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (F.map f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.coimage.π f)) (CategoryTheory.Abelian.PreservesCoimage.iso F f).hom = CategoryTheory.Abelian.coimage.π (F.map f) - CategoryTheory.Abelian.PreservesImage.factorThruImage_iso_hom 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.HasCokernel (F.map f)] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] : CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.factorThruImage f)) (CategoryTheory.Abelian.PreservesImage.iso F f).hom = CategoryTheory.Abelian.factorThruImage (F.map f) - CategoryTheory.Abelian.PreservesImage.iso_inv_ι 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.HasCokernel (F.map f)] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesImage.iso F f).inv (F.map (CategoryTheory.Abelian.image.ι f)) = CategoryTheory.Abelian.image.ι (F.map f) - CategoryTheory.Abelian.PreservesCoimage.factorThruCoimage_iso_hom_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (F.map f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] {Z : D} (h : F.obj Y ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesCoimage.iso F f).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.factorThruCoimage (F.map f)) h) = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.factorThruCoimage f)) h - CategoryTheory.Abelian.PreservesCoimage.iso_inv_π_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (F.map f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] {Z : D} (h : F.obj (CategoryTheory.Abelian.coimage f) ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.coimage.π (F.map f)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesCoimage.iso F f).inv h) = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.coimage.π f)) h - CategoryTheory.Abelian.PreservesImage.factorThruImage_iso_inv_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.HasCokernel (F.map f)] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] {Z : D} (h : F.obj (CategoryTheory.Abelian.image f) ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.factorThruImage (F.map f)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesImage.iso F f).inv h) = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.factorThruImage f)) h - CategoryTheory.Abelian.PreservesImage.iso_hom_ι_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.HasCokernel (F.map f)] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] {Z : D} (h : F.obj Y ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesImage.iso F f).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.image.ι (F.map f)) h) = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.image.ι f)) h - CategoryTheory.Abelian.PreservesCoimage.factorThruCoimage_iso_inv_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (F.map f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] {Z : D} (h : F.obj Y ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesCoimage.iso F f).inv (CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.factorThruCoimage f)) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.factorThruCoimage (F.map f)) h - CategoryTheory.Abelian.PreservesCoimage.iso_hom_π_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (F.map f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] {Z : D} (h : CategoryTheory.Abelian.coimage (F.map f) ⟶ Z) : CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.coimage.π f)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesCoimage.iso F f).hom h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.coimage.π (F.map f)) h - CategoryTheory.Abelian.PreservesImage.factorThruImage_iso_hom_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.HasCokernel (F.map f)] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] {Z : D} (h : CategoryTheory.Abelian.image (F.map f) ⟶ Z) : CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.factorThruImage f)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesImage.iso F f).hom h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.factorThruImage (F.map f)) h - CategoryTheory.Abelian.PreservesImage.iso_inv_ι_assoc 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.HasCokernel (F.map f)] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] {Z : D} (h : F.obj Y ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesImage.iso F f).inv (CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.image.ι f)) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.image.ι (F.map f)) h - CategoryTheory.Abelian.PreservesCoimageImageComparison.iso 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : CategoryTheory.Arrow.mk (F.map (CategoryTheory.Abelian.coimageImageComparison f)) ≅ CategoryTheory.Arrow.mk (CategoryTheory.Abelian.coimageImageComparison (F.map f)) - CategoryTheory.Abelian.PreservesCoimage.hom_coimageImageComparison 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.PreservesCoimage.iso F f).hom (CategoryTheory.Abelian.coimageImageComparison (F.map f)) = CategoryTheory.CategoryStruct.comp (F.map (CategoryTheory.Abelian.coimageImageComparison f)) (CategoryTheory.Abelian.PreservesImage.iso F f).hom - CategoryTheory.Abelian.PreservesCoimageImageComparison.iso_hom_left 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : (CategoryTheory.Abelian.PreservesCoimageImageComparison.iso F f).hom.left = (CategoryTheory.Abelian.PreservesCoimage.iso F f).hom - CategoryTheory.Abelian.PreservesCoimageImageComparison.iso_hom_right 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : (CategoryTheory.Abelian.PreservesCoimageImageComparison.iso F f).hom.right = (CategoryTheory.Abelian.PreservesImage.iso F f).hom - CategoryTheory.Abelian.PreservesCoimageImageComparison.iso_inv_left 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : (CategoryTheory.Abelian.PreservesCoimageImageComparison.iso F f).inv.left = (CategoryTheory.Abelian.PreservesCoimage.iso F f).inv - CategoryTheory.Abelian.PreservesCoimageImageComparison.iso_inv_right 📋 Mathlib.CategoryTheory.Limits.Preserves.Shapes.AbelianImages
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.Limits.HasZeroMorphisms C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms D] (F : CategoryTheory.Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) F] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.cokernel.π f) 0) F] [CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.kernel.ι f) 0) F] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π (F.map f))] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι (F.map f))] : (CategoryTheory.Abelian.PreservesCoimageImageComparison.iso F f).inv.right = (CategoryTheory.Abelian.PreservesImage.iso F f).inv - CategoryTheory.ShortComplex.HasLeftHomology.of_hasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasCokernel f] : { X₁ := X, X₂ := Y, X₃ := Z, f := f, g := 0, zero := ⋯ }.HasLeftHomology - CategoryTheory.ShortComplex.HasLeftHomology.hasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasLeftHomology] [CategoryTheory.Limits.HasKernel S.g] : CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯) - CategoryTheory.ShortComplex.HasLeftHomology.of_hasKernel_of_hasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {S : CategoryTheory.ShortComplex C} [CategoryTheory.Limits.HasKernel S.g] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯)] : S.HasLeftHomology - CategoryTheory.ShortComplex.LeftHomologyData.ofHasKernelOfHasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasKernel S.g] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯)] : S.LeftHomologyData - CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] (hg : S.g = 0) : S.LeftHomologyData - CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel_K 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] (hg : S.g = 0) : (CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel S hg).K = S.X₂ - CategoryTheory.ShortComplex.LeftHomologyData.ofHasKernelOfHasCokernel_K 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasKernel S.g] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯)] : (CategoryTheory.ShortComplex.LeftHomologyData.ofHasKernelOfHasCokernel S).K = CategoryTheory.Limits.kernel S.g - CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel_H 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] (hg : S.g = 0) : (CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel S hg).H = CategoryTheory.Limits.cokernel S.f - CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel_i 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] (hg : S.g = 0) : (CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel S hg).i = CategoryTheory.CategoryStruct.id S.X₂ - CategoryTheory.ShortComplex.LeftHomologyData.ofHasKernelOfHasCokernel_i 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasKernel S.g] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯)] : (CategoryTheory.ShortComplex.LeftHomologyData.ofHasKernelOfHasCokernel S).i = CategoryTheory.Limits.kernel.ι S.g - CategoryTheory.ShortComplex.leftHomologyIsoCokernelLift 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {S : CategoryTheory.ShortComplex C} [S.HasLeftHomology] [CategoryTheory.Limits.HasKernel S.g] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯)] : S.leftHomology ≅ CategoryTheory.Limits.cokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯) - CategoryTheory.ShortComplex.LeftHomologyData.ofHasKernelOfHasCokernel_H 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasKernel S.g] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯)] : (CategoryTheory.ShortComplex.LeftHomologyData.ofHasKernelOfHasCokernel S).H = CategoryTheory.Limits.cokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯) - CategoryTheory.ShortComplex.LeftHomologyData.ofHasKernelOfHasCokernel_π 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasKernel S.g] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯)] : (CategoryTheory.ShortComplex.LeftHomologyData.ofHasKernelOfHasCokernel S).π = CategoryTheory.Limits.cokernel.π (CategoryTheory.Limits.kernel.lift S.g S.f ⋯) - CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel_π 📋 Mathlib.Algebra.Homology.ShortComplex.LeftHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] (hg : S.g = 0) : (CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel S hg).π = CategoryTheory.Limits.cokernel.π S.f - CategoryTheory.ShortComplex.HasRightHomology.hasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasRightHomology] : CategoryTheory.Limits.HasCokernel S.f - CategoryTheory.ShortComplex.opcyclesIsoCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasRightHomology] [CategoryTheory.Limits.HasCokernel S.f] : S.opcycles ≅ CategoryTheory.Limits.cokernel S.f - CategoryTheory.ShortComplex.HasRightHomology.of_hasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasCokernel f] : { X₁ := X, X₂ := Y, X₃ := Z, f := f, g := 0, zero := ⋯ }.HasRightHomology - CategoryTheory.ShortComplex.HasRightHomology.hasKernel 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasRightHomology] [CategoryTheory.Limits.HasCokernel S.f] : CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯) - CategoryTheory.ShortComplex.HasRightHomology.of_hasCokernel_of_hasKernel 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {S : CategoryTheory.ShortComplex C} [CategoryTheory.Limits.HasCokernel S.f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯)] : S.HasRightHomology - CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernelOfHasKernel 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯)] : S.RightHomologyData - CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] (hg : S.g = 0) : S.RightHomologyData - CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernelOfHasKernel_Q 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯)] : (CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernelOfHasKernel S).Q = CategoryTheory.Limits.cokernel S.f - CategoryTheory.ShortComplex.opcyclesIsoCokernel_inv 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasRightHomology] [CategoryTheory.Limits.HasCokernel S.f] : S.opcyclesIsoCokernel.inv = CategoryTheory.Limits.cokernel.desc S.f S.pOpcycles ⋯ - CategoryTheory.ShortComplex.opcyclesIsoCokernel_hom 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasRightHomology] [CategoryTheory.Limits.HasCokernel S.f] : S.opcyclesIsoCokernel.hom = S.descOpcycles (CategoryTheory.Limits.cokernel.π S.f) ⋯ - CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernelOfHasKernel_p 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯)] : (CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernelOfHasKernel S).p = CategoryTheory.Limits.cokernel.π S.f - CategoryTheory.ShortComplex.rightHomologyIsoKernelDesc 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasRightHomology] [CategoryTheory.Limits.HasCokernel S.f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯)] : S.rightHomology ≅ CategoryTheory.Limits.kernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯) - CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernelOfHasKernel_H 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯)] : (CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernelOfHasKernel S).H = CategoryTheory.Limits.kernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯) - CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernelOfHasKernel_ι 📋 Mathlib.Algebra.Homology.ShortComplex.RightHomology
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [CategoryTheory.Limits.HasCokernel S.f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯)] : (CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernelOfHasKernel S).ι = CategoryTheory.Limits.kernel.ι (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯) - CategoryTheory.ShortComplex.hasHomology_of_hasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.Homology
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) (Z : C) [CategoryTheory.Limits.HasCokernel f] : { X₁ := X, X₂ := Y, X₃ := Z, f := f, g := 0, zero := ⋯ }.HasHomology - CategoryTheory.ShortComplex.HomologyData.ofHasCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.Homology
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) (hg : S.g = 0) [CategoryTheory.Limits.HasCokernel S.f] : S.HomologyData - CategoryTheory.ShortComplex.HomologyData.ofHasCokernel_left 📋 Mathlib.Algebra.Homology.ShortComplex.Homology
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) (hg : S.g = 0) [CategoryTheory.Limits.HasCokernel S.f] : (CategoryTheory.ShortComplex.HomologyData.ofHasCokernel S hg).left = CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel S hg - CategoryTheory.ShortComplex.HomologyData.ofHasCokernel_right 📋 Mathlib.Algebra.Homology.ShortComplex.Homology
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) (hg : S.g = 0) [CategoryTheory.Limits.HasCokernel S.f] : (CategoryTheory.ShortComplex.HomologyData.ofHasCokernel S hg).right = CategoryTheory.ShortComplex.RightHomologyData.ofHasCokernel S hg - CategoryTheory.ShortComplex.HomologyData.ofHasCokernel_iso 📋 Mathlib.Algebra.Homology.ShortComplex.Homology
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) (hg : S.g = 0) [CategoryTheory.Limits.HasCokernel S.f] : (CategoryTheory.ShortComplex.HomologyData.ofHasCokernel S hg).iso = CategoryTheory.Iso.refl (CategoryTheory.ShortComplex.LeftHomologyData.ofHasCokernel S hg).H - CategoryTheory.ShortComplex.homologyIsoCokernelLift 📋 Mathlib.Algebra.Homology.ShortComplex.Homology
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasHomology] [CategoryTheory.Limits.HasKernel S.g] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯)] : S.homology ≅ CategoryTheory.Limits.cokernel (CategoryTheory.Limits.kernel.lift S.g S.f ⋯) - CategoryTheory.ShortComplex.homologyIsoKernelDesc 📋 Mathlib.Algebra.Homology.ShortComplex.Homology
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasHomology] [CategoryTheory.Limits.HasCokernel S.f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯)] : S.homology ≅ CategoryTheory.Limits.kernel (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯) - CategoryTheory.Injective.syzygies 📋 Mathlib.CategoryTheory.Preadditive.Injective.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.EnoughInjectives C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] : C - CategoryTheory.Injective.instSyzygies 📋 Mathlib.CategoryTheory.Preadditive.Injective.Basic
{C : Type u_2} [CategoryTheory.Category.{u_1, u_2} C] [CategoryTheory.EnoughInjectives C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] : CategoryTheory.Injective (CategoryTheory.Injective.syzygies f) - CategoryTheory.Injective.d 📋 Mathlib.CategoryTheory.Preadditive.Injective.Basic
{C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.EnoughInjectives C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] : Y ⟶ CategoryTheory.Injective.syzygies f - CategoryTheory.ShortComplex.Exact.mono_cokernelDesc 📋 Mathlib.Algebra.Homology.ShortComplex.Exact
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Preadditive C] {S : CategoryTheory.ShortComplex C} [S.HasHomology] [CategoryTheory.Limits.HasCokernel S.f] (hS : S.Exact) : CategoryTheory.Mono (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯) - CategoryTheory.ShortComplex.exact_iff_mono_cokernel_desc 📋 Mathlib.Algebra.Homology.ShortComplex.Exact
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Preadditive C] (S : CategoryTheory.ShortComplex C) [S.HasHomology] [CategoryTheory.Limits.HasCokernel S.f] : S.Exact ↔ CategoryTheory.Mono (CategoryTheory.Limits.cokernel.desc S.f S.g ⋯) - CategoryTheory.ShortComplex.exact_iff_kernel_ι_comp_cokernel_π_zero 📋 Mathlib.Algebra.Homology.ShortComplex.Exact
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (S : CategoryTheory.ShortComplex C) [S.HasHomology] [CategoryTheory.Limits.HasKernel S.g] [CategoryTheory.Limits.HasCokernel S.f] : S.Exact ↔ CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι S.g) (CategoryTheory.Limits.cokernel.π S.f) = 0 - ModuleCat.cokernel_π_imageSubobject_ext 📋 Mathlib.Algebra.Category.ModuleCat.Subobject
{R : Type u} [Ring R] {L M N : ModuleCat R} (f : L ⟶ M) [CategoryTheory.Limits.HasImage f] (g : CategoryTheory.Subobject.underlying.obj (CategoryTheory.Limits.imageSubobject f) ⟶ N) [CategoryTheory.Limits.HasCokernel g] {x y : ↑N} (l : ↑L) (w : x = y + (CategoryTheory.ConcreteCategory.hom g) ((CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.factorThruImageSubobject f)) l)) : (CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.cokernel.π g)) x = (CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.cokernel.π g)) y - CategoryTheory.Limits.Concrete.cokernel_funext 📋 Mathlib.CategoryTheory.Limits.Shapes.ConcreteCategory
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {FC : C → C → Type u_2} {CC : C → Type u_3} [(X Y : C) → FunLike (FC X Y) (CC X) (CC Y)] [CategoryTheory.ConcreteCategory C FC] {M N K : C} {f : M ⟶ N} [CategoryTheory.Limits.HasCokernel f] {g h : CategoryTheory.Limits.cokernel f ⟶ K} (w : ∀ (n : CategoryTheory.ToType N), (CategoryTheory.ConcreteCategory.hom g) ((CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.cokernel.π f)) n) = (CategoryTheory.ConcreteCategory.hom h) ((CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.cokernel.π f)) n)) : g = h - CategoryTheory.Limits.instHasCokernelMap'Id 📋 Mathlib.CategoryTheory.Limits.Preserves.SigmaConst
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (R : C) {α : Type u_1} {β : Type u_2} (f : α → β) [CategoryTheory.Limits.HasCoproduct fun x => R] [CategoryTheory.Limits.HasCoproduct fun x => R] [CategoryTheory.Limits.HasCoproduct fun x => R] : CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.Sigma.map' f fun x => CategoryTheory.CategoryStruct.id R) - CategoryTheory.Limits.instHasCokernelMapObjFunctorTypeSigmaConst 📋 Mathlib.CategoryTheory.Limits.Preserves.SigmaConst
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (R : C) [CategoryTheory.Limits.HasCoproducts C] {α β : Type w} (f : α ⟶ β) : CategoryTheory.Limits.HasCokernel ((CategoryTheory.Limits.sigmaConst.obj R).map f) - CategoryTheory.ComposableArrows.IsComplex.cokerToKer 📋 Mathlib.Algebra.Homology.ExactSequenceFour
{C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {n : ℕ} {S : CategoryTheory.ComposableArrows C (n + 3)} (hS : S.IsComplex) (k : ℕ) (hk : k ≤ n := by lia) [CategoryTheory.Limits.HasCokernel (S.map' k (k + 1) ⋯ ⋯)] [CategoryTheory.Limits.HasKernel (S.map' (k + 2) (k + 3) ⋯ ⋯)] : CategoryTheory.Limits.cokernel (S.map' k (k + 1) ⋯ ⋯) ⟶ CategoryTheory.Limits.kernel (S.map' (k + 2) (k + 3) ⋯ ⋯) - CategoryTheory.ComposableArrows.Exact.cokerIsoKer 📋 Mathlib.Algebra.Homology.ExactSequenceFour
{C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] [CategoryTheory.Balanced C] {n : ℕ} {S : CategoryTheory.ComposableArrows C (n + 3)} (hS : S.Exact) (k : ℕ) (hk : k ≤ n := by lia) [CategoryTheory.Limits.HasCokernel (S.map' k (k + 1) ⋯ ⋯)] [CategoryTheory.Limits.HasKernel (S.map' (k + 2) (k + 3) ⋯ ⋯)] : CategoryTheory.Limits.cokernel (S.map' k (k + 1) ⋯ ⋯) ≅ CategoryTheory.Limits.kernel (S.map' (k + 2) (k + 3) ⋯ ⋯) - CategoryTheory.ComposableArrows.IsComplex.cokerToKer_fac 📋 Mathlib.Algebra.Homology.ExactSequenceFour
{C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {n : ℕ} {S : CategoryTheory.ComposableArrows C (n + 3)} (hS : S.IsComplex) (k : ℕ) (hk : k ≤ n := by lia) [CategoryTheory.Limits.HasCokernel (S.map' k (k + 1) ⋯ ⋯)] [CategoryTheory.Limits.HasKernel (S.map' (k + 2) (k + 3) ⋯ ⋯)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π (S.map' k (k + 1) ⋯ ⋯)) (CategoryTheory.CategoryStruct.comp (hS.cokerToKer k hk) (CategoryTheory.Limits.kernel.ι (S.map' (k + 2) (k + 3) ⋯ ⋯))) = S.map' (k + 1) (k + 2) ⋯ ⋯ - CategoryTheory.ComposableArrows.IsComplex.cokerToKer_fac_assoc 📋 Mathlib.Algebra.Homology.ExactSequenceFour
{C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {n : ℕ} {S : CategoryTheory.ComposableArrows C (n + 3)} (hS : S.IsComplex) (k : ℕ) (hk : k ≤ n := by lia) [CategoryTheory.Limits.HasCokernel (S.map' k (k + 1) ⋯ ⋯)] [CategoryTheory.Limits.HasKernel (S.map' (k + 2) (k + 3) ⋯ ⋯)] {Z : C} (h : S.obj ⟨k + 2, ⋯⟩ ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π (S.map' k (k + 1) ⋯ ⋯)) (CategoryTheory.CategoryStruct.comp (hS.cokerToKer k hk) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι (S.map' (k + 2) (k + 3) ⋯ ⋯)) h)) = CategoryTheory.CategoryStruct.comp (S.map' (k + 1) (k + 2) ⋯ ⋯) h - CategoryTheory.ComposableArrows.Exact.cokerIsoKer_hom_fac 📋 Mathlib.Algebra.Homology.ExactSequenceFour
{C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] [CategoryTheory.Balanced C] {n : ℕ} {S : CategoryTheory.ComposableArrows C (n + 3)} (hS : S.Exact) (k : ℕ) (hk : k ≤ n := by lia) [CategoryTheory.Limits.HasCokernel (S.map' k (k + 1) ⋯ ⋯)] [CategoryTheory.Limits.HasKernel (S.map' (k + 2) (k + 3) ⋯ ⋯)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π (S.map' k (k + 1) ⋯ ⋯)) (CategoryTheory.CategoryStruct.comp (hS.cokerIsoKer k ⋯).hom (CategoryTheory.Limits.kernel.ι (S.map' (k + 2) (k + 3) ⋯ ⋯))) = S.map' (k + 1) (k + 2) ⋯ ⋯ - CategoryTheory.ComposableArrows.Exact.cokerIsoKer_hom_fac_assoc 📋 Mathlib.Algebra.Homology.ExactSequenceFour
{C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] [CategoryTheory.Balanced C] {n : ℕ} {S : CategoryTheory.ComposableArrows C (n + 3)} (hS : S.Exact) (k : ℕ) (hk : k ≤ n := by lia) [CategoryTheory.Limits.HasCokernel (S.map' k (k + 1) ⋯ ⋯)] [CategoryTheory.Limits.HasKernel (S.map' (k + 2) (k + 3) ⋯ ⋯)] {Z : C} (h : S.obj ⟨k + 2, ⋯⟩ ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π (S.map' k (k + 1) ⋯ ⋯)) (CategoryTheory.CategoryStruct.comp (hS.cokerIsoKer k ⋯).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι (S.map' (k + 2) (k + 3) ⋯ ⋯)) h)) = CategoryTheory.CategoryStruct.comp (S.map' (k + 1) (k + 2) ⋯ ⋯) h - HomologicalComplex.hasCokernel_of_hasCokernel_f 📋 Mathlib.Algebra.Homology.HomologicalComplexKernels
{ι : Type u_1} {C : Type u_2} [CategoryTheory.Category.{v_1, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] {c : ComplexShape ι} {K L : HomologicalComplex C c} (f : K ⟶ L) [∀ (i : ι), CategoryTheory.Limits.HasCokernel (f.f i)] : CategoryTheory.Limits.HasCokernel f - HomologicalComplex.eval_preservesColimit_of_hasCokernel_f 📋 Mathlib.Algebra.Homology.HomologicalComplexKernels
{ι : Type u_1} {C : Type u_2} [CategoryTheory.Category.{v_1, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] {c : ComplexShape ι} {K L : HomologicalComplex C c} (f : K ⟶ L) [∀ (i : ι), CategoryTheory.Limits.HasCokernel (f.f i)] (i : ι) : CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) (HomologicalComplex.eval C c i) - CategoryTheory.Limits.hasCokernel_of_hasCokernel_app 📋 Mathlib.CategoryTheory.Limits.FunctorCategory.Shapes.Kernels
{J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{v_1, u_1} J] [CategoryTheory.Category.{v_2, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] {F₁ F₂ : CategoryTheory.Functor J C} (f : F₁ ⟶ F₂) [∀ (j : J), CategoryTheory.Limits.HasCokernel (f.app j)] : CategoryTheory.Limits.HasCokernel f - CategoryTheory.Limits.evaluation_preservesColimit_of_hasCokernel_app 📋 Mathlib.CategoryTheory.Limits.FunctorCategory.Shapes.Kernels
{J : Type u_1} {C : Type u_2} [CategoryTheory.Category.{v_1, u_1} J] [CategoryTheory.Category.{v_2, u_2} C] [CategoryTheory.Limits.HasZeroMorphisms C] {F₁ F₂ : CategoryTheory.Functor J C} (f : F₁ ⟶ F₂) [∀ (j : J), CategoryTheory.Limits.HasCokernel (f.app j)] (j : J) : CategoryTheory.Limits.PreservesColimit (CategoryTheory.Limits.parallelPair f 0) ((CategoryTheory.evaluation J C).obj j) - SSetPair.instHasCokernelFunctorChainComplexNatChainComplexFunctorLeftToRight 📋 Mathlib.AlgebraicTopology.SimplicialSet.Homology.Relative
(C : Type u_1) [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasCoproducts C] [CategoryTheory.Preadditive C] : CategoryTheory.Limits.HasCokernel (SSetPair.chainComplexFunctorLeftToRight C) - SSetPair.instHasCokernelFNatChainComplexMapHomSSet 📋 Mathlib.AlgebraicTopology.SimplicialSet.Homology.Relative
(C : Type u_1) [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasCoproducts C] [CategoryTheory.Preadditive C] (R : C) (P : SSetPair) (n : ℕ) : CategoryTheory.Limits.HasCokernel ((SSet.chainComplexMap P.hom R).f n) - SSetPair.instHasCokernelFunctorChainComplexNatAppChainComplexFunctorLeftToRight 📋 Mathlib.AlgebraicTopology.SimplicialSet.Homology.Relative
(C : Type u_1) [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasCoproducts C] [CategoryTheory.Preadditive C] (R : C) : CategoryTheory.Limits.HasCokernel ((SSetPair.chainComplexFunctorLeftToRight C).app R) - SSetPair.instHasCokernelChainComplexNatAppFunctorChainComplexFunctorLeftToRight 📋 Mathlib.AlgebraicTopology.SimplicialSet.Homology.Relative
(C : Type u_1) [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasCoproducts C] [CategoryTheory.Preadditive C] (R : C) (P : SSetPair) : CategoryTheory.Limits.HasCokernel (((SSetPair.chainComplexFunctorLeftToRight C).app R).app P) - SSetPair.instHasCokernelFNatAppChainComplexFunctorChainComplexFunctorLeftToRight 📋 Mathlib.AlgebraicTopology.SimplicialSet.Homology.Relative
(C : Type u_1) [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasCoproducts C] [CategoryTheory.Preadditive C] (R : C) (P : SSetPair) (n : ℕ) : CategoryTheory.Limits.HasCokernel ((((SSetPair.chainComplexFunctorLeftToRight C).app R).app P).f n) - CategoryTheory.Limits.isIso_cokernel_map_of_isPushout 📋 Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Kernels
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X₁ X₂ X₃ X₄ : C} {t : X₁ ⟶ X₂} {l : X₁ ⟶ X₃} {r : X₂ ⟶ X₄} {b : X₃ ⟶ X₄} [CategoryTheory.Limits.HasCokernel t] [CategoryTheory.Limits.HasCokernel b] (sq : CategoryTheory.IsPushout t l r b) : CategoryTheory.IsIso (CategoryTheory.Limits.cokernel.map t b l r ⋯) - CategoryTheory.MorphismProperty.nonempty_cokernels 📋 Mathlib.CategoryTheory.ObjectProperty.Kernels
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (W : CategoryTheory.MorphismProperty C) {X₁ X₂ : C} (f : X₁ ⟶ X₂) (hf : W f) [CategoryTheory.Limits.HasCokernel f] : W.cokernels.Nonempty - CategoryTheory.ObjectProperty.prop_cokernel 📋 Mathlib.CategoryTheory.ObjectProperty.Kernels
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (P : CategoryTheory.ObjectProperty C) [P.IsClosedUnderCokernels] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] (hX : P X) (hY : P Y) : P (CategoryTheory.Limits.cokernel f) - CategoryTheory.ObjectProperty.createsCokernels 📋 Mathlib.CategoryTheory.ObjectProperty.Kernels
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (P : CategoryTheory.ObjectProperty C) [P.IsClosedUnderCokernels] {X Y : P.FullSubcategory} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f.hom] : CategoryTheory.CreatesColimit (CategoryTheory.Limits.parallelPair f 0) P.ι - CategoryTheory.ObjectProperty.hasColimit_parallelPair_comp_ι 📋 Mathlib.CategoryTheory.ObjectProperty.Kernels
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroMorphisms C] (P : CategoryTheory.ObjectProperty C) {X Y : P.FullSubcategory} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f.hom] : CategoryTheory.Limits.HasColimit ((CategoryTheory.Limits.parallelPair f 0).comp P.ι) - CategoryTheory.Triangulated.AbelianSubcategory.hasCokernel_of_admissibleMorphism 📋 Mathlib.CategoryTheory.Triangulated.TStructure.AbelianSubcategory
{C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Preadditive C] [CategoryTheory.HasShift C ℤ] [∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive] [CategoryTheory.Pretriangulated C] [CategoryTheory.Category.{v_2, u_2} A] {ι : CategoryTheory.Functor A C} (hι : ∀ ⦃X Y : A⦄ ⦃n : ℤ⦄ (f : ι.obj X ⟶ (CategoryTheory.shiftFunctor C n).obj (ι.obj Y)), n < 0 → f = 0) [CategoryTheory.Preadditive A] [ι.Full] [ι.Faithful] {X₁ X₂ : A} (f₁ : X₁ ⟶ X₂) (hf₁ : CategoryTheory.Triangulated.AbelianSubcategory.admissibleMorphism ι f₁) : CategoryTheory.Limits.HasCokernel f₁ - CategoryTheory.Triangulated.AbelianSubcategory.hasCokernel 📋 Mathlib.CategoryTheory.Triangulated.TStructure.AbelianSubcategory
{C : Type u_1} {A : Type u_2} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Preadditive C] [CategoryTheory.HasShift C ℤ] [∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive] [CategoryTheory.Pretriangulated C] [CategoryTheory.Category.{v_2, u_2} A] {ι : CategoryTheory.Functor A C} (hι : ∀ ⦃X Y : A⦄ ⦃n : ℤ⦄ (f : ι.obj X ⟶ (CategoryTheory.shiftFunctor C n).obj (ι.obj Y)), n < 0 → f = 0) {X₁ X₂ : A} {f₁ : X₁ ⟶ X₂} {X₃ : C} {f₂ : ι.obj X₂ ⟶ X₃} {f₃ : X₃ ⟶ (CategoryTheory.shiftFunctor C 1).obj (ι.obj X₁)} (hT : CategoryTheory.Pretriangulated.Triangle.mk (ι.map f₁) f₂ f₃ ∈ CategoryTheory.Pretriangulated.distinguishedTriangles) {K Q : A} {α : (CategoryTheory.shiftFunctor C 1).obj (ι.obj K) ⟶ X₃} {β : X₃ ⟶ ι.obj Q} {γ : ι.obj Q ⟶ (CategoryTheory.shiftFunctor C 1).obj ((CategoryTheory.shiftFunctor C 1).obj (ι.obj K))} (hT' : CategoryTheory.Pretriangulated.Triangle.mk α β γ ∈ CategoryTheory.Pretriangulated.distinguishedTriangles) [ι.Full] [CategoryTheory.Preadditive A] [ι.Faithful] : CategoryTheory.Limits.HasCokernel f₁
About
Loogle searches Lean and Mathlib definitions and theorems.
You can use Loogle from within the Lean4 VSCode language extension
using the Loogle command from the command palette. You can also try the
#loogle command from LeanSearchClient,
the CLI version, the Loogle
VS Code extension, the lean.nvim
integration or the Zulip bot.
Usage
Loogle finds definitions and lemmas in various ways:
By constant:
🔍Real.sin
finds all lemmas whose statement somehow mentions the sine function.By lemma name substring:
🔍"differ"
finds all lemmas that have"differ"somewhere in their lemma name.By subexpression:
🔍_ * (_ ^ _)
finds all lemmas whose statements somewhere include a product where the second argument is raised to some power.The pattern can also be non-linear, as in
🔍Real.sqrt ?a * Real.sqrt ?aIf the pattern has parameters, they are matched in any order. Both of these will find
List.map:
🔍(?a -> ?b) -> List ?a -> List ?b
🔍List ?a -> (?a -> ?b) -> List ?bBy main conclusion:
🔍|- tsum _ = _ * tsum _
finds all lemmas where the conclusion (the subexpression to the right of all→and∀) has the given shape.As before, if the pattern has parameters, they are matched against the hypotheses of the lemma in any order; for example,
🔍|- _ < _ → tsum _ < tsum _
will findtsum_lt_tsumeven though the hypothesisf i < g iis not the last.You can filter for definitions vs theorems: Using
⊢ (_ : Type _)finds all definitions which provide data while⊢ (_ : Prop)finds all theorems (and definitions of proofs).
If you pass more than one such search filter, separated by commas
Loogle will return lemmas which match all of them. The
search
🔍 Real.sin, "two", tsum, _ * _, _ ^ _, |- _ < _ → _
would find all lemmas which mention the constants Real.sin
and tsum, have "two" as a substring of the
lemma name, include a product and a power somewhere in the type,
and have a hypothesis of the form _ < _ (if
there were any such lemmas). Metavariables (?a) are
assigned independently in each filter.
The #lucky button will directly send you to the
documentation of the first hit.
Source code
You can find the source code for this service at https://github.com/nomeata/loogle. The https://loogle.lean-lang.org/ service is provided by the Lean FRO. Please review the Lean FRO Terms of Use and Privacy Policy.
This is Loogle revision 9f11169 serving mathlib revision 69fae59