let init_range env lv typ_elt ka kb wp =
on_context env "init_range" wp Keep_opened Keep_assigns
(fun env _assigns p ->
try
let mem = L.mem_at env Clabels.Here in
let obj = Ctypes.object_of typ_elt in
let loc = compute_init_loc mem lv in
let loaded = WpModel.logic_of_value (WpModel.load mem obj loc) in
match WpModel.symb_is_init_range obj with
| Some p_range ->
F.p_implies
(F.p_app3 p_range loaded (F.e_int64 ka) (F.e_int64 kb)) p
| None -> p
with SkipInit -> p)