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