let rec pred_calls f = function
| Ptrue | Pfalse -> false
| Papp(g,ts) -> f=g || List.exists (term_calls f) ts
| Pimplies(a,b) | Pand(a,b) | Por(a,b) | Piff(a,b) ->
pred_calls f a || pred_calls f b
| Pnamed(_,p) | Pnot p | Pforall(_,p) | Pexists(_,p) ->
pred_calls f p
| Pif(a,p,q) ->
term_calls f a || pred_calls f p || pred_calls f q
| Plet(_,a,p) ->
term_calls f a || pred_calls f p