Compare.Semigroup
S : Interface.SEMIGROUP
E : Interface.EQ with type t = S.t
module I : sig ... end
val associativity : S.t -> S.t -> S.t -> bool