An abstract algebra library