End MSUBST_DENOTE_TC_ASSERT.
Definition legal_tc_init (Delta: tycontext): tc_assert -> Prop :=
fix legal_tc_init (tc: tc_assert): Prop :=
match tc with
| tc_andp' tc1 tc2 => legal_tc_init tc1 /\ legal_tc_init tc2
| tc_orp' tc1 tc2 => legal_tc_init tc1 /\ legal_tc_init tc2
| tc_initialized i t => (temp_types Delta) ! i = Some t
| _ => True
end.

Lemma legal_tc_init_tc_andp: forall Delta tc1 tc2,
legal_tc_init Delta tc1 ->
legal_tc_init Delta tc2 ->
legal_tc_init Delta (tc_andp tc1 tc2).