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 -> int -> int -> Calendar_sig.S.second -> Calendar_sig.S.t
  val lmake :
    ?year:int ->
    ?month:int ->
    ?day:int ->
    ?hour:int ->
    ?minute:int -> ?second:Calendar_sig.S.second -> unit -> Calendar_sig.S.t
  val year : int -> Calendar_sig.S.t
  val month : int -> Calendar_sig.S.t
  val week : int -> Calendar_sig.S.t
  val day : int -> Calendar_sig.S.t
  val hour : int -> Calendar_sig.S.t
  val minute : int -> Calendar_sig.S.t
  val second : Calendar_sig.S.second -> Calendar_sig.S.t
  val from_date : Date.Period.t -> Calendar_sig.S.t
  val from_time : Time.Period.t -> Calendar_sig.S.t
  val to_date : Calendar_sig.S.t -> Date.Period.t
  exception Not_computable
  val to_time : Calendar_sig.S.t -> Time.Period.t
  val ymds : Calendar_sig.S.t -> int * int * int * Calendar_sig.S.second
end