Definition initial_mem_match (bc: block_classification) (m: mem) (g: genv) :=
forall id b v,
Genv.find_symbol g id = Some b -> Genv.find_var_info g b = Some v ->
v.(gvar_volatile) = false -> v.(gvar_readonly) = true ->
bmatch bc m b (store_init_data_list (ablock_init Pbot) 0 v.(gvar_init)).

(* Specifications: *)
Lemma alloc_global_match:
forall m g idg m',
Genv.genv_next g = Mem.nextblock m ->
initial_mem_match bc m g ->
Genv.alloc_global ge m idg = Some m' ->
initial_mem_match bc m' (Genv.add_global g idg).
Lemma alloc_globals_match:
forall gl m g m',
Genv.genv_next g = Mem.nextblock m ->
initial_mem_match bc m g ->
Genv.alloc_globals ge m gl = Some m' ->
initial_mem_match bc m' (Genv.add_globals g gl).