Skip to content

Hecke

About

Hecke is a software package for algebraic number theory maintained by Claus Fieker, Carlo Sircana and Tommy Hofmann. It is written in julia and is based on the computer algebra package Nemo.

So far, Hecke provides the following features:

  • Orders (including element and ideal arithmetic) in number fields
  • Computation of maximal orders
  • Verified residue computations of Dedekind zeta functions
  • Class and Unit group computation, S-units, PID testing
  • Lattice enumeration
  • Sparse linear algebra
  • Normal forms for modules over maximal orders
  • Extensions of number fields, non-simple extensions of number fields
  • Orders and ideals in extensions of fields
  • Abelian groups
  • Ray class groups, quotients of ray class groups
  • Invariant subgroups
  • Class Field Theory
  • Associative Algebras

Installation

To use Hecke, a julia version of 1.6 is necessary (the latest stable julia version will do). Please see https://julialang.org/downloads/ for instructions on how to obtain julia for your system. Once a suitable julia version is installed, use the following steps at the julia prompt to install Hecke:

julia> using Pkg
julia> Pkg.add("Hecke")

Quick start

Here is a quick example of using Hecke:

julia> using Hecke

Welcome to

    _    _           _
   | |  | |         | |
   | |__| | ___  ___| | _____
   |  __  |/ _ \/ __| |/ / _ \
   | |  | |  __/ (__|   <  __/
   |_|  |_|\___|\___|_|\_\___|

Version 0.22.8...
 ... which comes with absolutely no warranty whatsoever
(c) 2015-2023 by Claus Fieker, Tommy Hofmann and Carlo Sircana


julia> Qx, x = polynomial_ring(FlintQQ, "x");

julia> f = x^3 + 2;

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

julia> O = maximal_order(K);

julia> O
Maximal order of Number field of degree 3 over QQ
with basis AbsSimpleNumFieldElem[1, a, a^2]

The documentation of the single functions can also be accessed at the julia prompt. Here is an example:

help?> absolute_degree
search: absolute_degree absolute_inertia_degree absolute_coordinates is_absolutely_irreducible

  absolute_degree(a::FqField)

  Return the degree of the given finite field over the prime field.

  ─────────────────────────────────────────────────────────────────────────────────────────────────

  absolute_degree(L::NumField) -> Int

  Given a number field L/K, this function returns the degree of L over \mathbf Q.