Definition obox (Delta: tycontext) (i: ident) (P: environ -> mpred): environ -> mpred :=
ALL v: _,
match ((temp_types Delta) ! i) with
| Some t => !! (tc_val' t v) --> subst i (`v) P
| _ => TT
end.
Definition odia (Delta: tycontext) (i: ident) (P: environ -> mpred): environ -> mpred :=
EX v: _,
match ((temp_types Delta) ! i) with
| Some t => !! (tc_val' t v) && subst i (`v) P
| _ => FF
end.

Lemma subst_odia: forall Delta id v (P: environ -> mpred), subst id (`v) (odia Delta id P) = odia Delta id P.
Definition temp_guard (Delta : tycontext) (i: ident): Prop :=
(temp_types Delta) ! i <> None.