Zulip Chat Archive

Stream: homology

Topic: Isomorphism from image to kernel


Yaël Dillies (Oct 12 2025 at 16:24):

What is the @Joël Riou-approved way of getting that the image of the first map of a short exact complex is isomorphic to the kernel of the second one?

Aaron Liu (Oct 12 2025 at 16:26):

we also want the cokernel of the first map isomorphic to the coimage of the second one

Joël Riou (Oct 12 2025 at 17:24):

I think everything we need should be in https://leanprover-community.github.io/mathlib4_docs/Mathlib/CategoryTheory/Abelian/Exact.html

Sophie Morel (Oct 16 2025 at 18:15):

I would use https://leanprover-community.github.io/mathlib4_docs/Mathlib/CategoryTheory/Abelian/Exact.html#CategoryTheory.ShortComplex.Exact.isLimitImage and https://leanprover-community.github.io/mathlib4_docs/Mathlib/CategoryTheory/Abelian/Exact.html#CategoryTheory.ShortComplex.Exact.isColimitCoimage, plus the uniqueness (up to isomorphism) of kernel and cokernel.

Andrew Yang (Oct 16 2025 at 18:33):

I think the right question is that whether we should use docs#Abelian.image or docs#Abelian.coimage or docs#CategoryTheory.Limits.image or docs#CategoryTheory.Limits.imageSubobject for the "image"

Sophie Morel (Oct 16 2025 at 18:59):

If you decide to use the more general definition of the image, you have the analogues of the theorems I quoted (they're in the same file, just below).
Which one you decide to use depends on what else you are doing with images/coimages. In my experience with homological algebra, it was always more convenient to use Abelian.image and Abelian.coimage, but ymmv.
As for imageSubobject, I was not able to use it for my purposes when I tried.

Aaron Liu (Oct 16 2025 at 20:54):

we have an exact sequence A ⟶ B ⟶ C ⟶ D where we want to conclude that coker(A ⟶ B) ≅ ker(C ⟶ D) (since coker(A ⟶ B) ≅ coim(B ⟶ C) ≅ im(B ⟶ C) ≅ ker(C ⟶ D))

Aaron Liu (Oct 16 2025 at 20:59):

that's docs#CategoryTheory.Limits.cokernel and docs#CategoryTheory.Limits.kernel

Sophie Morel (Oct 20 2025 at 12:17):

I don't know how you enter your exact sequence exactly, but this seems to work:

import Mathlib.CategoryTheory.Abelian.Exact

open CategoryTheory

universe u

variable {E : Type u} [Category E] [Abelian E]

variable {A B C D : E} (f : A  B) (g : B  C) (h : C  D) (zero1 : f  g = 0) (zero2 : g  h = 0)

variable (ex1 : ShortComplex.Exact (ShortComplex.mk f g zero1))
variable (ex2 : ShortComplex.Exact (ShortComplex.mk g h zero2))

noncomputable example : Limits.cokernel f  Limits.kernel h := by
  set e : Limits.cokernel f  Abelian.coimage g := Limits.IsColimit.coconePointUniqueUpToIso (Limits.colimit.isColimit _)
    (Limits.IsColimit.ofIsoColimit ex1.isColimitCoimage (Limits.Cofork.ext (Iso.refl _)))
  set e'' : Abelian.image g  Limits.kernel h := Limits.IsLimit.conePointUniqueUpToIso
    (Limits.IsLimit.ofIsoLimit ex2.isLimitImage (Limits.Fork.ext (Iso.refl _)) ) (Limits.limit.isLimit _)
  set e' := Abelian.coimageIsoImage g
  exact e ≪≫ e' ≪≫ e''

Aaron Liu (Oct 20 2025 at 12:19):

We also want this identification to be natural in the exact sequence

Aaron Liu (Oct 20 2025 at 12:20):

so it's a functor from the category of exact sequences of this length

Sophie Morel (Oct 20 2025 at 14:46):

The identification will be natural because the isomorphisms commute with any reasonable map, because of theorems like https://leanprover-community.github.io/mathlib4_docs/Mathlib/CategoryTheory/Limits/IsLimit.html#CategoryTheory.Limits.IsLimit.conePointUniqueUpToIso_hom_comp
I could help, but only if you show me how your category of exact sequences is actually implemented.

Yaël Dillies (Oct 20 2025 at 14:52):

Thanks Sophie, but we already got there now: https://github.com/kbuzzard/ClassFieldTheory/pull/31/files#diff-cf53f2f0482db4201a596440e315c51d7c5c267bdc3e9b061e420d97255001d9


Last updated: Dec 20 2025 at 21:32 UTC