let rec depend ids = function
| Ptrue | Pfalse -> ids
| Prel(_,ts) -> List.fold_left TERM.depend ids ts
| Pcall(id,ts) -> List.fold_left TERM.depend (Iset.add id ids) ts
| Pimplies(p,q) | Pand(p,q) | Por(p,q) | Piff(p,q) ->
depend (depend ids p) q
| Pnot p | Pnamed(_,p) | Pforall(_,p) | Pexists(_,p) ->
depend ids p (* names are not declared *)
| Pcond(t,p,q) ->
depend (depend (TERM.depend ids t) p) q
| Plet(_,a,p) ->
depend (TERM.depend ids a) p