let rec increase_prefix p n = assert (n >= 0); if n = 0 then p else match p.v with | [] -> assert false | b :: v -> increase_prefix { u = p.u @ [b]; v = p.v @ [b]; } (n - 1)