The new modules fall into two groups:
- Math.Algebras.* - Modules about algebras (and co-, bi- and Hopf algebras) in general
- Math.QuantumAlgebra.* - Modules specifically about quantum algebra
In (slightly) more detail, here are the modules:
- Math.Algebras.VectorSpace - defines a type for the free k-vector space over a basis set b
- Math.Algebras.TensorProduct - defines tensor product of two vector spaces
- Math.Algebras.Structures - defines a number of additional algebraic structures that can be given to vector spaces: algebra, coalgebra, bialgebra, Hopf algebra, module, comodule
- Math.Algebras.Quaternions - a simple example of an algebra
- Math.Algebras.Matrix - the 2*2 matrices - another simple example of an algebra
- Math.Algebras.Commutative - commutative polynomials (such as x^2+3yz) - another algebra
- Math.Algebras.NonCommutative - non-commutative polynomials (where xy /= yx) - another algebra
- Math.Algebras.GroupAlgebra - a key example of a Hopf algebra
- Math.Algebras.AffinePlane - the affine plane and its symmetries - more Hopf algebras, preparing for the quantum plane
- Math.Algebras.LaurentPoly - we use Laurent polynomials in q (that is, polynomials in q and q^-1) as our quantum scalars
- Math.QuantumAlgebra.QuantumPlane - the quantum plane and its symmetries, as examples of non-commutative, non-cocommutative Hopf algebras
- Math.QuantumAlgebra.Tangle - The tangle category (which includes knots, links and braids as subcategories), and some representations (from which we derive knot invariants)
The following diagram is something like a dependency diagram, with "above" meaning "depends on".
Each layer depends on the layers beneath it. There are also a few dependencies within layers, that I've hinted at by proximity.
Some of these modules overlap somewhat in content with other modules that already exist in HaskellForMaths. In particular, there are already modules for commutative algebra, non-commutative algebra, and knot theory. For the moment, those existing modules still offer some features not offered by the new modules (for example, calculation of Groebner bases).
For the next little while in this blog, I want to start going through these new modules, and investigating quantum algebra. I should emphasize that this is still work in progress. For example, I'm intending to add modules for quantum enveloping algebras - but I have some reading to do first.
(Oh, and I know that I did previously promise to look at finite simple groups, and Coxeter groups, in this blog. I'll probably still come back to those at some point.)