Zulip Chat Archive
Stream: maths
Topic: Graded ring of modular forms
Chris Birkbeck (Sep 05 2022 at 10:48):
I seem to have run into a cliché when trying to define the graded ring of modular forms. In order to do this I need to check one_mul
, i.e., that multiplying by the one in the ring (in this case given by the identity function (which is a weight zero modular form)) does nothing. The problem is that , how I've defined it, multiplying by 1
takes me from modular forms of weight k
and level Γ
to modular forms of weight k+0
and level Γ
and these two spaces aren't definitionally equal (?).
I seem to remember something similar happening when people tried to define chain complexes (?) but I don't remember what the fix ended up being. So does anyone have a suggestion of how I should fix this?
Kevin Buzzard (Sep 05 2022 at 11:22):
Are you grading externally or internally? Is an abstraction of what you have the following: for each natural you have an abelian group , and for each pair of naturals you have a map satisfying various axioms (because it's pointwise multiplication of functions) and you now want to put a ring structure on the external direct sum of the ?
Chris Birkbeck (Sep 05 2022 at 11:35):
Externally, so your abstraction is correct (if I understand internal vs external correctly!).
Eric Wieser (Sep 05 2022 at 16:58):
Are you aware of docs#direct_sum.gring?
Eric Wieser (Sep 05 2022 at 16:59):
Or possibly docs#set_like.graded_monoid?
Andrew Yang (Sep 05 2022 at 17:30):
I think docs#direct_sum.gring still causes quite some undesired dependent type issues. In particular there isn't a good ext lemma that does not involve heq
's.
I think the solution here is to either introduce ext lemmas stating that pairs with of weight are equal iff and the underlying functions of are equal.
Or, it might be possible to realize modular forms of weight and level as submodules of , the ring of holomorphic functions, and consider the graded ring of modular forms as a graded subalgebra of .
Kevin Buzzard (Sep 05 2022 at 18:21):
The problem with that approach (the "internal" grading approach I mentioned earlier) is that you now have to go off on a tangent to prove that some random nonzero linear combination of modular forms of different weights can't ever be zero (to prove that the sum is direct) (which is true).
Kevin Buzzard (Sep 05 2022 at 18:22):
Oh -- maybe the X
in Andrew's message some kind of dummy grading variable which avoids this problem?
Andrew Yang (Sep 05 2022 at 18:40):
Yes. This was the approach I took when I needed the graded module , by viewing it as a submodule of . It is the reason I made the PR about polynomial modules in the first place.
Junyan Xu (Sep 05 2022 at 18:47):
If the goal is to fill in docs#direct_sum.gring.one_mul, I think you can just use docs#sigma.subtype_ext.
Eric Wieser (Sep 05 2022 at 19:55):
If your types are subtypes then you should use docs#set_like.graded_monoid
Eric Wieser (Sep 05 2022 at 19:55):
Which generates the instance proved in the way @Junyan Xu describes as src#set_like.gring.
Junyan Xu (Sep 05 2022 at 19:57):
Yeah I think they are subtypes defined by the predicate here.
Junyan Xu (Sep 05 2022 at 19:58):
By the way in the original post it's 0+k that's not defeq to k right?
Eric Wieser (Sep 05 2022 at 20:01):
One way to handle equality of direct sums of subtypes is with docs#direct_sum.of_eq_of_graded_monoid_eq, then docs#sigma.subtype_ext
Eric Wieser (Sep 05 2022 at 20:02):
Unfortunately Lean doesn't let us write custom congr lemmas to make that type of thing easier to work with
Andrew Yang (Sep 06 2022 at 03:04):
Ah yes. I now remember that I did not use it as there wasn't a smul version of it. Should there be one?
Eric Wieser (Sep 06 2022 at 07:17):
There's an open PR about graded modules , I've been on vacation and short on time to finish reviewing it
Chris Birkbeck (Sep 06 2022 at 08:08):
Eric Wieser said:
Are you aware of docs#direct_sum.gring?
Yes I've been trying to prove an instance of direct_sum.gcomm_ring
Chris Birkbeck (Sep 06 2022 at 08:12):
Junyan Xu said:
If the goal is to fill in docs#direct_sum.gring.one_mul, I think you can just use docs#sigma.subtype_ext.
hmm ok let me try and see if I can get this to work
Chris Birkbeck (Sep 06 2022 at 13:01):
Ok that worked! thanks! It seems I was being a bit to dramatic about what the problem was :P
Eric Wieser (Sep 07 2022 at 05:22):
@Chris Birkbeck, to reiterate an above message, you should instead probably be providing an instance of docs#set_like.graded_monoid which will be easier and provide you the gring instance automatically
Chris Birkbeck (Sep 07 2022 at 09:27):
Ah I was a bit careless and didn't notice the set_like
at the start of your link. I just continued and proved gcomm_ring
directly. Other than it being easier to define, are they any other advantages to using this?
Eric Wieser (Sep 07 2022 at 23:47):
It's a stronger typeclass too, and therefore gives you access to lemmas that would otherwise not be available
Last updated: Dec 20 2023 at 11:08 UTC