let not_above_root (p : abs t) = match p with | (`Abs, ph :: pt) -> let () = assert (ph = "") in let pt' = List.drop_while (( = ) "..") pt in if pt == pt' then p else (`Abs, ("" :: pt')) | (`Abs, []) -> assert false