Zulip Chat Archive

Stream: condensed mathematics

Topic: Explicit cokernel


Riccardo Brasca (Oct 14 2021 at 14:00):

In for_mathlib/SemiNormedGroup we have

noncomputable def coker.map {fab : A  B} {fbd : B  D} {fac : A  C} {fcd : C  D}
  (h : fab  fbd = fac  fcd) : explicit_cokernel fab  explicit_cokernel fcd :=
explicit_cokernel_desc (show fab  fbd  (explicit_cokernel_π _) = 0,
  begin
    rw [ category_theory.category.assoc, h, category_theory.category.assoc,
      comp_explicit_cokernel_π, limits.comp_zero],
  end
  )

This is morally a special case of docs#category_theory.limits.cokernel.map, but not literally, since with normed group we work with explicit_cokernel (that in any case is a cokernel). Does someone see how to prove cokernel.map using docs#category_theory.limits.cokernel.map? Or should we have both results?

Adam Topaz (Oct 14 2021 at 14:02):

you mean to construct this map using the function from the category theory library?

Riccardo Brasca (Oct 14 2021 at 14:02):

Yes

Johan Commelin (Oct 14 2021 at 14:03):

Is there some lemma saying that explicit_cokernel is a colimit for the cokernel diagram?

Adam Topaz (Oct 14 2021 at 14:03):

yes, one way to do this is to make an explicit cofork using explicit_cokernel, prove that it's a colimit (as Johan said), and use is_colimit.map or something like that.

Riccardo Brasca (Oct 14 2021 at 14:04):

We already have docs#SemiNormedGroup.explicit_cokernel_iso

Riccardo Brasca (Oct 14 2021 at 14:04):

So it's probably enough to use it

Adam Topaz (Oct 14 2021 at 14:05):

Looking at the code for that, we can use is_colimit_cokernel_cocone.

Adam Topaz (Oct 14 2021 at 14:06):

actually, lines 89-118 of that file are essentially what I was describing above :)

Adam Topaz (Oct 14 2021 at 14:09):

And the is_colimit.map I mentioned above is actually docs#category_theory.limits.is_colimit.map

Adam Topaz (Oct 14 2021 at 14:10):

(or you could just use docs#category_theory.limits.is_colimit.desc )

Adam Topaz (Oct 14 2021 at 14:13):

If you use the explicit cokernel iso you mentioned above and compose with cokernel.map, then I think that will introduce some compositions with identity morphisms under the hood which may (or may not) be annoying if we want to rely on some morphisms being defeq.

Riccardo Brasca (Oct 14 2021 at 14:17):

That's true... in any case my question is very practical: I want to throw away for_mathlib/SemiNormedGroup, so if there is a one line proof of cokernel.map I will just use it, but otherwise I am happy with the current proof, that is very short anyway, and I will PR it.

Adam Topaz (Oct 14 2021 at 14:20):

Let me see... one sec.

Adam Topaz (Oct 14 2021 at 14:34):

noncomputable def coker.map {fab : A  B} {fbd : B  D} {fac : A  C} {fcd : C  D}
  (h : fab  fbd = fac  fcd) : explicit_cokernel fab  explicit_cokernel fcd :=
@explicit_cokernel_desc _ _ _ fab (fbd  explicit_cokernel_π _) $ by simp [reassoc_of h]

That's one line ;)

It looks like we need to make explicit some of the variables in explicit_cokernel_desc

Riccardo Brasca (Oct 14 2021 at 14:35):

Very nice!

Adam Topaz (Oct 14 2021 at 14:42):

Adam Topaz said:

It looks like we need to make explicit some of the variables in explicit_cokernel_desc

explicit_cokernel_desc should have variables similar to docs#category_theory.limits.cokernel.desc -- If I have time later today, I will try to make a mathlib PR with a fix.

Riccardo Brasca (Oct 14 2021 at 14:47):

I just opened #9712 to have explicit_cokernel.map and explicit_coker.map_desc. Even with your one line proof they seem useful to have.


Last updated: Dec 20 2023 at 11:08 UTC