let rec fold_and acc labels = function | Pnamed(label,p) -> fold_and acc (label::labels) p | Pand(p,q) -> fold_and (fold_and acc labels q) labels p | Ptrue -> acc | p -> apply_labels p labels :: acc