let rec term_calls f = function
| Tconst _ | Tvar _ -> false
| Tapp(g,ts) -> f=g || List.exists (term_calls f) ts
| Tgetfield(_,a) -> term_calls f a
| Tsetfield(_,a,b) | Taccess(a,b) | Tlet(_,a,b) ->
term_calls f a || term_calls f b
| Tupdate(a,b,c) | Tif(a,b,c) ->
term_calls f a || term_calls f b || term_calls f c