sig
  type t
  val empty : t
  val add : t -> t -> t
  val sub : t -> t -> t
  val opp : t -> t
  val compare : t -> t -> int
  val equal : t -> t -> bool
  val make : int -> int -> int -> int -> int -> int -> Calendar.t
  val lmake :
    ?year:int ->
    ?month:int ->
    ?day:int -> ?hour:int -> ?minute:int -> ?second:int -> unit -> Calendar.t
  val year : int -> Calendar.t
  val month : int -> Calendar.t
  val week : int -> Calendar.t
  val day : int -> Calendar.t
  val hour : int -> Calendar.t
  val minute : int -> Calendar.t
  val second : int -> Calendar.t
  val from_date : Date.Period.t -> Calendar.t
  val from_time : Time.Period.t -> Calendar.t
  val to_date : Calendar.t -> Date.Period.t
  exception Not_computable
  val to_time : Calendar.t -> Time.Period.t
  val ymds : Calendar.t -> int * int * int * int
end