Skip to content

About

Mockup implementation of Hilbert Modular Forms

Resources

Stars

10 stars

Watchers

9 watching

Forks

Repository files navigation

hilbertmodularforms

A Magma package for computing with Hilbert modular forms over totally real number fields, and with Hilbert modular surfaces. It extends Magma's built-in ModFrmHil with q-expansion bases, surface invariants, Hirzebruch–Zagier divisors, and canonical rings.

Papers

This package accompanies two papers:

  • Computing with Fourier expansions of Hilbert modular forms (in preparation).
  • A database of basic numerical invariants of Hilbert modular surfaces, LuCaNT proceedings; arXiv:2301.10302.

Loading the package

Requires Magma. Attach the package via its top-level spec file:

AttachSpec("spec");

A convenience file config.m is also provided, which attaches the spec and sets a few sensible defaults (e.g. SetClassGroupBounds("GRH")).

Tests

Tests live in Tests/ and are run via the included Makefile:

make check                  # Tests/ and examples/, using all CPU cores
make check-slow             # Tests/slow/ and examples/slow/
make check/<testfile.m>      # one file; check/slow/<testfile.m> for a slow file
make debug/<testfile.m>     # run a single test with debug-on-error
make clean                  # clear cached precomputed data

CI runs Tests/ and examples/ on master pushes and pushes to ready PRs without merge conflicts. Files taking over about 20 minutes belong in Tests/slow/ or examples/slow/, run nightly on master. Start the Tests workflow from the Actions tab to run both tiers on any branch. CI skips known failures whose filenames start with an underscore.

Each test file is a Magma script that uses assert. Individual tests can also be run directly:

magma -b filename:=Tests/<testfile.m> exitsignal:='' run_tests.m

Source code

Brief explanations of each top-level directory.

ModFrmHil

Patches and extensions to Magma's built-in Hilbert modular forms implementation (Hecke and diamond operators, the definite case, precomputation hooks).

ModFrmHilD

The core of the package — the D stands for Dartmouth, where the project originated. The type hierarchy is

ModFrmHilDGRng  >  ModFrmHilD  >  ModFrmHilDElt  >  ModFrmHilDEltComp

with subdirectories for form creation (Creation/ — Eisenstein, theta, base change, dihedral, trace forms), canonical rings (CanonicalRing/), and trace formula data (Trace/).

HilbertSeries

Formulas for Hilbert series of Hilbert modular surfaces.

Verification

Code to verify computed equations against equations in the literature.

spec files

Package specification files; see the Magma handbook section on packages.

Examples and work in progress

  • examples/ holds the papers' worked examples; examples/slow/ holds the expensive cases, run nightly. See examples/README.md for the files by paper section.
  • WorkInProgress/ contains demonstrations and exploratory scripts that may or may not currently run end-to-end.

Scripts and data

Scripts in scripts/ generate data for hilbertmodularsurfacesdata, which in turn feeds https://alpha.lmfdb.xyz/HilbertModularSurface/Q/. Each script documents its calling convention at the top of the file. For example:

magma -b D:=13 ambient:=SL gamma:=Gamma0 scripts/generate_hs.m

For parallel runs across many discriminants we use GNU Parallel, e.g.:

A=GL; G=Gamma0; t=hs
parallel -j 64 magma -b D:={} ambient:=$A gamma:=$G scripts/generate_${t}.m ::: {1..3000}

License

BSD 3-Clause. See LICENSE.

Authors

About

Mockup implementation of Hilbert Modular Forms

Resources

Stars

10 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages