Add class `Involutive`.
Isn't it a bit strange to have a class with 0 instances in the library?
I suppose we could add an instance for negation of integers?
I was also about to suggest a relation to idempotency, which I thought was something like
f (f x) = f x, but it doesn't seem like we have that? We work with such a function a lot though, it's called the core. (Well, things get more complicated because that can also be partial.)
We only have
f x x = x, which is an idempotent element of an operation, but not an idempotent operation.
Looking at the other classes, isn't
Involutive R fthe same as
Cancel R f f?
Good point, maybe we should just make it a notation for that?
I was also about to suggest a relation to idempotency,
Not sure if that's worth it.