sig
  module Abstract : PATH_SPECIFICATION
  type filename = string
  type extension = string
  val string_of_filename : filename -> string
  val filename_of_string : string -> filename
  val extension_of_string : string -> extension
  val string_of_extension : extension -> string
  val make_filename : string list -> filename
  val is_subdir : filename -> filename -> bool
  val is_updir : filename -> filename -> bool
  val compare : filename -> filename -> int
  val basename : filename -> filename
  val dirname : filename -> filename
  val concat : filename -> filename -> filename
  val reduce : ?no_symlink:bool -> filename -> filename
  val make_absolute : filename -> filename -> filename
  val make_relative : filename -> filename -> filename
  val reparent : filename -> filename -> filename -> filename
  val identity : filename -> filename
  val is_valid : filename -> bool
  val is_relative : filename -> bool
  val is_current : filename -> bool
  val is_parent : filename -> bool
  val chop_extension : filename -> filename
  val get_extension : filename -> extension
  val check_extension : filename -> extension -> bool
  val add_extension : filename -> extension -> filename
  val replace_extension : filename -> extension -> filename
  val string_of_path : filename list -> string
  val path_of_string : string -> filename list
  val current_dir : filename
  val parent_dir : filename
end