Applications of universal algebra to computer science Algebraic structures mathematics