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
  val make : int -> int -> int -> Date_sig.S.t
  val lmake : ?year:int -> ?month:int -> ?day:int -> unit -> Date_sig.S.t
  val year : int -> Date_sig.S.t
  val month : int -> Date_sig.S.t
  val week : int -> Date_sig.S.t
  val day : int -> Date_sig.S.t
  exception Not_computable
  val nb_days : Date_sig.S.t -> int
  val ymd : Date_sig.S.t -> int * int * int
end