(<=> (Semigroup ?Domain ?Op ?Id) (And (Binary-Operator-On ?Op ?Domain) (Associative ?Op ?Domain) (Identity-Element-For ?Id ?Op ?Domain)))