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