Loogle!
Result
Found 333 declarations mentioning CategoryTheory.Limits.kernel. Of these, only the first 200 are shown.
- CategoryTheory.Limits.kernel 📋 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.HasKernel f] : C - CategoryTheory.Limits.kernel.ι 📋 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.HasKernel f] : CategoryTheory.Limits.kernel f ⟶ X - CategoryTheory.Limits.isZero_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.Mono f] [CategoryTheory.Limits.HasKernel f] : CategoryTheory.Limits.IsZero (CategoryTheory.Limits.kernel f) - CategoryTheory.Limits.ker_obj 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
(C : Type u) [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] (f : CategoryTheory.Arrow C) : (CategoryTheory.Limits.ker C).obj f = CategoryTheory.Limits.kernel f.hom - CategoryTheory.Limits.kernel.ofMono 📋 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.Mono f] : CategoryTheory.Limits.kernel f ≅ 0 - CategoryTheory.Limits.kernelIsoOfEq 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) : CategoryTheory.Limits.kernel f ≅ CategoryTheory.Limits.kernel g - CategoryTheory.Limits.kernel.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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) : CategoryTheory.Limits.kernel f ≅ CategoryTheory.Limits.kernel g - CategoryTheory.Limits.kernelZeroIsoSource 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} : CategoryTheory.Limits.kernel 0 ≅ X - CategoryTheory.Limits.kernelCompMono 📋 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.HasKernel f] [CategoryTheory.Mono g] : CategoryTheory.Limits.kernel (CategoryTheory.CategoryStruct.comp f g) ≅ CategoryTheory.Limits.kernel f - CategoryTheory.Limits.kernelIsIsoComp 📋 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.IsIso f] [CategoryTheory.Limits.HasKernel g] : CategoryTheory.Limits.kernel (CategoryTheory.CategoryStruct.comp f g) ≅ CategoryTheory.Limits.kernel g - CategoryTheory.Limits.kernelIsoOfEq_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.HasKernel f] {h : f = f} : CategoryTheory.Limits.kernelIsoOfEq h = CategoryTheory.Iso.refl (CategoryTheory.Limits.kernel f) - CategoryTheory.Limits.kernelFactorThruImage 📋 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.HasKernel f] [CategoryTheory.Limits.HasImage f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.factorThruImage f)] : CategoryTheory.Limits.kernel (CategoryTheory.Limits.factorThruImage f) ≅ CategoryTheory.Limits.kernel f - CategoryTheory.Limits.eq_zero_of_epi_kernel 📋 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.HasKernel f] [CategoryTheory.Epi (CategoryTheory.Limits.kernel.ι f)] : f = 0 - CategoryTheory.Limits.kernel.ι_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.HasKernel f] (eq : f = 0) : CategoryTheory.IsIso (CategoryTheory.Limits.kernel.ι f) - CategoryTheory.Limits.kernel_not_epi_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.HasKernel f] (w : f ≠ 0) : ¬CategoryTheory.Epi (CategoryTheory.Limits.kernel.ι f) - CategoryTheory.Limits.kernel_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.HasKernel f] (w : f ≠ 0) : CategoryTheory.IsIso (CategoryTheory.Limits.kernel.ι f) → False - CategoryTheory.Limits.ker.ι_app 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
(C : Type u) [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] (f : CategoryTheory.Arrow C) : (CategoryTheory.Limits.ker.ι C).app f = CategoryTheory.Limits.kernel.ι f.hom - CategoryTheory.Limits.kernel.lift 📋 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.HasKernel f] {W : C} (k : W ⟶ X) (h : CategoryTheory.CategoryStruct.comp k f = 0) : W ⟶ CategoryTheory.Limits.kernel 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.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.Mono f] : CategoryTheory.Limits.kernel.ι f = 0 - CategoryTheory.Limits.kernel.lift_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.HasKernel f] {W : C} (k : W ⟶ X) (h : CategoryTheory.CategoryStruct.comp k f = 0) [CategoryTheory.Mono k] : CategoryTheory.Mono (CategoryTheory.Limits.kernel.lift f k h) - CategoryTheory.Limits.kernel.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.HasKernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasKernel f'] (p : X ≅ X') (q : Y ≅ Y') (w : CategoryTheory.CategoryStruct.comp f q.hom = CategoryTheory.CategoryStruct.comp p.hom f') : CategoryTheory.Limits.kernel f ≅ CategoryTheory.Limits.kernel f' - CategoryTheory.Limits.kernel.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.HasKernel f] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) f = 0 - CategoryTheory.Limits.kernel.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.HasKernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasKernel f'] (p : X ⟶ X') (q : Y ⟶ Y') (w : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p f') : CategoryTheory.Limits.kernel f ⟶ CategoryTheory.Limits.kernel f' - CategoryTheory.Limits.kernelComparison 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] : G.obj (CategoryTheory.Limits.kernel f) ⟶ CategoryTheory.Limits.kernel (G.map f) - CategoryTheory.Limits.kernel.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.HasKernel f] (q : Y ⟶ Y) (w : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.id X) f) : CategoryTheory.Limits.kernel.map f f (CategoryTheory.CategoryStruct.id X) q w = CategoryTheory.CategoryStruct.id (CategoryTheory.Limits.kernel f) - CategoryTheory.Limits.kernel.lift_ι 📋 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.HasKernel f] {W : C} (k : W ⟶ X) (h : CategoryTheory.CategoryStruct.comp k f = 0) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.lift f k h) (CategoryTheory.Limits.kernel.ι f) = k - CategoryTheory.Limits.instIsIsoMapOfMono 📋 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.HasKernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasKernel f'] (p : X ⟶ X') (q : Y ⟶ Y') (w : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p f') [CategoryTheory.IsIso p] [CategoryTheory.Mono q] : CategoryTheory.IsIso (CategoryTheory.Limits.kernel.map f f' p q w) - CategoryTheory.Limits.kernelIsoOfEq_hom_comp_ι 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelIsoOfEq h).hom (CategoryTheory.Limits.kernel.ι g) = CategoryTheory.Limits.kernel.ι f - CategoryTheory.Limits.kernelIsoOfEq_inv_comp_ι 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelIsoOfEq h).inv (CategoryTheory.Limits.kernel.ι f) = CategoryTheory.Limits.kernel.ι g - CategoryTheory.Limits.kernel.ι_zero_isIso 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} : CategoryTheory.IsIso (CategoryTheory.Limits.kernel.ι 0) - CategoryTheory.Limits.kernel.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.HasKernel f] {Z : C} (h : Y ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) (CategoryTheory.CategoryStruct.comp f h) = CategoryTheory.CategoryStruct.comp 0 h - CategoryTheory.Limits.kernel.lift' 📋 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.HasKernel f] {W : C} (k : W ⟶ X) (h : CategoryTheory.CategoryStruct.comp k f = 0) : { l // CategoryTheory.CategoryStruct.comp l (CategoryTheory.Limits.kernel.ι f) = k } - CategoryTheory.Limits.kernel.isoKernel 📋 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.HasKernel f] {Z : C} (l : Z ⟶ X) (i : Z ≅ CategoryTheory.Limits.kernel f) (h : CategoryTheory.CategoryStruct.comp i.hom (CategoryTheory.Limits.kernel.ι f) = l) : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι l ⋯) - CategoryTheory.Limits.MonoFactorisation.kernel_ι_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.HasKernel f] (F : CategoryTheory.Limits.MonoFactorisation f) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) F.e = 0 - CategoryTheory.Limits.kernel.lift_ι_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.HasKernel f] {W : C} (k : W ⟶ X) (h : CategoryTheory.CategoryStruct.comp k f = 0) {Z : C} (h✝ : X ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.lift f k h) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) h✝) = CategoryTheory.CategoryStruct.comp k h✝ - CategoryTheory.Limits.kernelFactorThruImage_inv_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.HasKernel f] [CategoryTheory.Limits.HasImage f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.factorThruImage f)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelFactorThruImage f).inv (CategoryTheory.Limits.kernel.ι (CategoryTheory.Limits.factorThruImage f)) = CategoryTheory.Limits.kernel.ι f - CategoryTheory.Limits.kernelIsoOfEq_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.HasKernel f] [CategoryTheory.Limits.HasKernel g] [CategoryTheory.Limits.HasKernel h] (w₁ : f = g) (w₂ : g = h) : CategoryTheory.Limits.kernelIsoOfEq w₁ ≪≫ CategoryTheory.Limits.kernelIsoOfEq w₂ = CategoryTheory.Limits.kernelIsoOfEq ⋯ - CategoryTheory.Limits.kernel.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.HasKernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasKernel f'] (p : X ≅ X') (q : Y ≅ Y') (w : CategoryTheory.CategoryStruct.comp f q.hom = CategoryTheory.CategoryStruct.comp p.hom f') : (CategoryTheory.Limits.kernel.mapIso f f' p q w).hom = CategoryTheory.Limits.kernel.map f f' p.hom q.hom w - CategoryTheory.Limits.kernelIsoOfEq_hom_comp_ι_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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) {Z : C} (h✝ : X ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelIsoOfEq h).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι g) h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) h✝ - CategoryTheory.Limits.kernelIsoOfEq_inv_comp_ι_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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) {Z : C} (h✝ : X ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelIsoOfEq h).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι g) h✝ - CategoryTheory.Limits.kernelFactorThruImage_hom_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.HasKernel f] [CategoryTheory.Limits.HasImage f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.factorThruImage f)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelFactorThruImage f).hom (CategoryTheory.Limits.kernel.ι f) = CategoryTheory.Limits.kernel.ι (CategoryTheory.Limits.factorThruImage f) - CategoryTheory.Limits.kernelCompMono_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.HasKernel f] [CategoryTheory.Mono g] : (CategoryTheory.Limits.kernelCompMono f g).inv = CategoryTheory.Limits.kernel.lift (CategoryTheory.CategoryStruct.comp f g) (CategoryTheory.Limits.kernel.ι f) ⋯ - CategoryTheory.Limits.kernel.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.HasKernel f] {X' Y' : C} (f' : X' ⟶ Y') [CategoryTheory.Limits.HasKernel f'] (p : X ≅ X') (q : Y ≅ Y') (w : CategoryTheory.CategoryStruct.comp f q.hom = CategoryTheory.CategoryStruct.comp p.hom f') : (CategoryTheory.Limits.kernel.mapIso f f' p q w).inv = CategoryTheory.Limits.kernel.map f' f p.inv q.inv ⋯ - CategoryTheory.Limits.kernel.lift_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.HasKernel f] {W : C} {h : CategoryTheory.CategoryStruct.comp 0 f = 0} : CategoryTheory.Limits.kernel.lift f 0 h = 0 - CategoryTheory.Limits.kernelCompMono_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.HasKernel f] [CategoryTheory.Mono g] : (CategoryTheory.Limits.kernelCompMono f g).hom = CategoryTheory.Limits.kernel.lift f (CategoryTheory.Limits.kernel.ι (CategoryTheory.CategoryStruct.comp f g)) ⋯ - CategoryTheory.Limits.kernelIsIsoComp_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.IsIso f] [CategoryTheory.Limits.HasKernel g] : (CategoryTheory.Limits.kernelIsIsoComp f g).inv = CategoryTheory.Limits.kernel.lift (CategoryTheory.CategoryStruct.comp f g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι g) (CategoryTheory.inv f)) ⋯ - CategoryTheory.Limits.lift_comp_kernelIsoOfEq_hom 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) (e : Z ⟶ X) (he : CategoryTheory.CategoryStruct.comp e f = 0) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.lift f e he) (CategoryTheory.Limits.kernelIsoOfEq h).hom = CategoryTheory.Limits.kernel.lift g e ⋯ - CategoryTheory.Limits.lift_comp_kernelIsoOfEq_inv 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) (e : Z ⟶ X) (he : CategoryTheory.CategoryStruct.comp e g = 0) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.lift g e he) (CategoryTheory.Limits.kernelIsoOfEq h).inv = CategoryTheory.Limits.kernel.lift f e ⋯ - CategoryTheory.Limits.ker_map 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
(C : Type u) [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] {f g : CategoryTheory.Arrow C} (u : f ⟶ g) : (CategoryTheory.Limits.ker C).map u = CategoryTheory.Limits.kernel.lift g.hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f.hom) (CategoryTheory.Arrow.Hom.left u)) ⋯ - CategoryTheory.Limits.kernelComparison_comp_ι 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelComparison f G) (CategoryTheory.Limits.kernel.ι (G.map f)) = G.map (CategoryTheory.Limits.kernel.ι f) - CategoryTheory.Limits.kernelZeroIsoSource_hom 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} : CategoryTheory.Limits.kernelZeroIsoSource.hom = CategoryTheory.Limits.kernel.ι 0 - CategoryTheory.Limits.kernelFactorThruImage_inv_comp_ι_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.HasKernel f] [CategoryTheory.Limits.HasImage f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.factorThruImage f)] {Z : C} (h : X ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelFactorThruImage f).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι (CategoryTheory.Limits.factorThruImage f)) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) h - CategoryTheory.Limits.kernel.ofCompIso 📋 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.HasKernel f] {Z : C} (l : X ⟶ Z) (i : Z ≅ Y) (h : CategoryTheory.CategoryStruct.comp l i.hom = f) : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.Limits.kernel.ι f) ⋯) - CategoryTheory.Limits.kernelFactorThruImage_hom_comp_ι_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.HasKernel f] [CategoryTheory.Limits.HasImage f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.factorThruImage f)] {Z : C} (h : X ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelFactorThruImage f).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι (CategoryTheory.Limits.factorThruImage f)) h - CategoryTheory.Limits.kernelZeroIsoSource_inv 📋 Mathlib.CategoryTheory.Limits.Shapes.Kernels
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} : CategoryTheory.Limits.kernelZeroIsoSource.inv = CategoryTheory.Limits.kernel.lift 0 (CategoryTheory.CategoryStruct.id X) ⋯ - CategoryTheory.Limits.kernelIsIsoComp_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.IsIso f] [CategoryTheory.Limits.HasKernel g] : (CategoryTheory.Limits.kernelIsIsoComp f g).hom = CategoryTheory.Limits.kernel.lift g (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι (CategoryTheory.CategoryStruct.comp f g)) f) ⋯ - CategoryTheory.Limits.kernel.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.HasKernel f] [CategoryTheory.Limits.HasKernel f'] (q : Y ⟶ Y') (w : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp 0 f') : CategoryTheory.Limits.kernel.map f f' 0 q w = 0 - CategoryTheory.Limits.lift_comp_kernelIsoOfEq_hom_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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) (e : Z ⟶ X) (he : CategoryTheory.CategoryStruct.comp e f = 0) {Z✝ : C} (h✝ : CategoryTheory.Limits.kernel g ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.lift f e he) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelIsoOfEq h).hom h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.lift g e ⋯) h✝ - CategoryTheory.Limits.lift_comp_kernelIsoOfEq_inv_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.HasKernel f] [CategoryTheory.Limits.HasKernel g] (h : f = g) (e : Z ⟶ X) (he : CategoryTheory.CategoryStruct.comp e g = 0) {Z✝ : C} (h✝ : CategoryTheory.Limits.kernel f ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.lift g e he) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelIsoOfEq h).inv h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.lift f e ⋯) h✝ - CategoryTheory.Limits.kernelComparison_comp_ι_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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] {Z : D} (h : G.obj X ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelComparison f G) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι (G.map f)) h) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.kernel.ι f)) h - CategoryTheory.Limits.map_lift_kernelComparison 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] {Z : C} {h : Z ⟶ X} (w : CategoryTheory.CategoryStruct.comp h f = 0) : CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.kernel.lift f h w)) (CategoryTheory.Limits.kernelComparison f G) = CategoryTheory.Limits.kernel.lift (G.map f) (G.map h) ⋯ - CategoryTheory.Limits.kernel.lift_map 📋 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) (g : Y ⟶ Z) [CategoryTheory.Limits.HasKernel g] (w : CategoryTheory.CategoryStruct.comp f g = 0) (f' : X' ⟶ Y') (g' : Y' ⟶ Z') [CategoryTheory.Limits.HasKernel g'] (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.kernel.lift g f w) (CategoryTheory.Limits.kernel.map g g' q r h₂) = CategoryTheory.CategoryStruct.comp p (CategoryTheory.Limits.kernel.lift g' f' w') - CategoryTheory.Limits.kernelIsKernel 📋 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.HasKernel f] : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.Fork.ofι (CategoryTheory.Limits.kernel.ι f) ⋯) - CategoryTheory.Limits.map_lift_kernelComparison_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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] {Z : C} {h : Z ⟶ X} (w : CategoryTheory.CategoryStruct.comp h f = 0) {Z✝ : D} (h✝ : CategoryTheory.Limits.kernel (G.map f) ⟶ Z✝) : CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.kernel.lift f h w)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelComparison f G) h✝) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.lift (G.map f) (G.map h) ⋯) h✝ - CategoryTheory.Limits.kernelComparison_comp_kernel_map 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] (g : X' ⟶ Y') [CategoryTheory.Limits.HasKernel g] [CategoryTheory.Limits.HasKernel (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.kernelComparison f G) (CategoryTheory.Limits.kernel.map (G.map f) (G.map g) (G.map p) (G.map q) ⋯) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.kernel.map f g p q hpq)) (CategoryTheory.Limits.kernelComparison g G) - CategoryTheory.Limits.kernelComparison_comp_kernel_map_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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] (g : X' ⟶ Y') [CategoryTheory.Limits.HasKernel g] [CategoryTheory.Limits.HasKernel (G.map g)] (p : X ⟶ X') (q : Y ⟶ Y') (hpq : CategoryTheory.CategoryStruct.comp f q = CategoryTheory.CategoryStruct.comp p g) {Z : D} (h : CategoryTheory.Limits.kernel (G.map g) ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelComparison f G) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.map (G.map f) (G.map g) (G.map p) (G.map q) ⋯) h) = CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.kernel.map f g p q hpq)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernelComparison g G) h) - CategoryTheory.Preadditive.mono_of_isZero_kernel 📋 Mathlib.CategoryTheory.Preadditive.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] (h : CategoryTheory.Limits.IsZero (CategoryTheory.Limits.kernel f)) : CategoryTheory.Mono f - CategoryTheory.Preadditive.mono_iff_isZero_kernel 📋 Mathlib.CategoryTheory.Preadditive.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] : CategoryTheory.Mono f ↔ CategoryTheory.Limits.IsZero (CategoryTheory.Limits.kernel f) - CategoryTheory.Preadditive.mono_of_kernel_iso_zero 📋 Mathlib.CategoryTheory.Preadditive.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasZeroObject C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasLimit (CategoryTheory.Limits.parallelPair f 0)] (w : CategoryTheory.Limits.kernel f ≅ 0) : CategoryTheory.Mono f - CategoryTheory.Preadditive.mono_of_kernel_zero 📋 Mathlib.CategoryTheory.Preadditive.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasLimit (CategoryTheory.Limits.parallelPair f 0)] (w : CategoryTheory.Limits.kernel.ι f = 0) : CategoryTheory.Mono f - CategoryTheory.Limits.kernelBiproductπIso 📋 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.kernel (CategoryTheory.Limits.biproduct.π f i) ≅ ⨁ Subtype.restrict (fun j => j ≠ i) f - CategoryTheory.Limits.kernelBiproductToSubtypeIso 📋 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.kernel (CategoryTheory.Limits.biproduct.toSubtype f p) ≅ ⨁ Subtype.restrict pᶜ f - CategoryTheory.Limits.kernelBiproductπIso_inv 📋 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.kernelBiproductπIso f i).inv = CategoryTheory.Limits.limit.lift (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.π f i) 0) (CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.Limits.biproduct.fromSubtype f fun j => ¬j = i) ⋯) - CategoryTheory.Limits.kernelBiproductπIso_hom 📋 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.kernelBiproductπIso f i).hom = (CategoryTheory.Limits.biproduct.isLimitFromSubtype f i).lift (CategoryTheory.Limits.limit.cone (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.π f i) 0)) - CategoryTheory.Limits.kernelBiproductToSubtypeIso_inv 📋 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.kernelBiproductToSubtypeIso f p).inv = CategoryTheory.Limits.limit.lift (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.toSubtype f p) 0) (CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.Limits.biproduct.fromSubtype f pᶜ) ⋯) - CategoryTheory.Limits.kernelBiproductToSubtypeIso_hom 📋 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.kernelBiproductToSubtypeIso f p).hom = (CategoryTheory.Limits.KernelFork.IsLimit.ofι (CategoryTheory.Limits.biproduct.fromSubtype f pᶜ) ⋯ (fun {x} g x_1 => CategoryTheory.CategoryStruct.comp g (CategoryTheory.Limits.biproduct.toSubtype f pᶜ)) ⋯ ⋯).lift (CategoryTheory.Limits.limit.cone (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.toSubtype f p) 0)) - CategoryTheory.Limits.kernelBiprodFstIso 📋 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.kernel CategoryTheory.Limits.biprod.fst ≅ Y - CategoryTheory.Limits.kernelBiprodSndIso 📋 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.kernel CategoryTheory.Limits.biprod.snd ≅ X - CategoryTheory.Limits.kernelBiprodFstIso_inv 📋 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.kernelBiprodFstIso.inv = CategoryTheory.Limits.limit.lift (CategoryTheory.Limits.parallelPair CategoryTheory.Limits.biprod.fst 0) (CategoryTheory.Limits.biprod.fstKernelFork X Y) - CategoryTheory.Limits.kernelBiprodSndIso_inv 📋 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.kernelBiprodSndIso.inv = CategoryTheory.Limits.limit.lift (CategoryTheory.Limits.parallelPair CategoryTheory.Limits.biprod.snd 0) (CategoryTheory.Limits.biprod.sndKernelFork X Y) - CategoryTheory.Limits.kernelBiprodFstIso_hom 📋 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.kernelBiprodFstIso.hom = (CategoryTheory.Limits.biprod.isKernelFstKernelFork X Y).lift (CategoryTheory.Limits.limit.cone (CategoryTheory.Limits.parallelPair CategoryTheory.Limits.biprod.fst 0)) - CategoryTheory.Limits.kernelBiprodSndIso_hom 📋 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.kernelBiprodSndIso.hom = (CategoryTheory.Limits.biprod.isKernelSndKernelFork X Y).lift (CategoryTheory.Limits.limit.cone (CategoryTheory.Limits.parallelPair CategoryTheory.Limits.biprod.snd 0)) - CategoryTheory.Limits.kernel.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.HasKernel 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 (CategoryTheory.Limits.kernel f)) : (CategoryTheory.ConcreteCategory.hom f) ((CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.kernel.ι f)) x) = (CategoryTheory.ConcreteCategory.hom 0) x - CategoryTheory.Limits.kernel.lift_ι_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.HasKernel f] {W : C} (k : W ⟶ X) (h : CategoryTheory.CategoryStruct.comp k f = 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 W) : (CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.kernel.ι f)) ((CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.kernel.lift f k h)) x) = (CategoryTheory.ConcreteCategory.hom k) x - AddCommGrpCat.kernelIsoKer 📋 Mathlib.Algebra.Category.Grp.Limits
{G H : AddCommGrpCat} (f : G ⟶ H) : CategoryTheory.Limits.kernel f ≅ AddCommGrpCat.of ↥(AddCommGrpCat.Hom.hom f).ker - AddCommGrpCat.kernelIsoKerOver 📋 Mathlib.Algebra.Category.Grp.Limits
{G H : AddCommGrpCat} (f : G ⟶ H) : CategoryTheory.Over.mk (CategoryTheory.Limits.kernel.ι f) ≅ CategoryTheory.Over.mk (AddCommGrpCat.ofHom (AddCommGrpCat.Hom.hom f).ker.subtype) - AddCommGrpCat.kernelIsoKer_inv_comp_ι 📋 Mathlib.Algebra.Category.Grp.Limits
{G H : AddCommGrpCat} (f : G ⟶ H) : CategoryTheory.CategoryStruct.comp (AddCommGrpCat.kernelIsoKer f).inv (CategoryTheory.Limits.kernel.ι f) = AddCommGrpCat.ofHom (AddCommGrpCat.Hom.hom f).ker.subtype - AddCommGrpCat.kernelIsoKer_hom_comp_subtype 📋 Mathlib.Algebra.Category.Grp.Limits
{G H : AddCommGrpCat} (f : G ⟶ H) : CategoryTheory.CategoryStruct.comp (AddCommGrpCat.kernelIsoKer f).hom (AddCommGrpCat.ofHom (AddCommGrpCat.Hom.hom f).ker.subtype) = CategoryTheory.Limits.kernel.ι f - ModuleCat.kernelIsoKer 📋 Mathlib.Algebra.Category.ModuleCat.Kernels
{R : Type u} [Ring R] {G H : ModuleCat R} (f : G ⟶ H) : CategoryTheory.Limits.kernel f ≅ ModuleCat.of R ↥(ModuleCat.Hom.hom f).ker - ModuleCat.kernelIsoKer_hom_ker_subtype 📋 Mathlib.Algebra.Category.ModuleCat.Kernels
{R : Type u} [Ring R] {G H : ModuleCat R} (f : G ⟶ H) : CategoryTheory.CategoryStruct.comp (ModuleCat.kernelIsoKer f).hom (ModuleCat.ofHom (ModuleCat.Hom.hom f).ker.subtype) = CategoryTheory.Limits.kernel.ι f - ModuleCat.kernelIsoKer_inv_kernel_ι 📋 Mathlib.Algebra.Category.ModuleCat.Kernels
{R : Type u} [Ring R] {G H : ModuleCat R} (f : G ⟶ H) : CategoryTheory.CategoryStruct.comp (ModuleCat.kernelIsoKer f).inv (CategoryTheory.Limits.kernel.ι f) = ModuleCat.ofHom (ModuleCat.Hom.hom f).ker.subtype - ModuleCat.kernelIsoKer_hom_ker_subtype_apply 📋 Mathlib.Algebra.Category.ModuleCat.Kernels
{R : Type u} [Ring R] {G H : ModuleCat R} (f : G ⟶ H) (x : ↑(CategoryTheory.Limits.kernel f)) : ↑((CategoryTheory.ConcreteCategory.hom (ModuleCat.kernelIsoKer f).hom) x) = (CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.kernel.ι f)) x - ModuleCat.kernelIsoKer_inv_kernel_ι_apply 📋 Mathlib.Algebra.Category.ModuleCat.Kernels
{R : Type u} [Ring R] {G H : ModuleCat R} (f : G ⟶ H) (x : ↥(ModuleCat.Hom.hom f).ker) : (CategoryTheory.ConcreteCategory.hom (CategoryTheory.Limits.kernel.ι f)) ((CategoryTheory.ConcreteCategory.hom (ModuleCat.kernelIsoKer f).inv) x) = ↑x - CategoryTheory.Limits.PreservesKernel.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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) G] : G.obj (CategoryTheory.Limits.kernel f) ≅ CategoryTheory.Limits.kernel (G.map f) - CategoryTheory.Limits.instIsIsoKernelComparison 📋 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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) G] : CategoryTheory.IsIso (CategoryTheory.Limits.kernelComparison f G) - CategoryTheory.Limits.PreservesKernel.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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] [i : CategoryTheory.IsIso (CategoryTheory.Limits.kernelComparison f G)] : CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) G - CategoryTheory.Limits.PreservesKernel.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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) G] : (CategoryTheory.Limits.PreservesKernel.iso G f).hom = CategoryTheory.Limits.kernelComparison f G - CategoryTheory.Limits.isLimitOfHasKernelOfPreservesLimit 📋 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.HasKernel f] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) G] : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.Fork.ofι (G.map (CategoryTheory.Limits.kernel.ι f)) ⋯) - CategoryTheory.Limits.PreservesKernel.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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) G] : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesKernel.iso G f).inv (G.map (CategoryTheory.Limits.kernel.ι f)) = CategoryTheory.Limits.kernel.ι (G.map f) - CategoryTheory.Limits.PreservesKernel.iso_inv_ι_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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) G] {Z : D} (h : G.obj X ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesKernel.iso G f).inv (CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.kernel.ι f)) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι (G.map f)) h - CategoryTheory.Limits.kernel_map_comp_preserves_kernel_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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) G] {X' Y' : C} (g : X' ⟶ Y') [CategoryTheory.Limits.HasKernel g] [CategoryTheory.Limits.HasKernel (G.map g)] [CategoryTheory.Limits.PreservesLimit (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.kernel.map (G.map f) (G.map g) (G.map p) (G.map q) ⋯) (CategoryTheory.Limits.PreservesKernel.iso G g).inv = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesKernel.iso G f).inv (G.map (CategoryTheory.Limits.kernel.map f g p q hpq)) - CategoryTheory.Limits.kernel_map_comp_preserves_kernel_iso_inv_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.HasKernel f] [CategoryTheory.Limits.HasKernel (G.map f)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair f 0) G] {X' Y' : C} (g : X' ⟶ Y') [CategoryTheory.Limits.HasKernel g] [CategoryTheory.Limits.HasKernel (G.map g)] [CategoryTheory.Limits.PreservesLimit (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 : G.obj (CategoryTheory.Limits.kernel g) ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.map (G.map f) (G.map g) (G.map p) (G.map q) ⋯) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesKernel.iso G g).inv h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.PreservesKernel.iso G f).inv (CategoryTheory.CategoryStruct.comp (G.map (CategoryTheory.Limits.kernel.map f g p q hpq)) 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.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.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.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.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.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.coimageImageComparisonFunctor_map 📋 Mathlib.CategoryTheory.Abelian.Images
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {f g : CategoryTheory.Arrow C} (η : f ⟶ g) : CategoryTheory.Abelian.coimageImageComparisonFunctor.map η = CategoryTheory.Arrow.homMk (CategoryTheory.Limits.cokernel.map (CategoryTheory.Limits.kernel.ι f.hom) (CategoryTheory.Limits.kernel.ι g.hom) (CategoryTheory.Limits.kernel.map f.hom g.hom (CategoryTheory.Arrow.Hom.left η) (CategoryTheory.Arrow.Hom.right η) ⋯) (CategoryTheory.Arrow.Hom.left η) ⋯) (CategoryTheory.Limits.kernel.map (CategoryTheory.Limits.cokernel.π f.hom) (CategoryTheory.Limits.cokernel.π g.hom) (CategoryTheory.Arrow.Hom.right η) (CategoryTheory.Limits.cokernel.map f.hom g.hom (CategoryTheory.Arrow.Hom.left η) (CategoryTheory.Arrow.Hom.right η) ⋯) ⋯) ⋯ - CategoryTheory.NonPreadditiveAbelian.instMonoFactorThruCoimage 📋 Mathlib.CategoryTheory.Abelian.NonPreadditive
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.NonPreadditiveAbelian C] {P Q : C} (f : P ⟶ Q) : CategoryTheory.Mono (CategoryTheory.Abelian.factorThruCoimage f) - CategoryTheory.NonPreadditiveAbelian.isIso_factorThruCoimage 📋 Mathlib.CategoryTheory.Abelian.NonPreadditive
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.NonPreadditiveAbelian C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Epi f] : CategoryTheory.IsIso (CategoryTheory.Abelian.factorThruCoimage f) - CategoryTheory.Abelian.coimageIsoImage' 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : CategoryTheory.Abelian.coimage f ≅ CategoryTheory.Limits.image f - CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.imageMonoFactorisation_m 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X Y : C} (f : X ⟶ Y) : (CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.imageMonoFactorisation f).m = CategoryTheory.Limits.kernel.ι (CategoryTheory.Limits.cokernel.π f) - CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.imageMonoFactorisation_e 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X Y : C} (f : X ⟶ Y) : (CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.imageMonoFactorisation f).e = CategoryTheory.Limits.kernel.lift (CategoryTheory.Limits.cokernel.π f) f ⋯ - CategoryTheory.Abelian.mono_of_kernel_ι_eq_zero 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {P Q : C} (f : P ⟶ Q) (h : CategoryTheory.Limits.kernel.ι f = 0) : CategoryTheory.Mono f - CategoryTheory.Abelian.coimageIsoImage 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : CategoryTheory.Abelian.coimage f ≅ CategoryTheory.Abelian.image f - CategoryTheory.Abelian.instMonoFactorThruCoimage 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {P Q : C} (f : P ⟶ Q) : CategoryTheory.Mono (CategoryTheory.Abelian.factorThruCoimage f) - CategoryTheory.Abelian.isIso_factorThruCoimage 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {P Q : C} (f : P ⟶ Q) [CategoryTheory.Epi f] : CategoryTheory.IsIso (CategoryTheory.Abelian.factorThruCoimage f) - CategoryTheory.Abelian.epiDesc 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Epi f] {T : C} (g : X ⟶ T) (hg : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) g = 0) : Y ⟶ T - CategoryTheory.Abelian.isColimitMapCoconeOfCokernelCoforkOfπ 📋 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} (p : X ⟶ Y) [CategoryTheory.Limits.HasKernel p] (F : CategoryTheory.Functor D C) [F.PreservesZeroMorphisms] [CategoryTheory.Epi (F.map p)] [CategoryTheory.Limits.PreservesLimit (CategoryTheory.Limits.parallelPair p 0) F] : CategoryTheory.Limits.IsColimit (F.mapCocone (CategoryTheory.Limits.CokernelCofork.ofπ p ⋯)) - CategoryTheory.Abelian.comp_epiDesc 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Epi f] {T : C} (g : X ⟶ T) (hg : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) g = 0) : CategoryTheory.CategoryStruct.comp f (CategoryTheory.Abelian.epiDesc f g hg) = g - CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.hasImages 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] [∀ {X Y : C} (f : X ⟶ Y), CategoryTheory.IsIso (CategoryTheory.Abelian.coimageImageComparison f)] : CategoryTheory.Limits.HasImages C - CategoryTheory.Abelian.ofCoimageImageComparisonIsIso 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] [∀ {X Y : C} (f : X ⟶ Y), CategoryTheory.IsIso (CategoryTheory.Abelian.coimageImageComparison f)] [CategoryTheory.Limits.HasFiniteProducts C] : CategoryTheory.Abelian C - CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.imageFactorisation 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.IsIso (CategoryTheory.Abelian.coimageImageComparison f)] : CategoryTheory.Limits.ImageFactorisation f - CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.isNormalEpiCategory 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] [∀ {X Y : C} (f : X ⟶ Y), CategoryTheory.IsIso (CategoryTheory.Abelian.coimageImageComparison f)] [CategoryTheory.Limits.HasFiniteProducts C] : CategoryTheory.IsNormalEpiCategory C - CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.isNormalMonoCategory 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] [∀ {X Y : C} (f : X ⟶ Y), CategoryTheory.IsIso (CategoryTheory.Abelian.coimageImageComparison f)] [CategoryTheory.Limits.HasFiniteProducts C] : CategoryTheory.IsNormalMonoCategory C - CategoryTheory.Abelian.comp_epiDesc_assoc 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Epi f] {T : C} (g : X ⟶ T) (hg : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι f) g = 0) {Z : C} (h : T ⟶ Z) : CategoryTheory.CategoryStruct.comp f (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.epiDesc f g hg) h) = CategoryTheory.CategoryStruct.comp g h - CategoryTheory.Abelian.coim_map 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {f g : CategoryTheory.Arrow C} (u : f ⟶ g) : CategoryTheory.Abelian.coim.map u = CategoryTheory.Limits.cokernel.desc (CategoryTheory.Limits.kernel.ι f.hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Arrow.Hom.left u) (CategoryTheory.Abelian.coimage.π g.hom)) ⋯ - CategoryTheory.Abelian.im_map 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {f g : CategoryTheory.Arrow C} (u : f ⟶ g) : CategoryTheory.Abelian.im.map u = CategoryTheory.Limits.kernel.lift (CategoryTheory.Limits.cokernel.π g.hom) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.image.ι f.hom) (CategoryTheory.Arrow.Hom.right u)) ⋯ - CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.instIsIsoEImageMonoFactorisationOfHasZeroObjectOfMonoOfCoimageImageComparison 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] [CategoryTheory.Limits.HasZeroObject C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Mono f] [CategoryTheory.IsIso (CategoryTheory.Abelian.coimageImageComparison f)] : CategoryTheory.IsIso (CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.imageMonoFactorisation f).e - CategoryTheory.Abelian.instIsIsoCoimageImageComparison 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : CategoryTheory.IsIso (CategoryTheory.Abelian.coimageImageComparison f) - CategoryTheory.Abelian.coimageIsoImage'_hom 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : (CategoryTheory.Abelian.coimageIsoImage' f).hom = CategoryTheory.Limits.cokernel.desc (CategoryTheory.Limits.kernel.ι f) (CategoryTheory.Limits.factorThruImage f) ⋯ - CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.imageMonoFactorisation_e' 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X Y : C} (f : X ⟶ Y) : (CategoryTheory.Abelian.OfCoimageImageComparisonIsIso.imageMonoFactorisation f).e = CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π (CategoryTheory.Limits.kernel.ι f)) (CategoryTheory.Abelian.coimageImageComparison f) - CategoryTheory.Abelian.factorThruImage_comp_coimageIsoImage'_inv 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.factorThruImage f) (CategoryTheory.Abelian.coimageIsoImage' f).inv = CategoryTheory.Limits.cokernel.π (CategoryTheory.Limits.kernel.ι f) - CategoryTheory.Abelian.coimage.comp_π_eq_zero 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) {Z : C} (g : Y ⟶ Z) : CategoryTheory.CategoryStruct.comp f (CategoryTheory.Abelian.coimage.π g) = 0 ↔ CategoryTheory.CategoryStruct.comp f g = 0 - CategoryTheory.Abelian.comp_coimage_π_eq_zero 📋 Mathlib.CategoryTheory.Abelian.Basic
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {P Q : C} {f : P ⟶ Q} {R : C} {g : Q ⟶ R} (h : CategoryTheory.CategoryStruct.comp f g = 0) : CategoryTheory.CategoryStruct.comp f (CategoryTheory.Abelian.coimage.π g) = 0 - 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.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.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.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.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.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 - FGModuleCat.instIsIsoCoimageImageComparison 📋 Mathlib.Algebra.Category.FGModuleCat.Abelian
{k : Type u} [Ring k] [IsNoetherianRing k] {X Y : FGModuleCat k} (f : X ⟶ Y) : CategoryTheory.IsIso (CategoryTheory.Abelian.coimageImageComparison f) - CategoryTheory.ShortComplex.cyclesIsoKernel 📋 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] : S.cycles ≅ CategoryTheory.Limits.kernel S.g - 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.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.cyclesIsoKernel_hom 📋 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] : S.cyclesIsoKernel.hom = CategoryTheory.Limits.kernel.lift S.g S.iCycles ⋯ - CategoryTheory.ShortComplex.cyclesIsoKernel_inv 📋 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] : S.cyclesIsoKernel.inv = S.liftCycles (CategoryTheory.Limits.kernel.ι S.g) ⋯ - 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.RightHomologyData.ofHasKernel_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.HasKernel S.g] (hf : S.f = 0) : (CategoryTheory.ShortComplex.RightHomologyData.ofHasKernel S hf).H = CategoryTheory.Limits.kernel S.g - 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.RightHomologyData.ofHasKernel_ι 📋 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.HasKernel S.g] (hf : S.f = 0) : (CategoryTheory.ShortComplex.RightHomologyData.ofHasKernel S hf).ι = CategoryTheory.Limits.kernel.ι S.g - 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.ShortComplex.LeftHomologyData.ofAbelian_K 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : (CategoryTheory.ShortComplex.LeftHomologyData.ofAbelian S).K = CategoryTheory.Limits.kernel S.g - CategoryTheory.ShortComplex.LeftHomologyData.ofAbelian_i 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : (CategoryTheory.ShortComplex.LeftHomologyData.ofAbelian S).i = CategoryTheory.Limits.kernel.ι S.g - CategoryTheory.ShortComplex.LeftHomologyData.ofAbelian_H 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : (CategoryTheory.ShortComplex.LeftHomologyData.ofAbelian S).H = CategoryTheory.Abelian.coimage (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι S.g) (CategoryTheory.Limits.cokernel.π S.f)) - CategoryTheory.ShortComplex.RightHomologyData.ofAbelian_H 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : (CategoryTheory.ShortComplex.RightHomologyData.ofAbelian S).H = CategoryTheory.Abelian.image (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι S.g) (CategoryTheory.Limits.cokernel.π S.f)) - CategoryTheory.ShortComplex.abelianImageToKernel 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.Abelian.image S.f ⟶ CategoryTheory.Limits.kernel S.g - CategoryTheory.ShortComplex.cokernelToAbelianCoimage 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.Limits.cokernel S.f ⟶ CategoryTheory.Abelian.coimage S.g - CategoryTheory.ShortComplex.instEpiCokernelToAbelianCoimage 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.Epi S.cokernelToAbelianCoimage - CategoryTheory.ShortComplex.instMonoAbelianImageToKernel 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.Mono S.abelianImageToKernel - CategoryTheory.ShortComplex.abelianImageToKernel_comp_kernel_ι 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.CategoryStruct.comp S.abelianImageToKernel (CategoryTheory.Limits.kernel.ι S.g) = CategoryTheory.Abelian.image.ι S.f - CategoryTheory.ShortComplex.cokernel_π_comp_cokernelToAbelianCoimage 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π S.f) S.cokernelToAbelianCoimage = CategoryTheory.Abelian.coimage.π S.g - CategoryTheory.ShortComplex.LeftHomologyData.ofAbelian_π 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : (CategoryTheory.ShortComplex.LeftHomologyData.ofAbelian S).π = CategoryTheory.Limits.cokernel.π (CategoryTheory.Limits.kernel.ι (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι S.g) (CategoryTheory.Limits.cokernel.π S.f))) - CategoryTheory.ShortComplex.RightHomologyData.ofAbelian_ι 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : (CategoryTheory.ShortComplex.RightHomologyData.ofAbelian S).ι = CategoryTheory.Limits.kernel.ι (CategoryTheory.Limits.cokernel.π (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι S.g) (CategoryTheory.Limits.cokernel.π S.f))) - CategoryTheory.ShortComplex.abelianImageToKernel_comp_kernel_ι_assoc 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) {Z : C} (h : S.X₂ ⟶ Z) : CategoryTheory.CategoryStruct.comp S.abelianImageToKernel (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι S.g) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.image.ι S.f) h - CategoryTheory.ShortComplex.cokernel_π_comp_cokernelToAbelianCoimage_assoc 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) {Z : C} (h : CategoryTheory.Abelian.coimage S.g ⟶ Z) : CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π S.f) (CategoryTheory.CategoryStruct.comp S.cokernelToAbelianCoimage h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Abelian.coimage.π S.g) h - CategoryTheory.ShortComplex.abelianImageToKernelIsKernel 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι S.abelianImageToKernel ⋯) - CategoryTheory.ShortComplex.cokernelToAbelianCoimageIsCokernel 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ S.cokernelToAbelianCoimage ⋯) - CategoryTheory.ShortComplex.abelianImageToKernel_comp_kernel_ι_comp_cokernel_π 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.CategoryStruct.comp S.abelianImageToKernel (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι S.g) (CategoryTheory.Limits.cokernel.π S.f)) = 0 - CategoryTheory.ShortComplex.kernel_ι_comp_cokernel_π_comp_cokernelToAbelianCoimage 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) : CategoryTheory.CategoryStruct.comp (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι S.g) (CategoryTheory.Limits.cokernel.π S.f)) S.cokernelToAbelianCoimage = 0 - CategoryTheory.ShortComplex.abelianImageToKernel_comp_kernel_ι_comp_cokernel_π_assoc 📋 Mathlib.Algebra.Homology.ShortComplex.Abelian
{C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] (S : CategoryTheory.ShortComplex C) {Z : C} (h : CategoryTheory.Limits.cokernel S.f ⟶ Z) : CategoryTheory.CategoryStruct.comp S.abelianImageToKernel (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.kernel.ι S.g) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.cokernel.π S.f) h)) = CategoryTheory.CategoryStruct.comp 0 h - CategoryTheory.cokernelOpUnop 📋 Mathlib.CategoryTheory.Abelian.Opposite
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : Opposite.unop (CategoryTheory.Limits.cokernel f.op) ≅ CategoryTheory.Limits.kernel f - CategoryTheory.kernelOpUnop 📋 Mathlib.CategoryTheory.Abelian.Opposite
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : Opposite.unop (CategoryTheory.Limits.kernel f.op) ≅ CategoryTheory.Limits.cokernel f - CategoryTheory.cokernelOpOp 📋 Mathlib.CategoryTheory.Abelian.Opposite
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : CategoryTheory.Limits.cokernel f.op ≅ Opposite.op (CategoryTheory.Limits.kernel f) - CategoryTheory.kernelOpOp 📋 Mathlib.CategoryTheory.Abelian.Opposite
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : CategoryTheory.Limits.kernel f.op ≅ Opposite.op (CategoryTheory.Limits.cokernel f) - CategoryTheory.cokernelUnopUnop 📋 Mathlib.CategoryTheory.Abelian.Opposite
{C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] [CategoryTheory.Abelian C] {A B : Cᵒᵖ} (g : A ⟶ B) : CategoryTheory.Limits.cokernel g.unop ≅ Opposite.unop (CategoryTheory.Limits.kernel g)
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