sig
  module N :
    sig
      val any : t option
      val whilst : (Nat.t -> bool) -> string -> bool
      val gt : Nat.t -> t option
      val gte : Nat.t -> t option
      val lt : Nat.t -> t option
      val lte : Nat.t -> t option
    end
  module W :
    sig
      val any : t option
      val whilst : (Whole.t -> bool) -> string -> bool
      val gt : Whole.t -> t option
      val gte : Whole.t -> t option
      val lt : Whole.t -> t option
      val lte : Whole.t -> t option
    end
  module Z :
    sig
      val any : t option
      val whilst : (Int.t -> bool) -> string -> bool
      val gt : Int.t -> t option
      val gte : Int.t -> t option
      val lt : Int.t -> t option
      val lte : Int.t -> t option
    end
  module R :
    sig
      val any : t option
      val whilst : (Real.t -> bool) -> string -> bool
      val gt : Real.t -> t option
      val gte : Real.t -> t option
      val lt : Real.t -> t option
      val lte : Real.t -> t option
    end
end