sig
  type 'a t
  type key
  val empty : 'Splay_tree.S.t
  val is_empty : 'Splay_tree.S.t -> bool
  val concat : 'Splay_tree.S.t -> 'Splay_tree.S.t -> 'Splay_tree.S.t
  val sandwich :
    'Splay_tree.S.t ->
    Splay_tree.S.key -> '-> 'Splay_tree.S.t -> 'Splay_tree.S.t
  val splay :
    'Splay_tree.S.t ->
    Splay_tree.S.key -> 'Splay_tree.S.t * 'a option * 'Splay_tree.S.t
  val splay' :
    'Splay_tree.S.t ->
    Splay_tree.S.key ->
    'Splay_tree.S.t * (Splay_tree.S.key * 'a) option * 'Splay_tree.S.t
  val delete_min :
    'Splay_tree.S.t -> (Splay_tree.S.key * 'a * 'Splay_tree.S.t) option
  val delete_max :
    'Splay_tree.S.t -> (Splay_tree.S.key * 'a * 'Splay_tree.S.t) option
  val mem : 'Splay_tree.S.t -> Splay_tree.S.key -> 'Splay_tree.S.t * bool
  val find :
    'Splay_tree.S.t -> Splay_tree.S.key -> 'Splay_tree.S.t * 'a option
  val set : 'Splay_tree.S.t -> Splay_tree.S.key -> '-> 'Splay_tree.S.t
  val delete : 'Splay_tree.S.t -> Splay_tree.S.key -> 'Splay_tree.S.t
end