let rec set_of = function
| Value v -> D.singleton (M.logic_of_value v)
| Data d -> D.singleton d
| Loc l -> D.singleton (F.wrap (M.pointer_of_loc l))
| List ds -> D.unions (List.map set_of ds)
| Interval i -> D.interval i
| Set s -> s
| Range _ -> Wp_parameters.not_yet_implemented "set of zone"