Zulip Chat Archive

Stream: mathlib4

Topic: Typeclass for compatible group actions


Thomas Browning (Oct 26 2025 at 15:15):

Given [CommRing R] [CommRing S] [Algebra R S] [Group G] [MulSemiringAction G R] [MulSemiringAction G S], is there a typeclass that imposes compatibility between these actions? I.e., g • algebraMap R S r = algebraMap R S (g • r)?

This condition is equivalent to g • (r • 1) = (g • r) • 1, so IsScalarTower G R S almost works, except that imposing g • (r • s) = (g • r) • s is too strong since implies that G fixes S pointwise (set r = 1).

(This comes up in PR #27053 where I need to impose this compatibility condition but don't know of a nice typeclass for it).

Thomas Browning (Oct 26 2025 at 15:19):

I'm guessing no, since the lemma docs#algebraMap.coe_smul is stated in terms of IsScalarTower (in which case, should there be a new typeclass made for this?).

Thomas Browning (Oct 26 2025 at 15:21):

In terms of , I think the desired condition is just a distributive version of IsScalarTower: g • (r • s) = (g • r) • (g • s).

Aaron Liu (Oct 26 2025 at 15:44):

Thomas Browning said:

This condition is equivalent to g • (r • 1) = (g • r) • 1, so IsScalarTower G R S almost works, except that imposing g • (r • s) = (g • r) • s is too strong since implies that G fixes S pointwise (set r = 1).

I set r = 1, now what? How do I get the fixing pointwise?

Aaron Liu (Oct 26 2025 at 15:45):

oh I get it now

Andrew Yang (Oct 26 2025 at 16:00):

I had this in one of my PRs for this exact reason here. But then I figured I didn't need it in that specific PR so I removed it.

Andrew Yang (Oct 26 2025 at 16:02):

If you are adding this typeclass then I am happy to review it. If not I'll open a new PR containing the deleted content in the above commit.

Thomas Browning (Oct 26 2025 at 16:06):

Nice! I won't have time to get around to this for a few days, so feel free to PR it if you have the time.

Thomas Browning (Oct 28 2025 at 01:10):

Here's a first stab at this: #30991


Last updated: Dec 20 2025 at 21:32 UTC