Require Export VST.veric.environ_lemmas.
Require Export VST.veric.expr_lemmas3.
(** Main soundness result for the typechecker **)
Ltac unfold_cop2_sem_cmp :=
unfold Clight_Cop2.sem_cmp, Clight_Cop2.sem_cmp_pl, Clight_Cop2.sem_cmp_lp, Clight_Cop2.sem_cmp_pp.

Lemma eval_binop_relate:
forall {CS: compspecs} Delta (ge: genv) te ve rho b e1 e2 t m
(Hcenv: cenv_sub (@cenv_cs CS) (genv_cenv ge)),
rho = construct_rho (filter_genv ge) ve te ->
typecheck_environ Delta rho ->
((denote_tc_assert (typecheck_expr Delta e1) rho) (m_phi m) ->
Clight.eval_expr ge ve te (m_dry m) e1 (eval_expr e1 rho)) ->
((denote_tc_assert (typecheck_expr Delta e2) rho) (m_phi m) ->
Clight.eval_expr ge ve te (m_dry m) e2 (eval_expr e2 rho)) ->
(denote_tc_assert (typecheck_expr Delta (Ebinop b e1 e2 t)) rho) (m_phi m) ->
Clight.eval_expr ge ve te (m_dry m) (Ebinop b e1 e2 t)
(eval_expr (Ebinop b e1 e2 t) rho).