sig
  type filename = string
  type extension = string
  exception BaseFilenameRelative of FilePath.filename
  exception UnrecognizedOS of string
  exception EmptyFilename
  exception NoExtension of FilePath.filename
  exception InvalidFilename of FilePath.filename
  val is_subdir : FilePath.filename -> FilePath.filename -> bool
  val is_updir : FilePath.filename -> FilePath.filename -> bool
  val compare : FilePath.filename -> FilePath.filename -> int
  val current_dir : FilePath.filename
  val parent_dir : FilePath.filename
  val make_filename : string list -> FilePath.filename
  val basename : FilePath.filename -> FilePath.filename
  val dirname : FilePath.filename -> FilePath.filename
  val concat : FilePath.filename -> FilePath.filename -> FilePath.filename
  val reduce : ?no_symlink:bool -> FilePath.filename -> FilePath.filename
  val make_absolute :
    FilePath.filename -> FilePath.filename -> FilePath.filename
  val make_relative :
    FilePath.filename -> FilePath.filename -> FilePath.filename
  val reparent :
    FilePath.filename ->
    FilePath.filename -> FilePath.filename -> FilePath.filename
  val identity : FilePath.filename -> FilePath.filename
  val is_valid : FilePath.filename -> bool
  val is_relative : FilePath.filename -> bool
  val is_current : FilePath.filename -> bool
  val is_parent : FilePath.filename -> bool
  val chop_extension : FilePath.filename -> FilePath.filename
  val get_extension : FilePath.filename -> FilePath.extension
  val check_extension : FilePath.filename -> FilePath.extension -> bool
  val add_extension :
    FilePath.filename -> FilePath.extension -> FilePath.filename
  val replace_extension :
    FilePath.filename -> FilePath.extension -> FilePath.filename
  val string_of_path : FilePath.filename list -> string
  val path_of_string : string -> FilePath.filename list
  module type PATH_SPECIFICATION =
    sig
      type filename
      type extension
      val string_of_filename : FilePath.PATH_SPECIFICATION.filename -> string
      val filename_of_string : string -> FilePath.PATH_SPECIFICATION.filename
      val extension_of_string :
        string -> FilePath.PATH_SPECIFICATION.extension
      val string_of_extension :
        FilePath.PATH_SPECIFICATION.extension -> string
      val make_filename : string list -> FilePath.PATH_SPECIFICATION.filename
      val is_subdir :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename -> bool
      val is_updir :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename -> bool
      val compare :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename -> int
      val basename :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename
      val dirname :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename
      val concat :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename
      val reduce :
        ?no_symlink:bool ->
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename
      val make_absolute :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename
      val make_relative :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename
      val reparent :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename
      val identity :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename
      val is_valid : FilePath.PATH_SPECIFICATION.filename -> bool
      val is_relative : FilePath.PATH_SPECIFICATION.filename -> bool
      val is_current : FilePath.PATH_SPECIFICATION.filename -> bool
      val is_parent : FilePath.PATH_SPECIFICATION.filename -> bool
      val chop_extension :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.filename
      val get_extension :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.extension
      val check_extension :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.extension -> bool
      val add_extension :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.extension ->
        FilePath.PATH_SPECIFICATION.filename
      val replace_extension :
        FilePath.PATH_SPECIFICATION.filename ->
        FilePath.PATH_SPECIFICATION.extension ->
        FilePath.PATH_SPECIFICATION.filename
      val string_of_path :
        FilePath.PATH_SPECIFICATION.filename list -> string
      val path_of_string :
        string -> FilePath.PATH_SPECIFICATION.filename list
      val current_dir : FilePath.PATH_SPECIFICATION.filename
      val parent_dir : FilePath.PATH_SPECIFICATION.filename
    end
  module type PATH_STRING_SPECIFICATION =
    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
  module DefaultPath : PATH_STRING_SPECIFICATION
  module UnixPath : PATH_STRING_SPECIFICATION
  module MacOSPath : PATH_STRING_SPECIFICATION
  module Win32Path : PATH_STRING_SPECIFICATION
  module CygwinPath : PATH_STRING_SPECIFICATION
end