method vpredicate_named p = match p.content with
| Pold p ->
let l = Logic_const.old_label in
let old_label = self#change_label l in
let new_p = {p with content = Pnot p} in
Cil.ChangeDoChildrenPost (new_p, self#restore_pred old_label)
| Pat (p, l) ->
let old_label = self#change_label l in
let new_p = {p with content = Pnot p} in
Cil.ChangeDoChildrenPost (new_p, self#restore_pred old_label)
| Papp _ ->
let post = function
| {content=Papp(predicate,labels,args)} as p ->
let new_labels =
List.map
(fun (logic,stmt) -> logic, label_map stmt)
labels
in { p with content=Papp(predicate,new_labels,args) }
| _ -> assert false
in
Cil.ChangeDoChildrenPost (p,post)
| _ -> Cil.DoChildren