Zulip Chat Archive

Stream: maths

Topic: submodules of a graded module


Kevin Buzzard (Oct 06 2023 at 13:52):

My student @FMLJohn just asked me the following question, which has stumped me. He has a graded ring A=iAiA=\oplus_i A_i and a graded AA-module M=iMiM=\oplus_i M_i (all sums over Nat). Note that AA might be a polynomial ring, it's not literally equal to the direct sum, it's internally graded, and the same is true for MM. Here's how one might set this up:

variable {A : Type } [CommRing A]
variable (𝒜 :   Submodule  A) [GradedRing 𝒜]
variable {M : Type } [AddCommGroup M] [Module A M]
variable ( :   Submodule  M) [SetLike.GradedSmul 𝒜 ] [DirectSum.Decomposition ]

Note that A0A_0 is a subring of AA. He can put things like "MiM_i is an A0A_0-module$$" into the typeclass inference system, but he can't put things like "iMi\oplus_iM_i is an AA-module" in, because the typeclass inference system can't see 𝒜 . A #mwe of a failure:

import Mathlib

variable {A : Type } [CommRing A]
variable (𝒜 :   Submodule  A) [GradedRing 𝒜]
variable {M : Type } [AddCommGroup M] [Module A M]
variable ( :   Submodule  M) [SetLike.GradedSmul 𝒜 ] [DirectSum.Decomposition ]

instance : Module A ( (i : ),  i) := GradedModule.isModule 𝒜 

The (expected) error is cannot find synthesization order...all remaining arguments have metavariables

Does this mean that there should be some typeclass HasGrading A which carries 𝒜 around? John would like to make things like itMi\oplus_{i\geq t}M_i into an AA-module, for example. This comes up in the theory of Hilbert-Poincar\'e series.

Eric Wieser (Oct 06 2023 at 17:04):

Can you make do by replacing A with the direct sum of its pieces?

Eric Wieser (Oct 06 2023 at 17:04):

The problem with HasGrading is that I think it's rare to have a canonical grading

Kevin Buzzard (Oct 06 2023 at 17:41):

I suspect that we can. Is this really what we have to do though? It's going to get really messy when we have an A-module and a iAi\oplus_i A_i-module and want to consider, say their tensor product. I should say that I don't think that this will happen for the current application though.

Antoine Chambert-Loir (Oct 07 2023 at 11:20):

In our work with Maria Ines, we had the impression that some basic work on graded stuff is still missing. For example, quotients of submodules, or graduations which are not indexed by the same thing on the ring and on the module (some action of one on the other would be required, of course ).

Kevin Buzzard (Oct 07 2023 at 11:55):

In alg geom it's pretty common to have the rings indexed by N\N and the modules by Z\Z.

Eric Wieser (Oct 07 2023 at 14:37):

The (non-categorical) graded stuff is still fairly young in mathlib; @Jujian Zhang and I put a few things in, but I haven't seen much other work on it yet.

Eric Wieser (Oct 07 2023 at 14:39):

Sounds like for your use case Kevin, the grades should combine with +ᵥ instead of +

Eric Wieser (Oct 07 2023 at 14:41):

(which would be an easy refactor!)

Eric Wieser (Oct 08 2023 at 22:17):

Done in #7573

Antoine Chambert-Loir (Oct 09 2023 at 08:40):

Great!

Eric Wieser (Oct 09 2023 at 09:22):

There's a long tail here though; I don't think we have the fact that Nat acts additively on Int

Eric Wieser (Oct 09 2023 at 09:22):

And we certainly don't have the fact that Nat acts additively on any docs#AddMonoidWIthOne

Eric Wieser (Oct 09 2023 at 09:24):

(tangentially, there are some simple results about graded rings in #7574/ #7575/ #7577 that would be nice to have)

Antoine Chambert-Loir (Oct 09 2023 at 09:31):

The point is that not only should one haveNat acting on Int, but also Nat ^ n acting on Int ^ n, or, but that would be more natural Macting on N for any M : SubAddMonoid N where AddMonoid N.

Damiano Testa (Oct 09 2023 at 09:34):

Something like that already exists: docs#AddSubmonoid.addAction.

Damiano Testa (Oct 09 2023 at 09:35):

However, Nat is not a submonoid of Int. :upside_down:

Antoine Chambert-Loir (Oct 09 2023 at 09:48):

yes, and of course it is not…

Eric Wieser (Oct 09 2023 at 09:52):

Antoine Chambert-Loir said:

but also Nat ^ n acting on Int ^ n

This strategy is dangerous; how does Nat ^ n act on (Nat ^ n) ^ n?

Eric Wieser (Oct 09 2023 at 09:52):

(we have the action you ask for already, it's docs#Pi.vadd'; but it's also diamond-inducing)

Antoine Chambert-Loir (Oct 09 2023 at 10:56):

I observe that mathlib's tendency is to have all actions as implicit instances. I don't think that this is how mathematicians work.

Eric Wieser (Oct 09 2023 at 10:57):

I think arguably the actions that mathematicians wouldn't write implicitly (such as Pi.vadd'?) shouldn't be instances

Eric Wieser (Oct 09 2023 at 10:58):

But presumably you agree that a mathematical would write rv for the multiplicative action of r : R on v : R ^ n with the action implicit?

Antoine Chambert-Loir (Oct 09 2023 at 12:48):

Yes, s·he would, but only within a restricted amount of time would this notation be fixed to some definition, while a mathlib instance is like a Bourbaki definition: it's once and for all, bis ins Ewigkeit.

Yaël Dillies (Oct 09 2023 at 12:51):

Eric Wieser said:

There's a long tail here though; I don't think we have the fact that Nat acts additively on Int

I added that a year ago

Antoine Chambert-Loir (Oct 09 2023 at 12:53):

The work of @Sebastien Gouezel on the change of variable formula (more precisely on Suslin's theorem) shows that it is possible to handle a series of instances (in his case, many topological space structures on the same type), but it becomes complicated to do so when other instances depend on them. Actions are one thing, but there are also assumptions that they commute together, etc.

Eric Wieser (Oct 09 2023 at 12:55):

Yaël Dillies said:

I added that a year ago

@loogle Nat, Int, VAdd

loogle (Oct 09 2023 at 12:55):

:shrug: nothing found

Antoine Chambert-Loir (Oct 09 2023 at 12:56):

it's v0 of the @yael engine, which only says “it exists because I wrote it”.
when zulip has the v1, it will give the precise location.

Eric Wieser (Oct 09 2023 at 12:58):

V0 also occasionally has this bug where they refer to an unmerged Lean 3 PR

Eric Wieser (Oct 19 2023 at 13:13):

Eric Wieser said:

Done in #7573

The conversation here has gotten side-tracked a little; it would be great if someone could give this a reivew!


Last updated: Dec 20 2023 at 11:08 UTC