let iter fp ft = function
| Ptrue | Pfalse -> ()
| Prel(_,ts) | Pcall(_,ts) -> List.iter ft ts
| Pimplies(a,b) | Pand(a,b) | Por(a,b) | Piff(a,b) -> fp a ; fp b
| Pcond(t,a,b) -> ft t ; fp a ; fp b
| Plet(_,t,a) -> ft t ; fp a
| Pnot a | Pnamed(_,a) | Pforall(_,a) | Pexists(_,a) -> fp a