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