sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.33k stars 453 forks source link

Implementation of the q-bracket #32366

Open DavidAyotte opened 3 years ago

DavidAyotte commented 3 years ago

This ticket's goal is to implement the q-bracket and related functions in order to verify the Bloch-Okounkov theorem. A reference about the subject is the paper by Zagier:

Partitions, quasimodular forms and the Bloch-Okounkov theorem, https://people.mpim-bonn.mpg.de/zagier/files/doi/10.1007/s11139-015-9730-8/bloch-okounkov.pdf

This ticket is part of the GSoC 2021 project about quasimodular forms, see the task ticket #31560.

This code will be marked as experimental, but a more formal, non-experimental, implementation shall be done in the future (using shifted symmetric polynomials).

The code of this ticket is located in the following new directory:

sage/combinat/shifted_symmetric_functions/

Depends on #32357

CC: @videlec @slel

Component: combinatorics

Keywords: quasimodular forms, Bloch-Okounkov

Author: David Ayotte

Branch/Commit: u/gh-DavidAyotte/block_okounkov @ c3e7136

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

DavidAyotte commented 3 years ago

Changed keywords from none to quasi modular forms block okounkov

DavidAyotte commented 3 years ago

Branch: u/gh-DavidAyotte/block_okounkov

slel commented 3 years ago

Description changed:

--- 
+++ 
@@ -1,4 +1,4 @@
-This ticket's goal is to implement the q-bracket and related functions in order to verify the Block-Okounkov theorem. A reference about the subject is the paper by Zagier: 
+This ticket's goal is to implement the q-bracket and related functions in order to verify the Bloch-Okounkov theorem. A reference about the subject is the paper by Zagier: 

 *Partitions, quasimodular forms and the Bloch-Okounkov theorem*, 
 https://people.mpim-bonn.mpg.de/zagier/files/doi/10.1007/s11139-015-9730-8/bloch-okounkov.pdf
slel commented 3 years ago

Commit: ffded0a

slel commented 3 years ago
comment:3

Careful, it's Spencer Bloch, not Block.


Last 10 new commits:

094d64aNew methods in ring.py: ngens, polynomial_ring, from_polynomial. New methods in element.py: to_polynomial, weights_list, is_homogeneous, weight, homogeneous_components.
c8fb9d1fix some docstring. small fix.
6057a6ffix failing doctests, pyflakes, block, tiple colon
c3307e4first implementation of serre derivative
cfb6696fix mistake
37610fcadded examples, fix computations over arbitrary base rings
91eb0a5minor fix
a18d0abMerge branch 'derivative_of_modular_forms' into derivative_modform
6705fccimplement derivative for graded forms and quasiforms
ffded0aadded Hn function
slel commented 3 years ago

Changed keywords from quasi modular forms block okounkov to quasimodular forms, Bloch-Okounkov

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 3 years ago

Changed commit from ffded0a to 1763120

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 3 years ago

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

77e8a3dadd congruence subgroups support
6884d6dadd input parsing for q-expansions in _element_constructor_
31432aefixed input parsing for q-expansion, added documentation to reference manual, added a bibliographical reference
5ef7767Merge branch 't/31559/make_modularformrings_manipulate_formal_objects' into t/31512/implementation_of_the_graded_quasimodular_forms_ring
377d88bresolved merge conflicts
100f079added missing newline, fix capitalization of title
71ba9f0fixed merge conflicts
4b3c890Merge branch 'quasiform_to_from_polynomial' into derivative_modform
52584abfix docbuild errors
1763120Merge branch 'derivative_modform' into block_okounkov
DavidAyotte commented 3 years ago
comment:5

To make the commit history clear, I must mention that I added the q_bracket function in this commit:

https://github.com/sagemath/sagetrac-mirror/commit/cb29e98053fca6818e365a36a4c22fa46f7f1e3c

(Everything outside sage/combinat/shifted_symmetric_functions/ does not belong to this ticket).

Unfortunately, I don't think the code is correct because the output seems wrong when I test it for a shifted symmetric polynomial different than a generator of the ring of shifted symmetric polynomial.

For examples, this is correct:

sage: from sage.combinat.shifted_symmetric_functions.q_bracket import *
sage: P.<Q1, Q2, Q3, Q4> = QQ[]
sage: q_bracket(Q2)
-1/24*P
sage: q_bracket(Q4)
1/1152*P^2 + 1/2880*Q

(by correct, I mean that the computations are the same as the ones given in the Appendix of the paper by Zagier)

However, this is not correct:

sage: q_bracket(Q2^2)
1/576*P^2 + 1/1440*Q

By the table of Zagier, it should be equal to -1/576*P^2 + 1/288*Q. I would be really grateful if someone could help me figure out why my code return the wrong answer! Thanks!

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 2 years ago

Changed commit from 1763120 to c3e7136

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 2 years ago

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

936b3b6fix docbuild errors
782d722Merge branch 'develop' into quasiform_to_from_polynomial
d4eb6cdfix small error
9143312Merge branch 'quasiform_to_from_polynomial' into derivative_modform
c3e7136Merge branch 'derivative_modform' into block_okounkov