sig   type field = Period.date_field   type -'a date constraint 'a = [< Date_sig.S.field ]   type t = Date_sig.S.field Date_sig.S.date   type day = Sun | Mon | Tue | Wed | Thu | Fri | Sat   type month =       Jan     | Feb     | Mar     | Apr     | May     | Jun     | Jul     | Aug     | Sep     | Oct     | Nov     | Dec   type year = int   exception Out_of_bounds   exception Undefined   val make : Date_sig.S.year -> int -> int -> Date_sig.S.t   val lmake :     year:Date_sig.S.year -> ?month:int -> ?day:int -> unit -> Date_sig.S.t   val make_year : int -> [< `Year ] Date_sig.S.date   val make_year_month : int -> int -> [< `Month | `Year ] Date_sig.S.date   val today : unit -> Date_sig.S.t   val from_jd : int -> Date_sig.S.t   val from_mjd : int -> Date_sig.S.t   val from_day_of_year : Date_sig.S.year -> int -> Date_sig.S.t   val days_in_month :     [< Date_sig.S.field > `Month `Year ] Date_sig.S.date -> int   val day_of_week : Date_sig.S.t -> Date_sig.S.day   val day_of_month : Date_sig.S.t -> int   val day_of_year : Date_sig.S.t -> int   val week : Date_sig.S.t -> int   val month :     [< Date_sig.S.field > `Month ] Date_sig.S.date -> Date_sig.S.month   val year : [< Date_sig.S.field > `Year ] Date_sig.S.date -> Date_sig.S.year   val to_jd : Date_sig.S.t -> int   val to_mjd : Date_sig.S.t -> int   val equal :     [< Date_sig.S.field ] Date_sig.S.date ->     [< Date_sig.S.field ] Date_sig.S.date -> bool   val compare :     [< Date_sig.S.field ] Date_sig.S.date ->     [< Date_sig.S.field ] Date_sig.S.date -> int   val hash : [< Date_sig.S.field ] Date_sig.S.date -> int   val is_valid_date : Date_sig.S.year -> int -> int -> bool   val is_leap_day : Date_sig.S.t -> bool   val is_gregorian : Date_sig.S.t -> bool   val is_julian : Date_sig.S.t -> bool   val to_unixtm : Date_sig.S.t -> Unix.tm   val from_unixtm : Unix.tm -> Date_sig.S.t   val to_unixfloat : Date_sig.S.t -> float   val from_unixfloat : float -> Date_sig.S.t   val to_business : Date_sig.S.t -> Date_sig.S.year * int * Date_sig.S.day   val from_business :     Date_sig.S.year -> int -> Date_sig.S.day -> Date_sig.S.t   val int_of_day : Date_sig.S.day -> int   val day_of_int : int -> Date_sig.S.day   val int_of_month : Date_sig.S.month -> int   val month_of_int : int -> Date_sig.S.month   module Period :     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   val add :     ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->     'Date_sig.S.Period.period -> 'Date_sig.S.date   val sub :     ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->     'Date_sig.S.date ->     [< Date_sig.S.field > `Day `Week ] Date_sig.S.Period.period   val precise_sub :     ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->     'Date_sig.S.date -> Date_sig.S.Period.t   val rem :     ([< Date_sig.S.field ] as 'a) Date_sig.S.date ->     'Date_sig.S.Period.period -> 'Date_sig.S.date   val next :     ([< Date_sig.S.field ] as 'a) Date_sig.S.date -> '-> 'Date_sig.S.date   val prev :     ([< Date_sig.S.field ] as 'a) Date_sig.S.date -> '-> 'Date_sig.S.date   val is_leap_year : Date_sig.S.year -> bool   val same_calendar : Date_sig.S.year -> Date_sig.S.year -> bool   val days_in_year : ?month:Date_sig.S.month -> Date_sig.S.year -> int   val weeks_in_year : Date_sig.S.year -> int   val week_first_last : int -> Date_sig.S.year -> Date_sig.S.t * Date_sig.S.t   val nth_weekday_of_month :     Date_sig.S.year ->     Date_sig.S.month -> Date_sig.S.day -> int -> Date_sig.S.t   val century : Date_sig.S.year -> int   val millenium : Date_sig.S.year -> int   val solar_number : Date_sig.S.year -> int   val indiction : Date_sig.S.year -> int   val golden_number : Date_sig.S.year -> int   val epact : Date_sig.S.year -> int   val easter : Date_sig.S.year -> Date_sig.S.t   val carnaval : Date_sig.S.year -> Date_sig.S.t   val mardi_gras : Date_sig.S.year -> Date_sig.S.t   val ash : Date_sig.S.year -> Date_sig.S.t   val palm : Date_sig.S.year -> Date_sig.S.t   val easter_friday : Date_sig.S.year -> Date_sig.S.t   val easter_saturday : Date_sig.S.year -> Date_sig.S.t   val easter_monday : Date_sig.S.year -> Date_sig.S.t   val ascension : Date_sig.S.year -> Date_sig.S.t   val withsunday : Date_sig.S.year -> Date_sig.S.t   val withmonday : Date_sig.S.year -> Date_sig.S.t   val corpus_christi : Date_sig.S.year -> Date_sig.S.t end