Definition some_pt_type := Tpointer Tvoid noattr.

(* Specifications: *)
Lemma tc_force_Some : forall ov t, tc_val t (force_val ov) -> exists v, ov = Some v.
Lemma typecheck_binop_sound2: forall {CS: compspecs} (Delta : tycontext) (rho : environ) m (b : binary_operation) (e1 e2 : expr) (t : type), denote_tc_assert (typecheck_expr Delta e2) rho m -> denote_tc_assert (isBinOpResultType b e1 e2 t) rho m -> denote_tc_assert (typecheck_expr Delta e1) rho m -> tc_val (typeof e2) (eval_expr e2 rho) -> tc_val (typeof e1) (eval_expr e1 rho) -> tc_val t (eval_binop b (typeof e1) (typeof e2) (eval_expr e1 rho) (eval_expr e2 rho)).
Lemma eval_binop_relate_fail : forall {CS: compspecs} (Delta : tycontext) (rho : environ) (b : binary_operation) (e1 e2 : expr) (t : type) m, typecheck_environ Delta rho -> forall (ge : genv) te ve, rho = construct_rho (filter_genv ge) ve te -> denote_tc_assert (typecheck_expr Delta e2) rho (m_phi m) -> denote_tc_assert (isBinOpResultType b e1 e2 t) rho (m_phi m) -> denote_tc_assert (typecheck_expr Delta e1) rho (m_phi m) -> None = sem_binary_operation' b (typeof e1) (typeof e2) (eval_expr e1 rho) (eval_expr e2 rho) -> Clight.eval_expr ge ve te (m_dry m) e2 (eval_expr e2 rho) -> Clight.eval_expr ge ve te (m_dry m) e1 (eval_expr e1 rho) -> Clight.eval_expr ge ve te (m_dry m) (Ebinop b e1 e2 t) Vundef.
Lemma tc_test_eq0: forall b i m, (denote_tc_test_eq (Vptr b i) (Vint Int.zero)) (m_phi m) -> Mem.weak_valid_pointer (m_dry m) b (Ptrofs.unsigned i) = true.
Lemma cop2_sem_cast : forall t1 t2 v m, (classify_cast t1 t2 = classify_cast size_t tbool -> denote_tc_test_eq v (Vint Int.zero) (m_phi m) )-> t1 <> int_or_ptr_type -> t2 <> int_or_ptr_type -> tc_val t1 v -> Cop.sem_cast v t1 t2 (m_dry m) = sem_cast t1 t2 v.