module type COMPARABLE = sig type t val eq: t -> t -> bool val neq: t -> t -> bool val lt: t -> t -> bool val le: t -> t -> bool val gt: t -> t -> bool val ge: t -> t -> bool end module Num: sig type t val of_num: Num.num -> t val nan: t val to_num: t -> Num.num val neg: t -> t val eq: t -> t -> bool val neq: t -> t -> bool val lt: t -> t -> bool val le: t -> t -> bool val gt: t -> t -> bool val ge: t -> t -> bool val add: t -> t -> t val sub: t -> t -> t val mult: t -> t -> t val div: t -> t -> t val pow: t -> t -> t val rnd: unit -> t val max: t -> t -> t val min: t -> t -> t val abs: t -> t end module Bool: sig type t = bool val true_ : bool val false_: bool val eq: t -> t -> bool val neq: t -> t -> bool val lt: t -> t -> bool val le: t -> t -> bool val gt: t -> t -> bool val ge: t -> t -> bool val not: t -> t val and_: t -> t -> t val or_: t -> t -> t end module String: sig type t = UTF8.t val eq: t -> t -> bool val neq: t -> t -> bool val lt: t -> t -> bool val le: t -> t -> bool val gt: t -> t -> bool val ge: t -> t -> bool end