GJAL is a set of interfaces implementing standard
abstract algebraic structures such as groups, rings, and
fields using parametric polymorphism. Properties such
as identity, commutativity, associativity, and
distributivity are passed from one interface to the next
using f-bounded type parameters. This software can
used as a basis for a computational algebra system.