Require Export sha.pure_lemmas.
Require Export sha.general_lemmas.
Require Export sha.vst_lemmas.
Export ListNotations.
Local Open Scope logic.
Global Opaque K256.
Transparent peq.
Fixpoint loops (s: statement) : list statement :=
match s with
| Ssequence a b => loops a ++ loops b
| Sloop _ _ => [s]
| Sifthenelse _ a b => loops a ++ loops b
| _ => nil
end.
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.

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.