Fixpoint fold_Ssequence lc :=
match lc with
| nil => Sskip
| c1 :: nil => c1
| c :: lc0 => Ssequence c (fold_Ssequence lc0)
end.
Definition non_Sseq c :=
match c with
| Ssequence _ _ => False
| _ => True
end.
Inductive unfold_Sseq_rel: statement -> list statement -> Prop :=
| singleton: forall c, non_Sseq c -> unfold_Sseq_rel c (c :: nil)
| tl_step: forall c1 c2 lc, non_Sseq c1 -> unfold_Sseq_rel c2 lc ->
unfold_Sseq_rel (Ssequence c1 c2) (c1 :: lc)
| hd_step: forall c1 c2 c3 lc, unfold_Sseq_rel (Ssequence c1 (Ssequence c2 c3)) lc ->
unfold_Sseq_rel (Ssequence (Ssequence c1 c2) c3) lc
.

Lemma semax_nocontinue_inv:
forall CS Espec Delta Pre s Post Post',
nocontinue s = true ->
RA_normal Post = RA_normal Post' ->
RA_break Post = RA_break Post' ->
RA_return Post = RA_return Post' ->
@semax CS Espec Delta Pre s Post -> @semax CS Espec Delta Pre s Post'.