Ltac dec_enc :=
match goal with
[ |- decode_val ?CH _ = ?V] => assert (DE := decode_encode_val_general V CH CH);
                               apply decode_encode_val_similar in DE; auto
end.

Lemma load_cast: forall (t: type) (e2 : expr) (ch : memory_chunk) rho phi m, tc_val (typeof e2) (eval_expr e2 rho) -> denote_tc_assert (isCastResultType (typeof e2) t e2) rho phi -> access_mode t = By_value ch -> Val.load_result ch (force_val (Cop.sem_cast (eval_expr e2 rho) (typeof e2) t m)) = force_val (Cop.sem_cast (eval_expr e2 rho) (typeof e2) t m).