Zulip Chat Archive

Stream: maths

Topic: Naming for `monoid_algebra k G`


Eric Wieser (Oct 11 2020 at 16:09):

monoid_algebra k G is defined by mathlib as finsupp G k. When working with finsupp a b, we can call a the domain and b the codomain (and do so in lemma names, eg docs#finsupp.map_domain).

Since monoid_algebra doesn't define has_coe_to_fun (and @Scott Morrison argues it should not), the terminology of domain and codomain doesn't really make sense when stating lemmas about it.

What terminology should I use instead?

Adam Topaz (Oct 11 2020 at 17:31):

It just so happens that this algebra has a basis indexed by G. That's why (from a mathematical perspective) one should not name anything the domain and/or codomain.

Adam Topaz (Oct 11 2020 at 17:31):

What object do you want terminology for precisely?

Eric Wieser (Oct 11 2020 at 17:37):

I want a name for the mappings from monoid_algebra G1 k1 to monoid_algebra G2 k1 and monoid_algebra G1 k2. map_G fG and map_k fk are lousy names, and I know to avoid names with domain or codomain in them

Eric Wieser (Oct 11 2020 at 17:38):

map_index and map_basis?

Adam Topaz (Oct 11 2020 at 17:39):

Well the second map is a base change, and the first one is a special case of the universal property.

Adam Topaz (Oct 11 2020 at 17:40):

So I think they should already have names, no?

Eric Wieser (Oct 11 2020 at 17:44):

If you're asking if the lemmas already exist, they do not. If you're asking if we have names for similar concepts elsewhere we can reuse, then I haven't looked at enough of elsewhere to know.

Adam Topaz (Oct 11 2020 at 17:46):

Can you give an example of a lemma you would like to name?

Eric Wieser (Oct 11 2020 at 17:58):

Sure, the map_domain_mul from #4402. Ideally that lemma wouldn't even be stated in terms of finsupp.map_domain, and that file would provide the same operation under a better name monoid_algebra.map_... (which would eliminate the messy type ascriptions from that lemma statement)

Adam Topaz (Oct 11 2020 at 18:08):

I'm a bit confused. Is it proven somewhere that monoid_algebra G k is functorial in G?

Adam Topaz (Oct 11 2020 at 18:08):

Or is that what you're working on proving?

Eric Wieser (Oct 11 2020 at 19:02):

I'm afraid I don't know the meaning of "functorial in G" there, so can't really answer your question

Kevin Buzzard (Oct 11 2020 at 20:26):

If you have a monoid hom from G to H, does Lean already know that this induces a semiring hom from k[G] to k[H]?

Kevin Buzzard (Oct 11 2020 at 20:27):

i.e. is the construction G maps to k[G] the construction on objects underlying a functor from the category of monoids to the category of semirings?

Eric Wieser (Oct 11 2020 at 20:37):

Thanks Kevin for expanding - that first statement is indeed exactly what lean does not know and I want to teach it in with the map_domain_mul lemma in the linked PR

Eric Wieser (Oct 11 2020 at 20:38):

While that second statement nicely captures all the ideas I am not yet familiar with.

Adam Topaz (Oct 11 2020 at 21:09):

Sorry, I've been away for a little while.

One thing to note is that mathlib has this: docs#monoid_algebra.lift
This together with the canonical map G \to monoid_algebra G k (which should be a morphism of monoids) can be combined to obtain functoriality.

Eric Wieser (Oct 11 2020 at 22:06):

That's where this all started - to my eye that lift is insufficiently general, and I needed to generalize further to implement #4321

Eric Wieser (Oct 11 2020 at 22:08):

You can see the generalization in the lift_aux lemma

Kevin Buzzard (Oct 11 2020 at 22:12):

So you need that the map from H to k[H] is a monoid hom as well, and then you get a monoid hom from G to k[H] which lifts to a k-algebra hom from k[G] to k[H].

Adam Topaz (Oct 11 2020 at 22:20):

Kevin Buzzard said:

So you need that the map from H to k[H] is a monoid hom as well, and then you get a monoid hom from G to k[H] which lifts to a k-algebra hom from k[G] to k[H].

Mathlib doesn't have the fact that the map from G to k[G] is a monoid hom?! :surprise:

Kevin Buzzard (Oct 12 2020 at 06:27):

I didn't look, I was just sketching how to use lift to get what we wanted

Eric Wieser (Oct 12 2020 at 08:31):

Adam Topaz said:

Mathlib doesn't have the fact that the map from G to k[G] is a monoid hom?! :surprise:

No, that exists: docs#monoid_algebra.of

Eric Wieser (Oct 12 2020 at 10:44):

What should the name be for the canonical map k → monoid_algebra k G? It's defeq to finsupp.single 1, but single doesn't seem like a good name to keep using in monoid_algebra-land

Adam Topaz (Oct 12 2020 at 12:22):

That's the algebra map

Eric Wieser (Oct 12 2020 at 12:24):

Not when k is not a commutative ring

Kevin Buzzard (Oct 12 2020 at 12:25):

what other k did you have in mind?

Eric Wieser (Oct 12 2020 at 12:26):

The free algebra

Adam Topaz (Oct 12 2020 at 12:27):

Oh and G is N? I.e. you're working on the grading of the free algebra?

Kevin Buzzard (Oct 12 2020 at 12:28):

so non-commutative rings? Do group rings work over non-commutative rings?

Kevin Buzzard (Oct 12 2020 at 12:28):

Oh you make the group commutative instead?

Eric Wieser (Oct 12 2020 at 12:29):

To elaborate on @Adam's point: I'm defining the grading of the free algebra as (free_algebra R X) →ₐ[R] add_monoid_algebra (free_algebra R X) ℕ

Eric Wieser (Oct 12 2020 at 12:30):

Where add_monoid_algebra (free_algebra R X) ℕ is isomorphic to monoid_algebra (free_algebra R X) (multiplicative ℕ) if that helps (although mathlib doesn't know that yet)

Adam Topaz (Oct 12 2020 at 12:33):

I don't know whether monoid rings work over non commutative rings, but in this case it's the polynomial ring, so it's fine.

Adam Topaz (Oct 12 2020 at 12:35):

Note that the algebra map would not give the grading in this case

Adam Topaz (Oct 12 2020 at 12:35):

You need the map sending elements of X to degree 1

Adam Topaz (Oct 12 2020 at 12:35):

Not 0

Eric Wieser (Oct 12 2020 at 12:37):

Yes, I have that already

Eric Wieser (Oct 12 2020 at 12:38):

Although now you mention it it sounds like I may have messed up a refactor

Adam Topaz (Oct 12 2020 at 12:49):

My point is that this map does not agree with "the" map from k to monoid_algebra G k where k is the free algebra and G is N. By "the" map I mean the map you get from the theory of monoid rings.

Eric Wieser (Oct 12 2020 at 12:58):

Indeed - it turns out the question I'm asking is not useful for grading the free algebra

Eric Wieser (Oct 12 2020 at 13:00):

But,for the question I asked, it's still not algebra.algebra_map either, since that maps R into algebra R (monoid_algebra G k) and I want to map k

Adam Topaz (Oct 12 2020 at 13:04):

You're right. I would call it const or scalar for "constants" or "scalars".

Adam Topaz (Oct 12 2020 at 13:39):

I'm surprised mathlib doesn't have this ring hom already...

Eric Wieser (Oct 12 2020 at 13:41):

I've added it in #4582, but before we had this conversation

Eric Wieser (Oct 12 2020 at 13:42):

So the name(s) are currently a mouthful

Adam Topaz (Oct 12 2020 at 13:51):

@Eric Wieser https://github.com/leanprover-community/mathlib/blob/0bfc68fcabfca3ea05d144479145d3ac8ba4fa91/src/algebra/monoid_algebra.lean#L252

Adam Topaz (Oct 12 2020 at 13:53):

docs#monoid_algebra.algebra_map'

Eric Wieser (Oct 12 2020 at 13:53):

I know, I removed those lines in my PR

Eric Wieser (Oct 12 2020 at 13:55):

algebra_map' ring_hom.id is the thing we're talking about, but with the proposed name const (= single_one_ring_hom in that PR), algebra_map' = const.comp, suggesting that const is the more primitive (and therfore useful) definition. The fact that the proof is shorter is also a good indication that const is a better thing to have.


Last updated: Dec 20 2023 at 11:08 UTC