let dependencies = function
  | TYPE _ -> Iset.empty
  | RECORD fs -> List.fold_left add_depend_field Iset.empty fs
  | FUNCTION (xs,t,None->
      List.fold_left add_depend_var (add_depend_tau Iset.empty t) xs
  | FUNCTION (xs,t,Some e) ->
      let core = add_depend_term Iset.empty e in
      List.fold_left add_depend_var (add_depend_tau core t) xs
  | PREDICATE(xs,None->
      List.fold_left add_depend_var Iset.empty xs
  | PREDICATE(xs,Some p) ->
      List.fold_left add_depend_var (add_depend_pred Iset.empty p) xs
  | AXIOM p -> add_depend_pred Iset.empty p