Make.Semigroup
S : Interface.SEMIGROUP
A : ARBITRARY with type t := S.t and type 'a arbitrary := 'a Q.arbitrary
module V : sig ... end
val suite : string -> T.test T.suite