Zulip Chat Archive

Stream: maths

Topic: monoid_hom.map


Kevin Buzzard (Jan 21 2022 at 08:56):

This is either a technical point or me fussing about nothing. I was just developing group theory from scratch for my undergraduate course (so no monoids) and afterwards I realised I'd put map (f : group_hom G H) : subgroup G -> subgroup H in the group_hom namespace rather than the subgroup namespace. Is there a category-theoretic reason that in mathlib it's in the subgroup namespace (i.e. something to do with functor.map), or is it just a convention / "random choice", or is it to do with the fact that group_hom = monoid_hom but subgroup != submonoid?

Eric Wieser (Jan 21 2022 at 08:59):

Certainly the fact that group_hom = monoid_hom (and ring_hom = semiring_hom) is relevant, but we cope with that already with docs#monoid_hom.range vs docs#monoid_hom.mrange and docs#ring_hom.range vs docs#ring_hom.srange

Yury G. Kudryashov (Jan 21 2022 at 21:45):

Also, submonoid.map agrees with list.map, finset.map, filter.map

Kevin Buzzard (Jan 21 2022 at 23:07):

But none of those could be in the morphism namespace because they're all function.map . Here we have a different kind of map

Yury G. Kudryashov (Jan 22 2022 at 16:38):

ring_hom can map at least subrings, subsemirings, and polynomials

Eric Wieser (Jan 22 2022 at 17:22):

Note we have docs#ring_hom.map_matrix, so we could have ring_hom.map_subring to match

Eric Wieser (Jan 22 2022 at 17:23):

Or we fix the functorial machinery so that we can actually use it for this type of thing

Yury G. Kudryashov (Jan 22 2022 at 17:44):

has_map (α β : Type*) (γ : out_param (Type*))?

Yury G. Kudryashov (Jan 22 2022 at 17:46):

(I'm not sure whether we want Type*s or Sort*s)

Kevin Buzzard (Jan 22 2022 at 18:38):

I'm not suggesting fixes or changes -- I was just trying to teach myself the algorithm for learning in which namespace to look for things like functions mapping subgroups to subgroups along group homomorphisms.

Anne Baanen (Jan 24 2022 at 12:42):

This discussion inspired a random idea: would it make sense to define subsemiring.range (f : α → β) := closure (set.range f)?

Kevin Buzzard (Jan 24 2022 at 12:44):

The image of a subsemiring under a ring hom is a subsemiring and the advantage of the "concrete" definition of range (the carrier is the set.range, and then you prove the axioms) is that it's sometimes handy to have x \in subsemiring.range f (when f is a ring hom) to be defeq to \exists a, x = f a. Or am I missing the point?

Anne Baanen (Jan 24 2022 at 12:46):

Right, so I guess I'm asking: is it worth it to lose that defeq in exchange for not having to prove that f is a ring hom ahead of time?

Oliver Nash (Jan 24 2022 at 13:01):

Anne Baanen said:

Right, so I guess I'm asking: is it worth it to lose that defeq in exchange for not having to prove that f is a ring hom ahead of time?

I think you could keep the desired defeq and still allow the user to defer the proof that their map is a ring hom, by defining range so that it consumes a function f together with a proof that set.range f = closure (set.range f).


Last updated: Dec 20 2023 at 11:08 UTC