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