Haskell for Maths v2
Haskell for Maths is a library of Haskell code for maths, mainly algebra and combinatorics.
I have a blog over at http://haskellformaths.blogspot.com/
where I'm intending to explain the code in more detail - the maths behind it, how the code works, and how to use it.
List of Modules
- Math.Algebra.LinearAlgebra - vector and matrix operations
- Math.Algebra.Commutative.MPoly - multivariate polynomials
- Math.Algebra.Commutative.GBasis - Buchberger algorithm for Groebner bases
- Math.Algebra.Field.Base - numeric types for base fields - the rationals Q, and prime fields Fp
- Math.Algebra.Field.Extension - numeric types for extension fields - quadratic fields Q(sqrt d), and prime power fields Fq
- Math.Algebra.Group.PermutationGroup
- Math.Algebra.Group.SchreierSims - algorithm enabling investigation of permutation groups of large order
- Math.Algebra.Group.StringRewriting - for investigating semigroup presentations, including Knuth-Bendix algorithm
- Math.Algebra.NonCommutative.NCPoly - non-commutative multivariate polynomials
- Math.Algebra.NonCommutative.GSBasis - Buchberger-Shirshov algorithm for Groebner-Shirshov bases
- Math.Algebra.NonCommutative.TensorAlgebra - tensor, symmetric, and exterior algebras
- Math.Combinatorics.Graph - type for graphs, plus common families, new from old constructions, simple properties
- Math.Combinatorics.GraphAuts - calculating automorphism groups of graphs, and testing for various types of transitivity
- Math.Combinatorics.StronglyRegularGraph
- Math.Combinatorics.Design - type for designs, code for calculating automorphisms of designs
- Math.Combinatorics.FiniteGeometry - affine and projective geometries over finite fields
- Math.Combinatorics.Hypergraph - (work in progress)
- Math.Common.IntegerAsType
- Math.Common.ListSet - using lists to represent sets
- Math.Projects.RootSystem - root systems for finite reflection groups (Coxeter groups)
- Math.Projects.ChevalleyGroup.Classical - the classical Chevalley groups An, Bn, Cn, Dn over finite fields
- Math.Projects.ChevalleyGroup.Exceptional - the exceptional Chevalley group G2 over finite fields
- Math.Projects.KnotTheory.LaurentMPoly - multivariate polynomials allowing negative and fractional exponents
- Math.Projects.KnotTheory.TemperleyLieb - Temperley-Lieb algebras for calculating Jones polynomial
- Math.Projects.KnotTheory.IwahoriHecke - (Iwahori-)Hecke algebras for calculating HOMFLY polynomial
- Math.Test... - test code
The code is available on Hackage.
Alternatively, you can download it from here as a zipfile.
Haskell for Maths v1 is an earlier version of this library.
It has some overlap with v2, but has different implementations of the core algebra code, and also contains some code
not yet present in v2, especially number theory.
I'm always interested to hear about how you're using the code, and the further things that you'd like to be able to do with it.
Contact: David Amos - haskellformaths-at-googlemail-dot-com or polyomino-at-f2s-dot-com
(Please use meaningful subject line, as I have to bin a lot of spam unseen)