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 length : Time_sig.S.t -> Time_sig.S.second
  val mul : Time_sig.S.t -> Time_sig.S.t -> Time_sig.S.t
  val div : Time_sig.S.t -> Time_sig.S.t -> Time_sig.S.t
  val make : int -> int -> Time_sig.S.second -> Time_sig.S.t
  val lmake :
    ?hour:int ->
    ?minute:int -> ?second:Time_sig.S.second -> unit -> Time_sig.S.t
  val hour : int -> Time_sig.S.t
  val minute : int -> Time_sig.S.t
  val second : Time_sig.S.second -> Time_sig.S.t
  val to_seconds : Time_sig.S.t -> Time_sig.S.second
  val to_minutes : Time_sig.S.t -> float
  val to_hours : Time_sig.S.t -> float
end