one caveat about monoid homomorphisms: you have to add the identity-preservation rule separately, the multiplicative property isn't enough (unlike with groups)
given any set X, you get a generic monoid, called the monoid of transformations of X, or End(X). i like to think of End(X) as: things you can do (in X). this has a sub-monoid of bijections, Sym(X) or Aut(X), which i think of as: reversible things you can do (in X).
sort of the difference between: one-way processes, and two-way processes.
you can make this more formal by considering M-sets (and their "reversible" cousin, G-sets)
a lot of things can be M-sets...for example computer programs, where you have a concatenation of instructions that operate on a data structure.
@DavidWheeler That is what I was thinking of :-) Irreversible programs belong to End(X) but not to Sym(X) and hence, it is possible to rollback those instructions if there is an error and such.
And one can then formally define which instructions are reversible and stuff, just by looking at the final output.
No, that point was different. Sheesh, I mixed up two different things. Well, it is getting confusing for me now, I should go back and practise a little myself. Will come back later for more stuff. Btw, G-sets are just group actions right?