computational-algebra: Well-kinded computational algebra library, currently supporting Groebner basis.

[ bsd3, library, math ] [ Propose Tags ]

Dependently-typed computational algebra libray for Groebner basis.

[Skip to Readme]
Versions [faq],,,,,,,,,,,,,,,,,,
Dependencies algebra (==3.*), base (>=2.0 && <5), containers (>=0.4 && <0.6), heaps (==0.2.*), lens (==3.*), monad-loops (==0.3.*), monomorphic (==0.0.*), peggy (==0.3.*), tagged (>=0.4 && <1) [details]
License BSD-3-Clause
Copyright (C) Hiromi ISHII 2013
Author Hiromi ISHII
Category Math
Home page
Source repo head: git clone git://
Uploaded by HiromiIshii at 2013-05-04T12:49:59Z
Distributions NixOS:
Downloads 13798 total (249 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2016-12-21 [all 8 reports]


  • Algebra
    • Algorithms
      • Algebra.Algorithms.Groebner
        • Algebra.Algorithms.Groebner.Monomorphic
    • Algebra.Internal
    • Ring
      • Algebra.Ring.Noetherian
      • Algebra.Ring.Polynomial
        • Algebra.Ring.Polynomial.Monomorphic
        • Algebra.Ring.Polynomial.Parser


Maintainer's Corner

For package maintainers and hackage trustees

Readme for computational-algebra-

[back to package description]

Computational Algebra Library


$ cabal install computational-algebra

If you once installed the same version of this package and want to reinstall, please run cabal clean first to avoid the GHC's bug.

What is this?

This library provides data-types and functions to manipulate polynomials. This is built up with GHC's nice type features.

It contains following things:

  • Compute Groebner basis using Buchberger Algorithm
  • Ideal membership problem
  • Elimination ideal calculation
    • This library provides the monomial orders of l-th elimination type other than lex order, such as elimination order, product order,...
  • Ideal operations
    • Saturation Ideal, Quotient ideal,...

There are two interfaces:

  • Dependently-typed I/F

    • Arity-paramaterized polynomials. It uses vector representations for monomials. Algebra.Ring.Polynomial and Algebra.Algorithms.Groebner.
  • Monomorphic wrapper I/F

    • Not-so-dependently-typed interface to wrap dependently-typed ones. Algebra.Ring.Polynomial.Monomorphic and Algebra.Algorithms.Groebner.Monomorphic.

For more information, please read examples/polymorphic.hs and examples/monomorphic.hs.

Known Issues

Due to GHC 7.4.*'s bug, this library contains extra modules and functionalities as follows:

  • Monomorphic data-type and his friends
    • This is completely separeted as monomorphic package. But due to GHC 7.4.1, which is shipped with latest Haskell Platform, I include the functionality from this library for a while.
  • Singleton types and functions
    • Because the singletons package is not available in GHC 7.4.1, I provide limited version of the functionalities of that package in Algebra.Internal module. After new HP released, I will entirely rewrite all source codes using singletons.
  • Type-level natural numbers and size-parameterized vectors
    • For the similar reason, I include SNat and Vector data-type in Algebra.Internal module, which is separated as sized-vector package. Their proofs are so messy, so I will entirely rewrite these after new HP released with my unreleased package equational-reasoning, which provides the functionalities similar to Agda's EqReasoning.