sig
  type backtrace = private
      Leaf of Pathname.t
    | Choice of Solver.backtrace list
    | Depth of Pathname.t * Solver.backtrace
    | Target of string * Solver.backtrace
  exception Failed of Solver.backtrace
  exception Circular of Pathname.t * Pathname.t list
  val solve : Pathname.t -> unit
  val solve_target : string -> Pathname.t list -> Pathname.t
end