intros.
destruct Q as [?Q ?Q ?Q ?Q].
eapply semax_post; eauto; intros; apply andp_left2; simpl; auto; normalize.
Qed.

(* Specifications: *)
Lemma sequential':
forall Q Espec {cs: compspecs} Delta P c R,
@semax cs Espec Delta P c (normal_ret_assert Q) ->
@semax cs Espec Delta P c (overridePost Q R).
Lemma semax_seq':
forall Espec {cs: compspecs} Delta P c1 P' c2 Q,
@semax cs Espec Delta P c1 (normal_ret_assert P') ->
@semax cs Espec Delta P' c2 Q ->
@semax cs Espec Delta P (Ssequence c1 c2) Q.
Lemma semax_frame_seq:
forall {Espec: OracleKind} {cs: compspecs} QFrame Frame Delta
P Q c1 c2 R P1 Q1 R1 P2 Q2 R2 R3,
semax Delta (PROPx P1 (LOCALx Q1 (SEPx R1))) c1
(normal_ret_assert (PROPx P2 (LOCALx Q2 (SEPx R2)))) ->
ENTAIL Delta, PROPx P (LOCALx Q (SEPx R)) |--
PROPx P1 (LOCALx (Q1++QFrame) (SEPx (R1 ++ Frame))) ->
closed_wrt_modvars c1 (LOCALx QFrame (SEPx Frame)) ->
semax Delta
(PROPx P2 (LOCALx (Q2++QFrame) (SEPx (R2 ++ Frame)))) c2 R3 ->
semax Delta (PROPx P (LOCALx Q (SEPx R))) (Ssequence c1 c2) R3.
Lemma derives_frame_PQR:
forall R1 R2 Delta P Q P' Q' R1',
ENTAIL Delta, PROPx P (LOCALx Q (SEPx R1)) |-- PROPx P' (LOCALx Q' (SEPx R1')) ->
ENTAIL Delta, PROPx P (LOCALx Q (SEPx (R1++R2))) |-- PROPx P' (LOCALx Q' (SEPx (R1'++R2))).