Readme for computational-algebra-0.0.3.1
Computational Algebra Library
Installation
$ 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
- 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
andAlgebra.Algorithms.Groebner
.
- Arity-paramaterized polynomials. It uses vector representations for monomials.
*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.
- This is completely separeted as
- 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 inAlgebra.Internal
module. After new HP released, I will entirely rewrite all source codes usingsingletons
.
- Because the
- Type-level natural numbers and size-parameterized vectors
- For the similar reason, I include
SNat
andVector
data-type inAlgebra.Internal
module, which is separated assized-vector
package. Their proofs are so messy, so I will entirely rewrite these after new HP released with my unreleased packageequational-reasoning
, which provides the functionalities similar to Agda's EqReasoning.
- For the similar reason, I include