Zulip Chat Archive

Stream: condensed mathematics

Topic: 0 \ne 0


Johan Commelin (Apr 13 2022 at 11:33):

I just got bitten by

@abelian.has_zero_object.{u u+1} Ab.{u} AddCommGroup.large_category.{u} AddCommGroup.category_theory.abelian.{u}
 =
AddCommGroup.has_zero_object.{u}

Johan Commelin (Apr 13 2022 at 11:38):

cc @Scott Morrison
This showed up in a version of homology = homology

Johan Commelin (Apr 13 2022 at 11:38):

Should has_zero_object be a Prop?

Scott Morrison (Apr 13 2022 at 11:38):

Yes. :-)

Scott Morrison (Apr 13 2022 at 11:39):

I guess it was missed in the big Prop-ification of the limits API.

Scott Morrison (Apr 14 2022 at 03:32):

I had a quick go at this. I run into trouble because this helpful @[simp] lemma is no longer true:

@[simp] lemma functor.zero_obj {B : Type*} [category B] [has_zero_morphisms C] (X : B) :
  (0 : B  C).obj X = 0 := rfl

Scott Morrison (Apr 14 2022 at 03:32):

Because 0 is now produced using choice, there is no reason to expect (0 : B ⥤ C).obj X should be the previously chosen 0: it should be any other (isomorphic) zero object.

Scott Morrison (Apr 14 2022 at 03:55):

I think resolving this cleanly will requiring installing the is_zero_object predicate in mathlib. If no one has tackled this in a week I will try to get to it then.

Johan Commelin (Apr 14 2022 at 04:21):

Thanks for diving into this. Note that there is already a lot of API for is_zero(_object) in LTE.

Scott Morrison (Apr 14 2022 at 04:46):

Pity it's not in mathlib. :-)

Johan Commelin (Apr 19 2022 at 10:35):

Here's a first PR: https://github.com/leanprover-community/mathlib/pull/13511

Johan Commelin (Apr 19 2022 at 13:41):

I'm working on turning has_zero_object into a Prop. There are way too many instances of this class in mathlib :see_no_evil: :grinning:

Johan Commelin (Apr 19 2022 at 14:28):

Here's the next PR:

refactor(category_theory): make has_zero_object a Prop #13517


Last updated: Dec 20 2023 at 11:08 UTC