Fixpoint id2pred_star   {cs: compspecs}
(Delta: tycontext) (gz: globals) (sh: share) (v: val) (dl: list init_data) : environ->mpred :=
match dl with
| d::dl' => `(init_data2pred' Delta gz d sh v)
* id2pred_star Delta gz sh (offset_val (init_data_size d) v) dl'
| nil => emp
end.
Arguments id2pred_star cs Delta gz sh v dl rho  / .

Lemma unpack_globvar_star  {cs: compspecs}:
forall Delta gz i gv,
(var_types Delta) ! i = None ->
(glob_types Delta) ! i = Some (gvar_info gv) ->
(complete_legal_cosu_type (gvar_info gv) && is_aligned cenv_cs ha_env_cs la_env_cs (gvar_info gv) 0)% bool = true ->
gvar_volatile gv = false ->
(globvar_all_aligned gv = true) ->
init_data_list_size (gvar_init gv) <= sizeof (gvar_info gv) <= Ptrofs.max_unsigned ->
local (`and (tc_environ Delta) (fun rho =>gz = globals_of_env rho)) && globvar2pred gz (i, gv) |--
id2pred_star Delta gz (readonly2share (gvar_readonly gv)) (gz i) (gvar_init gv).