Fixpoint sequence (cs: list statement) s :=
match cs with
| nil => s
| c::cs' => Ssequence c (sequence cs' s)
end.
Fixpoint rsequence (cs: list statement) s :=
match cs with
| nil => s
| c::cs' => Ssequence (rsequence cs' s) c
end.

(* Specifications: *)
Lemma sequence_rsequence:
forall Espec CS Delta P cs s0 s R,
@semax CS Espec Delta P (Ssequence s0 (sequence cs s)) R  <->
@semax CS Espec Delta P (Ssequence (rsequence (rev cs) s0) s) R.
Lemma seq_assocN:
forall {Espec: OracleKind} CS,
forall Q Delta P cs s R,
@semax CS Espec Delta P (sequence cs Sskip) (normal_ret_assert Q) ->
@semax CS Espec
Delta  Q s R ->
@semax CS Espec Delta P (sequence cs s) R.