functor (Ord : Ord.S)
  (Base : sig
            type t
            val empty_tree : t
            val insert : t -> Ord.t -> t
            val left : t -> t
            val right : t -> t
            val value : t -> Ord.t
          end)
  ->
  sig
    type t = Base.t
    val empty_tree : t
    val insert : t -> Ord.t -> t
    val find : t -> Ord.t -> bool
    val height : t -> int
    val string_of_tree : t -> string
  end