(** ** Compatibility with memory injections *)
Section INITMEM_INJ.
Variable ge: t.
Variable thr: block.
Hypothesis symb_inject: forall id b, find_symbol ge id = Some b -> Plt b thr.

(* Specifications: *)
Lemma store_zeros_neutral:
forall m b p n m',
Mem.inject_neutral thr m ->
Plt b thr ->
store_zeros m b p n = Some m' ->
Mem.inject_neutral thr m'.
Lemma store_init_data_neutral:
forall m b p id m',
Mem.inject_neutral thr m ->
Plt b thr ->
store_init_data ge m b p id = Some m' ->
Mem.inject_neutral thr m'.
Lemma store_init_data_list_neutral:
forall b idl m p m',
Mem.inject_neutral thr m ->
Plt b thr ->
store_init_data_list ge m b p idl = Some m' ->
Mem.inject_neutral thr m'.
Lemma alloc_global_neutral:
forall idg m m',
alloc_global ge m idg = Some m' ->
Mem.inject_neutral thr m ->
Plt (Mem.nextblock m) thr ->
Mem.inject_neutral thr m'.
Lemma store_zeros_neutral:
forall m b p n m',
Mem.inject_neutral thr m ->
Plt b thr ->
store_zeros m b p n = Some m' ->
Mem.inject_neutral thr m'.
Lemma store_init_data_neutral:
forall m b p id m',
Mem.inject_neutral thr m ->
Plt b thr ->
store_init_data ge m b p id = Some m' ->
Mem.inject_neutral thr m'.
Lemma store_init_data_list_neutral:
forall b idl m p m',
Mem.inject_neutral thr m ->
Plt b thr ->
store_init_data_list ge m b p idl = Some m' ->
Mem.inject_neutral thr m'.
Lemma alloc_global_neutral:
forall idg m m',
alloc_global ge m idg = Some m' ->
Mem.inject_neutral thr m ->
Plt (Mem.nextblock m) thr ->
Mem.inject_neutral thr m'.