sig
  type t = string
  val concat : t -> t -> t
  val compare : t -> t -> int
  val equal : t -> t -> bool
  val exists : t -> bool
  val mk : string -> t
  val define_context : string -> string list -> unit
  val include_dirs_of : string -> string list
  val copy : t -> t -> unit
  val to_string : t -> string
  val print : Format.formatter -> t -> unit
  val current_dir_name : t
  val parent_dir_name : t
  val read : t -> string
  val same_contents : t -> t -> bool
  val basename : t -> t
  val dirname : t -> t
  val is_relative : t -> bool
  val readlink : t -> t
  val readdir : t -> t array
  val is_link : t -> bool
  val is_directory : t -> bool
  val add_extension : string -> t -> t
  val check_extension : t -> string -> bool
  val get_extension : t -> string
  val remove_extension : t -> t
  val update_extension : string -> t -> t
  val get_extensions : t -> string
  val remove_extensions : t -> t
  val update_extensions : string -> t -> t
  val print_path_list : Format.formatter -> t list -> unit
  val pwd : t
  val parent : t -> t
  val is_prefix : t -> t -> bool
  val is_implicit : t -> bool
  module Operators :
    sig val ( / ) : t -> t -> t val ( -.- ) : t -> string -> t end
  val link_to_dir : t -> t -> bool
  val normalize : t -> t
end