sig
  exception Empty
  type day = int
  type lifetime
  val io_lifetime : Lifetime.lifetime Io.literate
  val io_day : Lifetime.day Io.literate
  val day_of_ymd : int * int * int -> Lifetime.day
  val ymd_of_day : Lifetime.day -> int * int * int
  val empty : Lifetime.lifetime
  val load : string -> Lifetime.lifetime
  val save : string -> Lifetime.lifetime -> unit
  val output : Pervasives.out_channel -> Lifetime.lifetime -> unit
  val singleton : Lifetime.day -> Lifetime.lifetime
  val add_day : Lifetime.lifetime -> Lifetime.day -> Lifetime.lifetime
  val is_empty : Lifetime.lifetime -> bool
  val range : Lifetime.lifetime -> Lifetime.day * Lifetime.day
  val iterate_over_intervals :
    (Lifetime.day * Lifetime.day -> unit) -> Lifetime.lifetime -> unit
  val iterate_over_days : (Lifetime.day -> unit) -> Lifetime.lifetime -> unit
end