Applied algebra for the computer sciences (Prentice-Hall series in automatic computation)