When I'm given a presentation of a finitely generated semigroup/monoid, are there any tricks I could use to check if it is cancellative on both sides? I'm not asking for a general algorithm, as I believe it could be impossible to find one, but just tips on how to deal with the problem when faced with a, say, two- or three-generated semigroup with not too many relations. Are there any useful necessary or sufficient conditions?
I know for example that any idempotent in a cancellative semigroup is necessarily an identity element, which can be used to refute cancellativity easily in some cases. Are there any other (preferably more powerful) useful methods?
Edit: The reasons for this question are strongly noncommutative. I would be happy to learn something useful about the commutative case, but what I'm interested in at the moment are noncommutative semigroups.
Edit 2: Oh, and of course I do realize that a relation like $xy=zy$ will rule cancellativity out whenever I can prove $x\neq z$. I'd better show an example of what I mean (I do not know whether this is cancellative or not):
I would like to know some methods by which I could crack examples like this.