functor (C : Types.Mono.ArbitraryComparable->
  sig
    type t
    type elt = C.t
    type cursor
    type 'a result = 'a
    type 'a elt_ = elt
    type 'a set = t
    type ('a, 'b) result_ = 'a result
    val empty : 'a set
    val is_empty : 'a set -> bool
    val mem : 'a elt_ -> 'a set -> (bool, 'a) result_
    val add : 'a elt_ -> 'a set -> 'a set
    val singleton : 'a elt_ -> 'a set
    val remove : 'a elt_ -> 'a set -> 'a set
    val min_elt : 'a set -> ('a elt_, 'a) result_
    val max_elt : 'a set -> ('a elt_, 'a) result_
    val choose : 'a set -> ('a elt_, 'a) result_
    val cardinal : 'a set -> int
    val compare : 'a set -> 'a set -> int
    val equal : 'a set -> 'a set -> bool
    val iter : ('a elt_ -> unit) -> 'a set -> unit
    val fold : ('-> 'b elt_ -> 'a) -> '-> 'b set -> 'a
    val union : 'a set -> 'a set -> 'a set
    val inter : 'a set -> 'a set -> 'a set
    val diff : 'a set -> 'a set -> 'a set
    val gen1 :
      (?size:int -> Random.State.t -> 'a elt_) ->
      ?size:int -> Random.State.t -> 'a set
    val well_formed : 'a set -> bool
    val of_result : ('a, 'b) result_ -> 'a
    type 'a cursor_ = cursor
    val to_cursor : 'a set -> 'a cursor_
    val from_cursor : 'a cursor_ -> 'a set
    val at_top : 'a cursor_ -> bool
    val at_left : 'a cursor_ -> bool
    val at_right : 'a cursor_ -> bool
    val move_up : 'a cursor_ -> 'a cursor_
    val move_down_left : 'a cursor_ -> 'a cursor_
    val move_down_right : 'a cursor_ -> 'a cursor_
    val went_left : 'a cursor_ -> bool
    val went_right : 'a cursor_ -> bool
    val has_value : 'a cursor_ -> bool
    val get_value : 'a cursor_ -> 'a elt_
    val to_string : 'a set -> string
    val gen : ?size:int -> Random.State.t -> t
  end