Is it possible to construct a higher order function isAssociative
that takes another function of two arguments and determines whether that function is associative?
Similar question but for other properties such as commutativity as well.
If this is impossible, is there any way of automating it in any language? If there is an Agda, Coq or Prolog solution I'm interested.
I can envision a brute force solution that checks every possible combination of arguments and never terminates. But "never terminates" is an undesirable property in this context.