Require Export VST.veric.environ_lemmas.
Require Export VST.veric.expr_lemmas3.
(** Main soundness result for the typechecker **)

(* Specifications: *)
Lemma typecheck_both_sound:
forall {CS: compspecs} Delta rho m e ,
typecheck_environ Delta rho ->
(denote_tc_assert (typecheck_expr Delta e) rho m ->
tc_val (typeof e) (eval_expr e rho)) /\
(forall pt,
denote_tc_assert (typecheck_lvalue Delta e) rho m ->
is_pointer_type pt = true ->
tc_val pt (eval_lvalue e rho)).
Lemma typecheck_expr_sound : forall {CS: compspecs} Delta rho m e,
typecheck_environ Delta rho ->
denote_tc_assert (typecheck_expr Delta e) rho m ->
tc_val (typeof e) (eval_expr e rho).