I was trying to develop an intuition about associative operations over a finite set. There seems to be a close relationship between such operations and finite state machines. The associative operations that start to look like the operation of a "zero" seem to be those that "remember" something that happened at the left end of the string input into the finite state machine, or alternately, those that "remember" something that happened at the right end of the input string. Of course, you can compose direct products of such operations, so that the direct product finite state machine can remember things that happened at both ends. Finally, there are a much smaller number of such finite state machines that remember something more interesting about the input string as a whole. These include associative operations that are actually groups, including commutative groups. It's been a very long time since I've thought about these things. Are there any ready online references -- in particular about factoring such associative operations into direct products ?