sig   type +'a period constraint 'a = [< Period.date_field ]   type t = Period.date_field period   val empty : [< Period.date_field ] period   val add : ([< Period.date_field ] as 'a) period -> 'a period -> 'a period   val sub : ([< Period.date_field ] as 'a) period -> 'a period -> 'a period   val opp : ([< Period.date_field ] as 'a) period -> 'a period   val equal :     [< Period.date_field ] period -> [< Period.date_field ] period -> bool   val compare :     [< Period.date_field ] period -> [< Period.date_field ] period -> int   val hash : [< Period.date_field ] period -> int   val length : [< Period.date_field ] period -> Time_sig.S.second   val mul : ([< Period.date_field ] as 'a) period -> 'a period -> 'a period   val div : ([< Period.date_field ] as 'a) period -> 'a period -> 'a period   val make : int -> int -> Time_sig.S.second -> [< Period.date_field ] period   val lmake :     ?hour:int ->     ?minute:int ->     ?second:Time_sig.S.second -> unit -> [< Period.date_field ] period   val hour : int -> [< Period.date_field ] period   val minute : int -> [< Period.date_field ] period   val second : Time_sig.S.second -> [< Period.date_field ] period   val to_seconds : [< Period.date_field ] period -> Time_sig.S.second   val to_minutes : [< Period.date_field ] period -> float   val to_hours : [< Period.date_field ] period -> float end