Project overview

Short description

Welcome to the documentation of abelian, a Python library which facilitates computations on elementary locally compact abelian groups (LCAs). The LCAs are the groups isomorphic to \(\mathbb{R}\), \(T = \mathbb{R}/\mathbb{Z}\), \(\mathbb{Z}\), \(\mathbb{Z}_n\) and direct sums of these. The library is structured into two packages, the abelian package and the abelian.linalg sub-package, which is built on the matrix class MutableDenseMatrix from the sympy library for symbolic mathematics.

Classes and methods

  • The LCA class represents elementary LCAs.

    • Fundamental methods: identity LCA, direct sums, equality, isomorphic, element projection, Pontryagin dual.
  • The HomLCA class represents homomorphisms between LCAs.

    • Fundamental methods: identity morphism, zero morphism, equality, composition, evaluation, stacking, element-wise operations, kernel, cokernel, image, coimage, dual (adjoint) morphism.
  • The LCAFunc class represents functions from LCAs to complex numbers.

    • Fundamental methods: evaluation, composition, shift (translation), pullback, pushforward, point-wise operators (e.g. addition).

Algorithms for the Smith normal form and Hermite normal form are also implemented in smith_normal_form() and hermite_normal_form() respectively.

Project goals

  • Represent the groups \(\mathbb{R}\), \(T\), \(\mathbb{Z}\) and \(\mathbb{Z}_n\) and facilitate computations on these.
  • Handle the relationship between discrete and continuous groups in a natural way using group homomorphisms.
  • DFT computations on discrete, finite groups and their products using the FFT.
  • The software should build on the mathematical theory.


  1. Download the latest version of Python, e.g. the Anaconda distribution.
  2. Depending on your operating system, do one of the following:
    1. If on Windows, open the Anaconda prompt and run pip install abelian to install abelian from PyPI.
    2. If on Linux or Mac, open the terminal and run pip install abelian to install abelian from PyPI.
  3. Open a Python editor (such as Spyder, which comes with Anaconda) and type from abelian import * to import all classes and functions from the library. You’re all set, go try some examples from the tutorials.

Indices and tables