let rec depend ids = function
| Ttrue | Tfalse | Tint _ | Treal _ | Tvar _ -> ids
| Tprim(_,ts) -> List.fold_left depend ids ts
| Tcall(f,ts) -> List.fold_left depend (Iset.add f ids) ts
| Tgetfield(a,f) -> depend (Iset.add f.f_record ids) a
| Tsetfield(a,f,b) ->
depend (depend (Iset.add f.f_record ids) a) b
| Taccess(a,b) | Tlet(_,a,b) ->
depend (depend ids a) b
| Tupdate(a,b,c) | Tif(a,b,c) ->
depend (depend (depend ids a) b) c