Proof (mge_defs globalenvs_match).

(* Specifications: *)
Theorem find_def_match:
forall b g,
find_def (globalenv p) b = Some g ->
exists tg,
find_def (globalenv tp) b = Some tg /\ match_globdef match_fundef match_varinfo ctx g tg.
Theorem find_funct_ptr_match:
forall b f,
find_funct_ptr (globalenv p) b = Some f ->
exists cunit tf,
find_funct_ptr (globalenv tp) b = Some tf /\ match_fundef cunit f tf /\ linkorder cunit ctx.
Theorem find_funct_match:
forall v f,
find_funct (globalenv p) v = Some f ->
exists cunit tf,
find_funct (globalenv tp) v = Some tf /\ match_fundef cunit f tf /\ linkorder cunit ctx.
Theorem find_var_info_match:
forall b v,
find_var_info (globalenv p) b = Some v ->
exists tv,
find_var_info (globalenv tp) b = Some tv /\ match_globvar match_varinfo v tv.
Theorem find_symbol_match:
forall (s : ident),
find_symbol (globalenv tp) s = find_symbol (globalenv p) s.
Theorem senv_match:
Senv.equiv (to_senv (globalenv p)) (to_senv (globalenv tp)).
Lemma store_init_data_list_match:
forall idl m b ofs m',
store_init_data_list (globalenv p) m b ofs idl = Some m' ->
store_init_data_list (globalenv tp) m b ofs idl = Some m'.
Lemma alloc_globals_match:
forall gl1 gl2, list_forall2 (match_ident_globdef match_fundef match_varinfo ctx) gl1 gl2 ->
forall m m',
alloc_globals (globalenv p) m gl1 = Some m' ->
alloc_globals (globalenv tp) m gl2 = Some m'.
Theorem init_mem_match:
forall m, init_mem p = Some m -> init_mem tp = Some m.
Theorem find_def_match:
forall b g,
find_def (globalenv p) b = Some g ->
exists tg,
find_def (globalenv tp) b = Some tg /\ match_globdef match_fundef match_varinfo ctx g tg.
Theorem find_funct_ptr_match:
forall b f,
find_funct_ptr (globalenv p) b = Some f ->
exists cunit tf,
find_funct_ptr (globalenv tp) b = Some tf /\ match_fundef cunit f tf /\ linkorder cunit ctx.
Theorem find_funct_match:
forall v f,
find_funct (globalenv p) v = Some f ->
exists cunit tf,
find_funct (globalenv tp) v = Some tf /\ match_fundef cunit f tf /\ linkorder cunit ctx.
Theorem find_var_info_match:
forall b v,
find_var_info (globalenv p) b = Some v ->
exists tv,
find_var_info (globalenv tp) b = Some tv /\ match_globvar match_varinfo v tv.
Theorem find_symbol_match:
forall (s : ident),
find_symbol (globalenv tp) s = find_symbol (globalenv p) s.
Theorem senv_match:
Senv.equiv (to_senv (globalenv p)) (to_senv (globalenv tp)).
Lemma store_init_data_list_match:
forall idl m b ofs m',
store_init_data_list (globalenv p) m b ofs idl = Some m' ->
store_init_data_list (globalenv tp) m b ofs idl = Some m'.
Lemma alloc_globals_match:
forall gl1 gl2, list_forall2 (match_ident_globdef match_fundef match_varinfo ctx) gl1 gl2 ->
forall m m',
alloc_globals (globalenv p) m gl1 = Some m' ->
alloc_globals (globalenv tp) m gl2 = Some m'.
Theorem init_mem_match:
forall m, init_mem p = Some m -> init_mem tp = Some m.