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_binarithType: forall Delta t1 t2 t err err',
legal_tc_init Delta (binarithType t1 t2 t err err').