-`subpath`:The[normalisedsubpathstring](#function-library-lib.path.subpath.normalise) that when [appended](#function-library-lib.path.append) to `root` returns the original path.
Laws:
-[Appending](#function-library-lib.path.append) the `root` and `subpath` gives the original path:
Split[asubpath](#function-library-lib.path.subpath.isValid) into its path component strings.
Throwanerrorifthesubpathisn'tvalid.
Notethatthereturnedpathcomponentsarealso[validsubpathstrings](#function-library-lib.path.subpath.isValid), though they are intentionally not [normalised](#function-library-lib.path.subpath.normalise).
Laws:
-Splittingasubpathintocomponentsand[joining](#function-library-lib.path.subpath.join) the components gives the same subpath but [normalised](#function-library-lib.path.subpath.normalise):