sig
  type rel
  type abs
  type t = Abs of Path.abs | Rel of Path.rel
  exception Error of string
  exception EConcat_path of Path.abs * Path.rel * string
  exception ECanonicalize of string
  val make : string -> Path.t
  val concat : Path.abs -> Path.t -> Path.abs
  val to_abs : Path.t -> Path.abs
  val string_of : Path.t -> string
  module R :
    sig
      exception ERemove_prefix of Path.rel * Path.rel * string
      val make : string -> Path.rel
      val make_from_components : string list -> Path.rel
      val concat : Path.rel -> Path.rel -> Path.rel
      val concat' : Path.rel list -> Path.rel
      val chop_extension : Path.rel -> Path.rel
      val basename : Path.rel -> Path.rel
      val dirname : Path.rel -> Path.rel
      val string_of : Path.rel -> string
      val filter_dir_components : (string -> bool) -> Path.rel -> Path.rel
      val components : Path.rel -> string list
      val compare : Path.rel -> Path.rel -> int
      val remove_prefix : Path.rel -> Path.rel -> Path.rel
      val is_prefix : Path.rel -> Path.rel -> bool
    end
  module A :
    sig
      exception ERemove_prefix of Path.abs * Path.abs * string
      val make : string -> Path.abs
      val concat : Path.abs -> Path.rel -> Path.abs
      val chop_extension : Path.abs -> Path.abs
      val basename : Path.abs -> Path.rel
      val dirname : Path.abs -> Path.abs
      val open_temp_file :
        ?mode:Pervasives.open_flag list ->
        string -> string -> Path.abs * Pervasives.out_channel
      val executable_name : Path.abs
      val getcwd : unit -> Path.abs
      val is_prefix : Path.abs -> Path.abs -> bool
      val remove_prefix : Path.abs -> Path.abs -> Path.rel
      val remove_prefix_list : Path.abs -> Path.abs list -> Path.rel list
      val canonicalize : Path.abs -> Path.abs
      val file_exists : Path.abs -> bool
      val components : Path.abs -> string list
      val string_of : Path.abs -> string
      val compare : Path.abs -> Path.abs -> int
    end
end