Proof (Genv.senv_match TRANSL).

(* Specifications: *)
Lemma functions_translated:
forall (v: val) (f: fundef),
Genv.find_funct ge v = Some f ->
exists cunit, Genv.find_funct tge v = Some (transf_fundef (romem_for cunit) f) /\ linkorder cunit prog.
Lemma function_ptr_translated:
forall (b: block) (f: fundef),
Genv.find_funct_ptr ge b = Some f ->
exists cunit, Genv.find_funct_ptr tge b = Some (transf_fundef (romem_for cunit) f) /\ linkorder cunit prog.
Lemma sig_function_translated:
forall rm f,
funsig (transf_fundef rm f) = funsig f.
Lemma init_regs_lessdef:
forall rl vl1 vl2,
Val.lessdef_list vl1 vl2 ->
regs_lessdef (init_regs vl1 rl) (init_regs vl2 rl).
Lemma transf_ros_correct:
forall bc rs ae ros f rs',
genv_match bc ge ->
ematch bc rs ae ->
find_function ge ros rs = Some f ->
regs_lessdef rs rs' ->
exists cunit,
find_function tge (transf_ros ae ros) rs' = Some (transf_fundef (romem_for cunit) f)
/\ linkorder cunit prog.
Lemma const_for_result_correct:
forall a op bc v sp m,
const_for_result a = Some op ->
vmatch bc v a ->
bc sp = BCstack ->
genv_match bc ge ->
exists v', eval_operation tge (Vptr sp Ptrofs.zero) op nil m = Some v' /\ Val.lessdef v v'.
Lemma function_ptr_translated:
forall v f,
Genv.find_funct_ptr ge v = Some f ->
exists cu tf, Genv.find_funct_ptr tge v = Some tf /\ match_fundef cu f tf /\ linkorder cu prog.