Remark sound_state_inv:
  forall st cunit,
  sound_state st -> linkorder cunit prog -> sound_state_base cunit ge st.

(* Specifications: *)
Lemma initial_block_classification: forall m, Genv.init_mem prog = Some m -> exists bc, genv_match bc ge /\ bc_below bc (Mem.nextblock m) /\ bc_nostack bc /\ (forall b id, bc b = BCglob id -> Genv.find_symbol ge id = Some b) /\ (forall b, Mem.valid_block m b -> bc b <> BCinvalid).
Lemma store_init_data_summary: forall ab p id, pge Glob (ab_summary ab) -> pge Glob (ab_summary (store_init_data ab p id)).
Lemma store_init_data_list_summary: forall idl ab p, pge Glob (ab_summary ab) -> pge Glob (ab_summary (store_init_data_list ab p idl)).
Lemma store_init_data_sound: forall m b p id m' ab, Genv.store_init_data ge m b p id = Some m' -> bmatch bc m b ab -> bmatch bc m' b (store_init_data ab p id).
Lemma store_init_data_list_sound: forall idl m b p m' ab, Genv.store_init_data_list ge m b p idl = Some m' -> bmatch bc m b ab -> bmatch bc m' b (store_init_data_list ab p idl).
Lemma store_init_data_other: forall m b p id m' ab b', Genv.store_init_data ge m b p id = Some m' -> b' <> b -> bmatch bc m b' ab -> bmatch bc m' b' ab.
Lemma store_init_data_list_other: forall b b' ab idl m p m', Genv.store_init_data_list ge m b p idl = Some m' -> b' <> b -> bmatch bc m b' ab -> bmatch bc m' b' ab.
Lemma store_zeros_same: forall p m b pos n m', store_zeros m b pos n = Some m' -> smatch bc m b p -> smatch bc m' b p.
Lemma store_zeros_other: forall b' ab m b p n m', store_zeros m b p n = Some m' -> b' <> b -> bmatch bc m b' ab -> bmatch bc m' b' ab.