class semigroup= fixes mult::"\'a⇒\'a⇒\'a" (infixl "⊗" 70) assumes assoc: "(x⊗y)⊗z=x⊗(y⊗z)" theorem main_theorem: fixes K::"sem