(<=> (Associative ?Op ?Domain)
(Forall (?X ?Y ?Z)
(=> (Instance-Of ?X ?Domain)
(Instance-Of ?Y ?Domain)
(Instance-Of ?Z ?Domain)
(= (Value ?Op ?X (Value ?Op ?Y ?Z))
(Value ?Op (Value ?Op ?X ?Y) ?Z)))))
(<=> (Semigroup ?Domain ?Op ?Id)
(And (Binary-Operator-On ?Op ?Domain)
(Associative ?Op ?Domain)
(Identity-Element-For ?Id ?Op ?Domain)))
(<=> (Group ?Domain ?Op ?Id)
(And (Binary-Operator-On ?Op ?Domain)
(Associative ?Op ?Domain)
(Identity-Element-For ?Id ?Op ?Domain)
(Invertible ?Op ?Id ?Domain)))