Skip to content

Hecke.jlComputational number theory for everyone

A fast, open-source computer algebra system for computational number theory

Hecke.jl

Getting Started

Hecke.jl is a software package for the Julia programming language. Currently, Hecke.jl requires that a Julia version of at least 1.0 is installed (the latest stable Julia version will do). See https://julialang.org/downlaods/ for instructions on how to install Julia for your system.

Once a suitable version of Julia is installed, users can start a Julia REPL (e.g. by typing julia in the command line) and then enter the following commands to add Hecke.jl to their installation.

julia
julia> using Pkg

julia> Pkg.add("Hecke")

Afterwards, to use Hecke.jl in Julia, users can simply include the using Hecke command at the beginning of any session.

julia
julia> using Hecke
 _    _           _
| |  | |         | |         |  Software package for
| |__| | ___  ___| | _____   |  algorithmic algebraic number theory
|  __  |/ _ \/ __| |/ / _ \  |
| |  | |  __/ (__|   <  __/  |  Manual: https://thofma.github.io/Hecke.jl
|_|  |_|\___|\___|_|\_\___|  |  Version 0.37.6

julia>

Here's a quick example of using Hecke.jl to define a number field and compute its class group.

julia
julia> using Hecke

julia> Qx, x = QQ[:x];

julia> f = x^2 - 2*3*5*7;

julia> K, a = number_field(f, :a);

julia> OK = maximal_order(K);

julia> C, mC = class_group(OK);

julia> C
(Z/2)^2

Other examples of Hecke's usage can be found in the How-to Guides section of this website. More in-depth resources are provided by our Tutorials, which are guided walkthroughs to using Hecke, and by the Manual, which gives a complete list of Hecke's implemented functionality.

Features

Hecke currently provides functionliaty to enable a number of computations in number theory and commutative algebra. Some of the features implemented by Hecke include:

  • Number fields (absolute, relative, simple and non-simple),

  • Orders and ideals in number fields,

  • Class and unit group computations of orders,

  • Lattice enumeration,

  • Sparse linear algebra,

  • Class field theory,

  • Abelian groups,

  • Associative algebras,

  • Ideals and orders in (semisimple) associative algebras,

  • Locally free class groups of orders in semisimple algebras,

  • Quadratic and Hermitian forms and lattices.

See the Manual for a complete list of implemented functionality.

Citing Hecke

If your research depends on computations done with Hecke, please consider giving us a formal citation:

@inproceedings{nemo,
    author = {Fieker, Claus and Hart, William and Hofmann, Tommy and Johansson, Fredrik},
     title = {Nemo/Hecke: Computer Algebra and Number Theory Packages for the Julia Programming Language},
 booktitle = {Proceedings of the 2017 ACM on International Symposium on Symbolic and Algebraic Computation},
    series = {ISSAC '17},
      year = {2017},
     pages = {157--164},
  numpages = {8},
       url = {https://doi.acm.org/10.1145/3087604.3087611},
       doi = {10.1145/3087604.3087611},
 publisher = {ACM},
   address = {New York, NY, USA},
}

Contributing to Hecke

Hecke is an open-source software package licensed under the permissive BSD 2-Clause "Simplified" License. Copyright is held by Hecke's contributors https://github.com/thofma/Hecke.jl/graphs/contributors.

For users that would like to contribute to the development of Hecke.jl, please see the For Developers section of the manual.

Acknowledgement

Hecke is part of the OSCAR project and the development is supported by the Deutsche Forschungsgemeinschaft DFG within the Collaborative Research Center TRR 195.