let guards_with f xs p =
let do_with f p x =
match F.kind_of_var x with
| Model _ -> p
| Acsl (_,Ctype ty) ->
begin
match object_of ty with
| C_int i -> f (guard i (F.var x)) p
| C_float _ -> p
| C_pointer _ -> p
| _ -> p
end
| Acsl _ -> p
in
List.fold_left (do_with f) xs p