sig
type t
val create : ?primary:int -> bool array array -> Emc.S.t
val find_solution : Emc.S.t -> Emc.solution
val iter_solution : (Emc.solution -> unit) -> Emc.S.t -> unit
val count_solutions : Emc.S.t -> int
module type ARITH =
sig
type t
val zero : Emc.S.ARITH.t
val one : Emc.S.ARITH.t
val add : Emc.S.ARITH.t -> Emc.S.ARITH.t -> Emc.S.ARITH.t
end
module Count :
functor (A : ARITH) -> sig val count_solutions : Emc.S.t -> A.t end
end