Martin, do you keep a bag of instructive counter-examples at your desk?

Anyway, since the notion of groupoid has been brought up, I figure I'll continue this descent into the abstract by pointing out that operads are often used to model structures that are "not quite" associative-- for every set of n elements, you have a bunch of n-ary operations, which often are made to represent the different ways of "multiplying" n elements. e.g. you could have an operation f(a,b,c,d) = (ab)(cd) and g(a,b,c,d) = a(b(cd).
Certain n-ary operations can be said to be equal to express some level of associativity. To express "actual" associativity,
we can define an operad with f(a,b,c) =a (bc) and g(a,b,c) = (ab)c, and then say that f=g, that is, a(bc)=(ab)c.