let data_valid m k d =
let t =
match k with
| Kptr te -> te
| Kset (Kptr te) -> te
| _ -> WpLog.fatal "unexpected type for valid predicate"
in
let te = Ctypes.object_of t in
F.p_conj (List.map (M.valid m) (assigned_of_data te [] d))