github.com/nickng/abelian (go): Package abelian provides data structures and functions abelian group in Go.  An abelian group is a mathematical group 〈S,·〉 in which the binary operation · can be applied to two group elements x,y ∈ S commutatively, i.e. x·y = y·x.  This package provides a minimal representation for such group, where the set S is any types that implements the set.Set interface. Most of the functionalities of the Group will be provided by the set.Set implementation. A number of properties interfaces (e.g. StrictOrdered, Enumerable, ...) are also provided for convenience.  To use this package to represent custom abelian groups, simply provide an implementation for the Set and binary function Op.
Keywords: abstract-algebra|group-theory