Preservation of coimage-image comparisons #
If a functor preserves kernels and cokernels, then it preserves abelian images, abelian coimages and coimage-image comparisons.
noncomputable def CategoryTheory.Abelian.PreservesImage.iso {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.HasCokernel (F.map f)] [Limits.HasKernel (Limits.cokernel.π (F.map f))] :
If a functor preserves kernels and cokernels, it preserves abelian images.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CategoryTheory.Abelian.PreservesImage.iso_hom_ι {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.HasCokernel (F.map f)] [Limits.HasKernel (Limits.cokernel.π (F.map f))] :
@[simp]
theorem CategoryTheory.Abelian.PreservesImage.iso_hom_ι_assoc {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.HasCokernel (F.map f)] [Limits.HasKernel (Limits.cokernel.π (F.map f))] {Z : D} (h : F.obj Y ⟶ Z) :
CategoryStruct.comp (iso F f).hom (CategoryStruct.comp (image.ι (F.map f)) h) = CategoryStruct.comp (F.map (image.ι f)) h
@[simp]
theorem CategoryTheory.Abelian.PreservesImage.factorThruImage_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.HasCokernel (F.map f)] [Limits.HasKernel (Limits.cokernel.π (F.map f))] :
CategoryStruct.comp (F.map (Abelian.factorThruImage f)) (iso F f).hom = Abelian.factorThruImage (F.map f)
@[simp]
theorem CategoryTheory.Abelian.PreservesImage.factorThruImage_iso_hom_assoc {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.HasCokernel (F.map f)] [Limits.HasKernel (Limits.cokernel.π (F.map f))] {Z : D} (h : Abelian.image (F.map f) ⟶ Z) :
CategoryStruct.comp (F.map (Abelian.factorThruImage f)) (CategoryStruct.comp (iso F f).hom h) = CategoryStruct.comp (Abelian.factorThruImage (F.map f)) h
@[simp]
theorem CategoryTheory.Abelian.PreservesImage.iso_inv_ι {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.HasCokernel (F.map f)] [Limits.HasKernel (Limits.cokernel.π (F.map f))] :
@[simp]
theorem CategoryTheory.Abelian.PreservesImage.iso_inv_ι_assoc {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.HasCokernel (F.map f)] [Limits.HasKernel (Limits.cokernel.π (F.map f))] {Z : D} (h : F.obj Y ⟶ Z) :
CategoryStruct.comp (iso F f).inv (CategoryStruct.comp (F.map (image.ι f)) h) = CategoryStruct.comp (image.ι (F.map f)) h
@[simp]
theorem CategoryTheory.Abelian.PreservesImage.factorThruImage_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.HasCokernel (F.map f)] [Limits.HasKernel (Limits.cokernel.π (F.map f))] :
CategoryStruct.comp (Abelian.factorThruImage (F.map f)) (iso F f).inv = F.map (Abelian.factorThruImage f)
@[simp]
theorem CategoryTheory.Abelian.PreservesImage.factorThruImage_iso_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.HasCokernel (F.map f)] [Limits.HasKernel (Limits.cokernel.π (F.map f))] {Z : D} (h : F.obj (Abelian.image f) ⟶ Z) :
CategoryStruct.comp (Abelian.factorThruImage (F.map f)) (CategoryStruct.comp (iso F f).inv h) = CategoryStruct.comp (F.map (Abelian.factorThruImage f)) h
noncomputable def CategoryTheory.Abelian.PreservesCoimage.iso {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (F.map f)] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
If a functor preserves kernels and cokernels, it preserves abelian coimages.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimage.iso_hom_π {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (F.map f)] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimage.iso_hom_π_assoc {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (F.map f)] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] {Z : D} (h : Abelian.coimage (F.map f) ⟶ Z) :
CategoryStruct.comp (F.map (coimage.π f)) (CategoryStruct.comp (iso F f).hom h) = CategoryStruct.comp (coimage.π (F.map f)) h
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimage.factorThruCoimage_iso_inv {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (F.map f)] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
CategoryStruct.comp (iso F f).inv (F.map (Abelian.factorThruCoimage f)) = Abelian.factorThruCoimage (F.map f)
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimage.factorThruCoimage_iso_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (F.map f)] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] {Z : D} (h : F.obj Y ⟶ Z) :
CategoryStruct.comp (iso F f).inv (CategoryStruct.comp (F.map (Abelian.factorThruCoimage f)) h) = CategoryStruct.comp (Abelian.factorThruCoimage (F.map f)) h
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimage.factorThruCoimage_iso_hom {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (F.map f)] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
CategoryStruct.comp (iso F f).hom (Abelian.factorThruCoimage (F.map f)) = F.map (Abelian.factorThruCoimage f)
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimage.factorThruCoimage_iso_hom_assoc {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (F.map f)] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] {Z : D} (h : F.obj Y ⟶ Z) :
CategoryStruct.comp (iso F f).hom (CategoryStruct.comp (Abelian.factorThruCoimage (F.map f)) h) = CategoryStruct.comp (F.map (Abelian.factorThruCoimage f)) h
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimage.iso_inv_π {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (F.map f)] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimage.iso_inv_π_assoc {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (F.map f)] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] {Z : D} (h : F.obj (Abelian.coimage f) ⟶ Z) :
CategoryStruct.comp (coimage.π (F.map f)) (CategoryStruct.comp (iso F f).inv h) = CategoryStruct.comp (F.map (coimage.π f)) h
theorem CategoryTheory.Abelian.PreservesCoimage.hom_coimageImageComparison {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (Limits.cokernel.π (F.map f))] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
CategoryStruct.comp (iso F f).hom (coimageImageComparison (F.map f)) = CategoryStruct.comp (F.map (coimageImageComparison f)) (PreservesImage.iso F f).hom
noncomputable def CategoryTheory.Abelian.PreservesCoimageImageComparison.iso {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (Limits.cokernel.π (F.map f))] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
If a functor preserves kernels and cokernels, it preserves coimage-image comparisons.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimageImageComparison.iso_inv_left {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (Limits.cokernel.π (F.map f))] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimageImageComparison.iso_inv_right {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (Limits.cokernel.π (F.map f))] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimageImageComparison.iso_hom_left {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (Limits.cokernel.π (F.map f))] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :
@[simp]
theorem CategoryTheory.Abelian.PreservesCoimageImageComparison.iso_hom_right {C : Type u₁} [Category.{v₁, u₁} C] [Limits.HasZeroMorphisms C] {D : Type u₂} [Category.{v₂, u₂} D] [Limits.HasZeroMorphisms D] (F : Functor C D) [F.PreservesZeroMorphisms] {X Y : C} (f : X ⟶ Y) [Limits.HasKernel f] [Limits.HasCokernel f] [Limits.HasKernel (Limits.cokernel.π f)] [Limits.HasCokernel (Limits.kernel.ι f)] [Limits.PreservesLimit (Limits.parallelPair f 0) F] [Limits.PreservesColimit (Limits.parallelPair f 0) F] [Limits.PreservesLimit (Limits.parallelPair (Limits.cokernel.π f) 0) F] [Limits.PreservesColimit (Limits.parallelPair (Limits.kernel.ι f) 0) F] [Limits.HasKernel (Limits.cokernel.π (F.map f))] [Limits.HasCokernel (Limits.kernel.ι (F.map f))] :