Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of the graded quasimodular forms ring #31512

Closed
DavidAyotte opened this issue Mar 18, 2021 · 65 comments
Closed

Implementation of the graded quasimodular forms ring #31512

DavidAyotte opened this issue Mar 18, 2021 · 65 comments

Comments

@DavidAyotte
Copy link
Member

The goal of this ticket is to implement the graded ring of quasimodular forms. More precisely, the goal is to first implement a class named QuasiModularFormsRing with similar methods and features as the class ModularFormsRing (though see #31559).

This ticket is part of #31560

Depends on #31559
Depends on #32135

CC: @slel @videlec

Component: modular forms

Keywords: quasimodular-forms gsoc2021

Author: David Ayotte

Branch/Commit: 20e633e

Reviewer: Vincent Delecroix

Issue created by migration from https://trac.sagemath.org/ticket/31512

@DavidAyotte
Copy link
Member Author

@DavidAyotte
Copy link
Member Author

Commit: 7b029ad

@DavidAyotte
Copy link
Member Author

New commits:

7b029adInitial implementation of quasimodular forms

@DavidAyotte DavidAyotte self-assigned this Mar 18, 2021
@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Mar 18, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

d9940aaFixed some typos and syntax in the documentation

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Mar 18, 2021

Changed commit from 7b029ad to d9940aa

@slel

This comment has been minimized.

@videlec
Copy link
Contributor

videlec commented Mar 19, 2021

comment:5

Hi David,

Great start.

Let us stick to SL(2,Z) in this ticket. Further improvements (other congruence subgroups, Bloch-Okounkov brackets should be reserved for other tickets).

Some concrete remarks

  • QuasiModularFormsRing could simply be QuasiModularForms
  • The main class should inherit from Parent and the category should be properly initialized, see https://doc.sagemath.org/html/en/thematic_tutorials/coercion_and_categories.html
  • The objective is to manipulate exact formal objects. Not approximate q-series. The following operations should be available on the elements
    • equality tests between two qm-forms
    • decomposition of a qm-form with respect to the grading (ie by level)
    • testing modularity
    • computing the q-series expansion of a qm-form (arbitrary precision)
    • multiplication by a modular form (maybe the simplest to achieve this is to define qm-forms as an algebra over modular forms?)
    • (further ticket) computing algebraic or differential equations (for that purpose it is necessary to have formal derivatives, not the derivative of the q-expansion)
    • (further ticket) asymptotics of coefficients
  • The following methods should be available on the parent (the algebra itself)
    • vector space basis of a given graded component
    • basis and generators up to modular forms

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Mar 24, 2021

Changed commit from d9940aa to 9fa1397

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Mar 24, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

9fa1397Changed the name of the main class to QuasiModularForms. Added inheritance from Parent and UniqueRepresentation. Implemented category framework to the main class

@DavidAyotte
Copy link
Member Author

comment:7

Replying to @sagetrac-git:

Branch pushed to git repo; I updated commit sha1. New commits:

9fa1397Changed the name of the main class to QuasiModularForms. Added inheritance from Parent and UniqueRepresentation. Implemented category framework to the main class

I just realized that there are some inconsistencies in the code of that commit. They will be fixed this week.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Mar 25, 2021

Changed commit from 9fa1397 to 13a2441

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Mar 25, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

13a2441Implementation of QuasiModularFormsElement class. Fixed some inconsistencies in the code. The default precision is now 6 (to be consistent with classical ModularForms)

@videlec

This comment has been minimized.

@videlec
Copy link
Contributor

videlec commented Mar 25, 2021

Changed keywords from graded quasimodular forms gsoc2021 to quasimodular-forms gsoc2021

@videlec videlec added this to the sage-9.4 milestone Mar 25, 2021
@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jun 9, 2021

Changed commit from 13a2441 to 8433a5a

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jun 9, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

0ef06e3Initial implementation of quasimodular forms
39642c2Fixed some typos and syntax in the documentation
33d0897Changed the name of the main class to QuasiModularForms. Added inheritance from Parent and UniqueRepresentation. Implemented category framework to the main class
f6d57bfImplementation of QuasiModularFormsElement class. Fixed some inconsistencies in the code. The default precision is now 6 (to be consistent with classical ModularForms)
8433a5aMerge branch 'u/gh-DavidAyotte/implementation_of_the_graded_quasimodular_forms_ring' of trac.sagemath.org:sage into t/31512/implementation_of_the_graded_quasimodular_forms_ring

@mkoeppe mkoeppe modified the milestones: sage-9.4, sage-9.5 Jul 19, 2021
@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 22, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

f921724Merge branch 'develop' into t/31512/implementation_of_the_graded_quasimodular_forms_ring

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 22, 2021

Changed commit from 8433a5a to f921724

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 28, 2021

Changed commit from f921724 to 45f1791

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jul 28, 2021

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

c4595c1Merge branch 'gamma1_modform_conversion' into t/31559/make_modularformrings_manipulate_formal_objects
a6c745dsmall fixes
906b8abfixes: pyflakes, failing doctest in find_generators
523c7b0fix some doctring
7dbaf4efix indentation error
5887973fix docstring, changed some syntax, removed `_rmul_`, add negative weight checker for `__getitem__`, fix weight of zero element bug
7fdca22changed `_repr_` method of ModularFormsRing, added TestSuite in doctests, added some_elements method, fixed conversion bug
1b9332emoved sage.modular.modform.find_generators.py in sage.rings, attempt at making decrecation work (without success)
4305360Merge branch 't/31559/make_modularformrings_manipulate_formal_objects' into t/31512/implementation_of_the_graded_quasimodular_forms_ring
45f1791Major changes: Implementation of `_add_`, `_mul_`, `_lmul_`, __neg__. Added Docstring. Implemented conversion. Added generators methods.

@DavidAyotte
Copy link
Member Author

Dependencies: #31559

@videlec
Copy link
Contributor

videlec commented Aug 16, 2021

comment:28

Why is it only implemented for SL(2,Z)? The isomorphism QM = M[E2] is valid in general.

@videlec
Copy link
Contributor

videlec commented Aug 16, 2021

comment:29

typo: def weigt_2_eisenstein_series(self): (missing a h)

@DavidAyotte
Copy link
Member Author

comment:30

Replying to @videlec:

Why is it only implemented for SL(2,Z)? The isomorphism QM = M[E2] is valid in general.

I will check if this doesn't break anything, but I mostly stick to the case of SL2Z because of comment:5. But thanks for reminding me this isomorphism, it should not be a problem.

@videlec
Copy link
Contributor

videlec commented Aug 16, 2021

comment:31

Better to switch DAVID AYOTTE -> David Ayotte

@videlec
Copy link
Contributor

videlec commented Aug 16, 2021

comment:32

Maybe we made a mistake, but the initialization from polynomial is confusing. The reason is that both E2 * E4 - 3 * E2^2 and -1/24 + q + 3*q^2 + 4*q^3 + 7*q^4 + 6*q^5 are polynomials.

@DavidAyotte
Copy link
Member Author

comment:33

Replying to @videlec:

Maybe we made a mistake, but the initialization from polynomial is confusing. The reason is that both E2 * E4 - 3 * E2^2 and -1/24 + q + 3*q^2 + 4*q^3 + 7*q^4 + 6*q^5 are polynomials.

This is in fact really important. To fix this confusion, my idea would be to give more examples and explanations in the doc. Do you have an other idea to fix this?

@videlec
Copy link
Contributor

videlec commented Aug 16, 2021

comment:34

In the case of ModularFormsRing._element_constructor_, when the input is a polynomial the code calls from_polynomial. This is very different from what is happening with the quasimodular forms.

@DavidAyotte
Copy link
Member Author

comment:35

Replying to @videlec:

In the case of ModularFormsRing._element_constructor_, when the input is a polynomial the code calls from_polynomial. This is very different from what is happening with the quasimodular forms.

Ok, so maybe the element constructor of ModularFormsRing should not call from_polynomial. What do you think?

@videlec
Copy link
Contributor

videlec commented Aug 16, 2021

comment:36

Replying to @DavidAyotte:

Replying to @videlec:

In the case of ModularFormsRing._element_constructor_, when the input is a polynomial the code calls from_polynomial. This is very different from what is happening with the quasimodular forms.

Ok, so maybe the element constructor of ModularFormsRing should not call from_polynomial. What do you think?

I think it would be fine to allow both. It just needs more parsing of the input

  • univariate polynomial ring with generator q -> q-expansion (raise a NotImplementedError for now)
  • multivariate polynomial ring with rational or finite field coefficients -> call from_polynomial as it is now.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 16, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

600fdfffix typos
77e8a3dadd congruence subgroups support
6884d6dadd input parsing for q-expansions in _element_constructor_

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 16, 2021

Changed commit from 5a373a3 to 6884d6d

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 30, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

31432aefixed input parsing for q-expansion, added documentation to reference manual, added a bibliographical reference

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Aug 30, 2021

Changed commit from 6884d6d to 31432ae

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Sep 8, 2021

Changed commit from 31432ae to 377d88b

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Sep 8, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

5ef7767Merge branch 't/31559/make_modularformrings_manipulate_formal_objects' into t/31512/implementation_of_the_graded_quasimodular_forms_ring
377d88bresolved merge conflicts

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Sep 8, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

100f079added missing newline, fix capitalization of title

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Sep 8, 2021

Changed commit from 377d88b to 100f079

@videlec
Copy link
Contributor

videlec commented Sep 8, 2021

comment:41

Two small remarks:

In the element, why are you storing both the polynomial and its coefficients? The latter is only used in q_expansion for which you could have use equally the polynomial.

The methods is_modular_form and is_graded_modular_form are not quite right for the zero element as

sage: QQ['x'].zero().degree()
-1

@DavidAyotte
Copy link
Member Author

comment:42

Two small remarks:

In the element, why are you storing both the polynomial and its coefficients? The latter is only used in q_expansion for which you could have use equally the polynomial.

Since the coefficient attribute is used only once, I will drop it.

The methods is_modular_form and is_graded_modular_form are not quite right for the zero element as

sage: QQ['x'].zero().degree()
-1

Oops, thanks for finding this! I had forgotten that there was a special rule for the degree of the zero polynomial. I'll fix this.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Sep 8, 2021

Branch pushed to git repo; I updated commit sha1. New commits:

20e633eremoved _coefficients attribute, fix bug in is_graded_modular_form and is_modular_form, fix pyflakes

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Sep 8, 2021

Changed commit from 100f079 to 20e633e

@vbraun
Copy link
Member

vbraun commented Sep 25, 2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants