module type S = sig type t val empty : t val add : t -> t -> t val sub : t -> t -> t val opp : t -> t val equal : t -> t -> bool val compare : t -> t -> int val hash : t -> int end