sig
  type 'a predicate = '-> bool
  type ('a, 'b) t = {
    precond : 'Specification.predicate;
    postcond : ('a * 'b) Specification.predicate;
  }
  val implies :
    'Specification.predicate ->
    ('a * 'b) Specification.predicate -> ('a, 'b) Specification.t
  val ( => ) :
    'Specification.predicate ->
    ('a * 'b) Specification.predicate -> ('a, 'b) Specification.t
  val implies' :
    'Specification.predicate ->
    'Specification.predicate -> ('a, 'b) Specification.t
  val ( ==> ) :
    'Specification.predicate ->
    'Specification.predicate -> ('a, 'b) Specification.t
  type 'a outcome = Result of '| Exception of exn
  val is_exception :
    exn Specification.predicate ->
    'Specification.outcome Specification.predicate
  val is_result :
    'Specification.predicate ->
    'Specification.outcome Specification.predicate
  val always : 'Specification.predicate
  val never : 'Specification.predicate
  val is_pos_int : int Specification.predicate
  val is_neg_int : int Specification.predicate
  val is_zero_int : int Specification.predicate
  val is_nonzero_int : int Specification.predicate
  val is_even_int : int Specification.predicate
  val is_odd_int : int Specification.predicate
  val is_pos_int32 : int32 Specification.predicate
  val is_neg_int32 : int32 Specification.predicate
  val is_zero_int32 : int32 Specification.predicate
  val is_nonzero_int32 : int32 Specification.predicate
  val is_even_int32 : int32 Specification.predicate
  val is_odd_int32 : int32 Specification.predicate
  val is_pos_int64 : int64 Specification.predicate
  val is_neg_int64 : int64 Specification.predicate
  val is_zero_int64 : int64 Specification.predicate
  val is_nonzero_int64 : int64 Specification.predicate
  val is_even_int64 : int64 Specification.predicate
  val is_odd_int64 : int64 Specification.predicate
  val is_pos_nativeint : nativeint Specification.predicate
  val is_neg_nativeint : nativeint Specification.predicate
  val is_zero_nativeint : nativeint Specification.predicate
  val is_nonzero_nativeint : nativeint Specification.predicate
  val is_even_nativeint : nativeint Specification.predicate
  val is_odd_nativeint : nativeint Specification.predicate
  val is_pos_float : float Specification.predicate
  val is_neg_float : float Specification.predicate
  val is_zero_float_eps : float -> float Specification.predicate
  val is_nonzero_float_eps : float -> float Specification.predicate
  val is_zero_float : float Specification.predicate
  val is_nonzero_float : float Specification.predicate
  val is_nan_float : float Specification.predicate
  val is_nonnan_float : float Specification.predicate
  val is_letter_char : char Specification.predicate
  val is_digit_char : char Specification.predicate
  val is_digit_bin_char : char Specification.predicate
  val is_digit_oct_char : char Specification.predicate
  val is_digit_hex_char : char Specification.predicate
  val is_space_char : char Specification.predicate
  val is_alphanum_char : char Specification.predicate
  val is_empty_string : string Specification.predicate
  val is_nonempty_string : string Specification.predicate
  val is_empty_list : 'a list Specification.predicate
  val is_nonempty_list : 'a list Specification.predicate
  val is_empty_array : 'a array Specification.predicate
  val is_nonempty_array : 'a array Specification.predicate
  val is_none_option : 'a option Specification.predicate
  val is_some_option : 'a option Specification.predicate
  val exists_string :
    char Specification.predicate -> string Specification.predicate
  val for_all_string :
    char Specification.predicate -> string Specification.predicate
  val exists_list :
    'Specification.predicate -> 'a list Specification.predicate
  val for_all_list :
    'Specification.predicate -> 'a list Specification.predicate
  val exists_array :
    'Specification.predicate -> 'a array Specification.predicate
  val for_all_array :
    'Specification.predicate -> 'a array Specification.predicate
  module type Pred =
    sig type p val p : Specification.Pred.p Specification.predicate end
  module Map :
    functor (M : Map.S->
      functor (P : sig type p = M.key val p : p predicate end->
        sig
          val exists :
            'Specification.predicate -> 'M.t Specification.predicate
          val for_all :
            'Specification.predicate -> 'M.t Specification.predicate
        end
  module Set :
    functor (S : Set.S->
      functor (P : sig type p = S.elt val p : p predicate end->
        sig
          val exists : S.t Specification.predicate
          val for_all : S.t Specification.predicate
        end
  val exists_hashtbl :
    ('a * 'b) Specification.predicate ->
    ('a, 'b) Hashtbl.t Specification.predicate
  val for_all_hashtbl :
    ('a * 'b) Specification.predicate ->
    ('a, 'b) Hashtbl.t Specification.predicate
  val exists_queue :
    'Specification.predicate -> 'Queue.t Specification.predicate
  val for_all_queue :
    'Specification.predicate -> 'Queue.t Specification.predicate
  val exists_stack :
    'Specification.predicate -> 'Stack.t Specification.predicate
  val for_all_stack :
    'Specification.predicate -> 'Stack.t Specification.predicate
  val exists_weak :
    'a option Specification.predicate -> 'Weak.t Specification.predicate
  val for_all_weak :
    'a option Specification.predicate -> 'Weak.t Specification.predicate
  module Weak :
    functor (W : Weak.S->
      functor (P : sig type p = W.data val p : p predicate end->
        sig
          val exists : W.t Specification.predicate
          val for_all : W.t Specification.predicate
        end
  val logand :
    'Specification.predicate ->
    'Specification.predicate -> 'Specification.predicate
  val ( &&& ) :
    'Specification.predicate ->
    'Specification.predicate -> 'Specification.predicate
  val logand_list :
    'Specification.predicate list -> 'Specification.predicate
  val ( &&&& ) :
    'Specification.predicate list -> 'Specification.predicate
  val logor :
    'Specification.predicate ->
    'Specification.predicate -> 'Specification.predicate
  val ( ||| ) :
    'Specification.predicate ->
    'Specification.predicate -> 'Specification.predicate
  val logor_list :
    'Specification.predicate list -> 'Specification.predicate
  val ( |||| ) :
    'Specification.predicate list -> 'Specification.predicate
  val logxor :
    'Specification.predicate ->
    'Specification.predicate -> 'Specification.predicate
  val ( ^^^ ) :
    'Specification.predicate ->
    'Specification.predicate -> 'Specification.predicate
  val logxor_list :
    'Specification.predicate list -> 'Specification.predicate
  val ( ^^^^ ) :
    'Specification.predicate list -> 'Specification.predicate
  val not : 'Specification.predicate -> 'Specification.predicate
  val zip1 : 'Specification.predicate -> 'Specification.predicate
  val zip2 :
    'Specification.predicate ->
    'Specification.predicate -> ('a * 'b) Specification.predicate
  val zip3 :
    'Specification.predicate ->
    'Specification.predicate ->
    'Specification.predicate -> ('a * 'b * 'c) Specification.predicate
  val zip4 :
    'Specification.predicate ->
    'Specification.predicate ->
    'Specification.predicate ->
    'Specification.predicate -> ('a * 'b * 'c * 'd) Specification.predicate
  val zip5 :
    'Specification.predicate ->
    'Specification.predicate ->
    'Specification.predicate ->
    'Specification.predicate ->
    'Specification.predicate ->
    ('a * 'b * 'c * 'd * 'e) Specification.predicate
  val create_int_functions :
    ('-> '-> int) ->
    '->
    ('-> '-> 'a) ->
    '->
    'Specification.predicate * 'Specification.predicate *
    'Specification.predicate * 'Specification.predicate *
    'Specification.predicate * 'Specification.predicate
end