Definition semax_seq := @AuxDefs.semax_seq.Definition semax_break := @AuxDefs.semax_break.Definition semax_continue := @AuxDefs.semax_continue.Definition semax_loop := @AuxDefs.semax_loop.Module CSHL_Def := DeepEmbeddedDef.Definition semax_call_backward := @AuxDefs.semax_call_backward.Module CallF := CallB2F (DeepEmbeddedDef) (Conseq) (CallB).Definition semax_call := @CallF.semax_call_forward.Definition semax_return := @AuxDefs.semax_return.Module CSHL_Def := DeepEmbeddedDef.Definition semax_set_ptr_compare_load_cast_load_backward := @AuxDefs.semax_set_ptr_compare_load_cast_load_backward.Module SetB := Sset2Set (DeepEmbeddedDef) (Conseq) (Sset).Module SetF := SetB2F (DeepEmbeddedDef) (Conseq) (SetB).Definition semax_set_forward := @SetF.semax_set_forward.Module PtrCmpB := Sset2PtrCmp (DeepEmbeddedDef) (Conseq) (Sset).Module PtrCmpF := PtrCmpB2F (DeepEmbeddedDef) (Conseq) (PtrCmpB).Definition semax_ptr_compare := @PtrCmpF.semax_ptr_compare_forward.Module LoadB := Sset2Load (DeepEmbeddedDef) (Conseq) (Sset).Module LoadF := LoadB2F (DeepEmbeddedDef) (Conseq) (LoadB).Definition semax_load := @LoadF.semax_load_forward.Module CastLoadB := Sset2CastLoad (DeepEmbeddedDef) (Conseq) (Sset).Module CastLoadF := CastLoadB2F (DeepEmbeddedDef) (Conseq) (CastLoadB).Definition semax_cast_load := @CastLoadF.semax_cast_load_forward.Module CSHL_Def := DeepEmbeddedDef.Definition semax_store_backward := @AuxDefs.semax_store_backward.Module StoreF := StoreB2F (DeepEmbeddedDef) (Conseq) (StoreB).Definition semax_store := @StoreF.semax_store_forward.Definition semax_skip := @AuxDefs.semax_skip.Definition semax_conseq := @AuxDefs.semax_conseq.Definition semax_Slabel := @AuxDefs.semax_label.Definition semax_ext := @MinimumLogic.semax_ext.Definition semax_ext_void := @MinimumLogic.semax_ext_void.Definition semax_external_FF := @MinimumLogic.semax_external_FF.Module CSHL_Def := DeepEmbeddedDef.Module CSHL_Defs := DeepEmbeddedDefs.Module CSHL_MinimumLogic := DeepEmbeddedMinimumSeparationLogic.Definition semax_set := @DeepEmbeddedMinimumSeparationLogic.SetB.semax_set_backward.

Lemma semax_loop_unroll1: forall {CS: compspecs} {Espec: OracleKind} Delta P P' Q body incr R, @semax CS Espec Delta P body (loop1_ret_assert P' R) -> @semax CS Espec Delta P' incr (loop2_ret_assert Q R) -> @semax CS Espec Delta Q (Sloop body incr) R -> @semax CS Espec Delta P (Sloop body incr) R.