sig
  type t = Sexplib.Sexp.t
  type 'a sexp_option = 'a option
  val default_string_of_float : (float -> string) ref
  val write_old_option_format : bool ref
  val read_old_option_format : bool ref
  val sexp_of_unit : unit -> Sexplib.Sexp.t
  val sexp_of_bool : bool -> Sexplib.Sexp.t
  val sexp_of_string : string -> Sexplib.Sexp.t
  val sexp_of_char : char -> Sexplib.Sexp.t
  val sexp_of_int : int -> Sexplib.Sexp.t
  val sexp_of_float : float -> Sexplib.Sexp.t
  val sexp_of_int32 : int32 -> Sexplib.Sexp.t
  val sexp_of_int64 : int64 -> Sexplib.Sexp.t
  val sexp_of_nativeint : nativeint -> Sexplib.Sexp.t
  val sexp_of_big_int : Big_int.big_int -> Sexplib.Sexp.t
  val sexp_of_nat : Nat.nat -> Sexplib.Sexp.t
  val sexp_of_num : Num.num -> Sexplib.Sexp.t
  val sexp_of_ratio : Ratio.ratio -> Sexplib.Sexp.t
  val sexp_of_ref : ('-> 'b) -> 'a ref -> 'b
  val sexp_of_lazy : ('-> 'b) -> 'a lazy_t -> 'b
  val sexp_of_option : ('-> Sexplib.Sexp.t) -> 'a option -> Sexplib.Sexp.t
  val sexp_of_pair :
    ('-> Sexplib.Sexp.t) ->
    ('-> Sexplib.Sexp.t) -> 'a * '-> Sexplib.Sexp.t
  val sexp_of_triple :
    ('-> Sexplib.Sexp.t) ->
    ('-> Sexplib.Sexp.t) ->
    ('-> Sexplib.Sexp.t) -> 'a * 'b * '-> Sexplib.Sexp.t
  val sexp_of_list : ('-> Sexplib.Sexp.t) -> 'a list -> Sexplib.Sexp.t
  val sexp_of_array : ('-> Sexplib.Sexp.t) -> 'a array -> Sexplib.Sexp.t
  val sexp_of_hashtbl :
    ('-> Sexplib.Sexp.t) ->
    ('-> Sexplib.Sexp.t) -> ('a, 'b) Hashtbl.t -> Sexplib.Sexp.t
  val sexp_of_float32_vec :
    (float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array1.t ->
    Sexplib.Sexp.t
  val sexp_of_float64_vec :
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array1.t ->
    Sexplib.Sexp.t
  val sexp_of_vec :
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array1.t ->
    Sexplib.Sexp.t
  val sexp_of_float32_mat :
    (float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array2.t ->
    Sexplib.Sexp.t
  val sexp_of_float64_mat :
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array2.t ->
    Sexplib.Sexp.t
  val sexp_of_mat :
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array2.t ->
    Sexplib.Sexp.t
  val sexp_of_abstr : '-> Sexplib.Sexp.t
  val sexp_of_fun : ('-> 'b) -> Sexplib.Sexp.t
  type 'a sexp_opaque = 'a
  val sexp_of_opaque : '-> Sexplib.Sexp.t
  val string_of__of__sexp_of : ('-> Sexplib.Sexp.t) -> '-> string
  exception Of_sexp_error of string * Sexplib.Sexp.t
  val record_check_extra_fields : bool ref
  val of_sexp_error : string -> Sexplib.Sexp.t -> 'a
  val unit_of_sexp : Sexplib.Sexp.t -> unit
  val bool_of_sexp : Sexplib.Sexp.t -> bool
  val string_of_sexp : Sexplib.Sexp.t -> string
  val char_of_sexp : Sexplib.Sexp.t -> char
  val int_of_sexp : Sexplib.Sexp.t -> int
  val float_of_sexp : Sexplib.Sexp.t -> float
  val int32_of_sexp : Sexplib.Sexp.t -> int32
  val int64_of_sexp : Sexplib.Sexp.t -> int64
  val nativeint_of_sexp : Sexplib.Sexp.t -> nativeint
  val big_int_of_sexp : Sexplib.Sexp.t -> Big_int.big_int
  val nat_of_sexp : Sexplib.Sexp.t -> Nat.nat
  val num_of_sexp : Sexplib.Sexp.t -> Num.num
  val ratio_of_sexp : Sexplib.Sexp.t -> Ratio.ratio
  val ref_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a ref
  val lazy_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a lazy_t
  val option_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a option
  val pair_of_sexp :
    (Sexplib.Sexp.t -> 'a) ->
    (Sexplib.Sexp.t -> 'b) -> Sexplib.Sexp.t -> 'a * 'b
  val triple_of_sexp :
    (Sexplib.Sexp.t -> 'a) ->
    (Sexplib.Sexp.t -> 'b) ->
    (Sexplib.Sexp.t -> 'c) -> Sexplib.Sexp.t -> 'a * 'b * 'c
  val list_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a list
  val array_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a array
  val hashtbl_of_sexp :
    (Sexplib.Sexp.t -> 'a) ->
    (Sexplib.Sexp.t -> 'b) -> Sexplib.Sexp.t -> ('a, 'b) Hashtbl.t
  val float32_vec_of_sexp :
    Sexplib.Sexp.t ->
    (float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array1.t
  val float64_vec_of_sexp :
    Sexplib.Sexp.t ->
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array1.t
  val vec_of_sexp :
    Sexplib.Sexp.t ->
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array1.t
  val float32_mat_of_sexp :
    Sexplib.Sexp.t ->
    (float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array2.t
  val float64_vec_of_sexp :
    Sexplib.Sexp.t ->
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array1.t
  val vec_of_sexp :
    Sexplib.Sexp.t ->
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array1.t
  val float32_mat_of_sexp :
    Sexplib.Sexp.t ->
    (float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array2.t
  val float64_mat_of_sexp :
    Sexplib.Sexp.t ->
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array2.t
  val mat_of_sexp :
    Sexplib.Sexp.t ->
    (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array2.t
  val fun_of_sexp : Sexplib.Sexp.t -> '-> 'b
  val of_string__of__of_sexp : (Sexplib.Sexp.t -> 'a) -> string -> 'a
  val load_sexp : ?buf:string -> string -> t
  val load_sexps : ?buf:string -> string -> t list
  val load_rev_sexps : ?buf:string -> string -> t list
  val input_sexp :
    ?text_line:int -> ?text_char:int -> ?buf_pos:int -> Extlib.IO.input -> t
  val input_sexps :
    ?text_line:int ->
    ?text_char:int ->
    ?buf_pos:int -> ?buf:string -> Extlib.IO.input -> t list
  val input_rev_sexps :
    ?text_line:int ->
    ?text_char:int ->
    ?buf_pos:int -> ?buf:string -> Extlib.IO.input -> t list
  val output_hum : 'Extlib.IO.output -> t -> unit
  val output_hum_indent : int -> 'Extlib.IO.output -> t -> unit
  val output_mach : 'Extlib.IO.output -> t -> unit
  val output : 'Extlib.IO.output -> t -> unit
  val print : 'Extlib.IO.output -> t -> unit
  val to_string_hum : ?indent:int -> t -> string
  val to_string_mach : t -> string
  val to_string : t -> string
  val t_of_sexp : Sexplib.Sexp.t -> t
  val sexp_of_t : t -> Sexplib.Sexp.t
end