Local Open Scope pred.
Section extensions.
Context {CS: compspecs} {Espec: OracleKind}.

Lemma semax_straight_simple:
forall Delta (B: assert) P c Q,
(forall rho, boxy extendM (B rho)) ->
(forall jm jm1 Delta' ge ve te rho k F,
tycontext_sub Delta Delta' ->
app_pred (B rho) (m_phi jm) ->
guard_environ Delta' (current_function k) rho ->
closed_wrt_modvars c F ->
rho = construct_rho (filter_genv ge) ve te  ->
age jm jm1 ->
((F rho * |>P rho) && funassert Delta' rho) (m_phi jm) ->
genv_cenv ge = cenv_cs ->
exists jm', exists te', exists rho',
rho' = mkEnviron (ge_of rho) (ve_of rho) (make_tenv te') /\
level jm = S (level jm') /\
guard_environ Delta' (current_function k) rho'  /\
jstep (cl_core_sem ge) (State ve te (Kseq c :: k)) jm
(State ve te' k) jm' /\
((F rho' * Q rho') && funassert Delta' rho) (m_phi jm')) ->
semax Espec Delta (fun rho => B rho && |> P rho) c (normal_ret_assert Q).