Lemma semax_switch:
forall {CS: compspecs} Espec Delta (Q: assert) a sl R,
is_int_type (typeof a) = true ->
(forall rho, Q rho |-- tc_expr Delta a rho) ->
(forall n,
semax Espec Delta (fun rho => andp (prop (eval_expr a rho = Vint n)) (Q rho))
(seq_of_labeled_statement (select_switch (Int.unsigned n) sl))
(switch_ret_assert R)) ->
semax Espec Delta Q (Sswitch a sl) R.