sig   type +'a p constraint 'a = [< Date_sig.S.field ]   type +'a period = 'a p constraint 'a = [< 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 make : int -> int -> int -> Date_sig.S.t   val lmake : ?year:int -> ?month:int -> ?day:int -> unit -> Date_sig.S.t   val year : int -> [< Date_sig.S.field > `Year ] period   val month : int -> [< Date_sig.S.field > `Month `Year ] period   val week : int -> [< Date_sig.S.field > `Day `Week ] period   val day : int -> [< Date_sig.S.field > `Day `Week ] period   exception Not_computable   val nb_days : [< Date_sig.S.field ] period -> int   val safe_nb_days : [< `Day | `Week ] period -> int   val ymd : [< Date_sig.S.field ] period -> int * int * int end