`sig type ustring = string type uchar = char module OperatorLift : sig val ( !! ) : string -> ustring end type t = ustring list val is_relative : t -> bool val is_absolute : t -> bool val root : t val append : t -> ustring -> t val concat : t -> t -> t module Operators : sig val ( /: ) : t -> ustring -> t val ( //@ ) : t -> t -> t end module Infix : sig val ( /: ) : t -> ustring -> t val ( //@ ) : t -> t -> t end exception Malformed_path val normalize_filepath : t -> t val normalize_in_graph : t -> t val normalize_in_tree : t -> t val normalize : t -> t val parent : t -> t val belongs : t -> t -> bool val relative_to_any : t -> t -> t exception Not_parent val relative_to_parent : t -> t -> t exception Illegal_char type validator = ustring -> bool val default_validator : validator ref val to_ustring : t -> ustring val to_string : t -> string val of_string : ustring -> t val s : t -> string val p : ustring -> t val name : t -> ustring val map_name : (ustring -> ustring) -> t -> t val ext : t -> ustring option val map_ext : (ustring option -> ustring option) -> t -> t val name_core : t -> ustring type components = t * ustring * ustring option val split : t -> components val join : components -> t val map : (components -> components) -> t -> t val drive_letter : t -> uchar option end`