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 obox_left2: forall Delta i P Q,
temp_guard Delta i ->
local (tc_environ Delta) && P |-- Q ->
local (tc_environ Delta) && obox Delta i P |-- obox Delta i Q.