Require Export VST.veric.environ_lemmas.
Require Export VST.veric.expr_lemmas3.
Require Export VST.veric.expr_lemmas4.

(* Specifications: *)
(* Lemma typecheck_environ_update_te: forall rho c Delta, typecheck_temp_environ (te_of rho) (temp_types (update_tycon Delta c)) -> typecheck_temp_environ  (te_of rho) (temp_types Delta)  with typecheck_ls_update_te : forall Delta ty b id l, (temp_types Delta) ! id = Some (ty, b) -> exists b2, (temp_types (join_tycon_labeled l Delta)) ! id = Some (ty, b2).  Lemma typecheck_environ_update_ve : forall (rho : environ) (c : statement) (Delta : tycontext), typecheck_var_environ (ve_of rho) (var_types (update_tycon Delta c)) -> typecheck_var_environ (ve_of rho) (var_types Delta).   Lemma typecheck_environ_update_ge : forall (rho : environ) (c : statement) (Delta : tycontext), typecheck_glob_environ (ge_of rho) (glob_types (update_tycon Delta c)) -> typecheck_glob_environ (ge_of rho) (glob_types Delta).  Lemma typecheck_environ_update: forall rho c Delta, typecheck_environ (update_tycon Delta c) rho -> typecheck_environ Delta rho. *)
Lemma tc_bool_val:
forall v t,
tc_val t v ->
bool_type t = true ->
exists b, strict_bool_val v t = Some b.
Lemma bool_val_strict: forall t v b, tc_val t v -> bool_type t = true -> bool_val t v = Some b ->
strict_bool_val v t = Some b.
Lemma bool_val_Cop: forall t v m b b', bool_val t v = Some b -> Cop.bool_val v t m = Some b' ->
b = b'.
Lemma map_ptree_rel : forall id v te, Map.set id v (make_tenv te) = make_tenv (PTree.set id v te).
intros. unfold Map.set. unfold make_tenv. extensionality. rewrite PTree.gsspec; auto.