let rec fold_implies hs labels = function | Pimplies(p,q) -> fold_implies (fold_and hs labels p) [] q | Pnamed(label,p) -> fold_implies hs (label::labels) p | p -> List.rev hs , apply_labels p labels