Module DeepEmbedded := DeepEmbedded (Def) (MinimumLogic).Module CSHL_Def := DeepEmbedded.DeepEmbeddedDef.Module CSHL_Defs := DeepEmbedded.DeepEmbeddedDefs.Module Conseq := GenConseq (Def) (MinimumLogic).Module ExtrFacts := GenExtrFacts (Def) (Conseq) (MinimumLogic).Module CSHL_Def := Def.Definition semax_call_forward := @MinimumLogic.semax_call.Module CallB := CallF2B (Def) (Conseq) (MinimumLogic) (CallF).Module CSHL_Def := Def.Definition semax_set_forward := @MinimumLogic.semax_set_forward.Module SetB := SetF2B (Def) (Conseq) (MinimumLogic) (SetF).Module CSHL_Def := Def.Definition semax_ptr_compare_forward := @MinimumLogic.semax_ptr_compare.Module PtrCmpB := PtrCmpF2B (Def) (Conseq) (MinimumLogic) (PtrCmpF).Module CSHL_Def := Def.Definition semax_load_forward := @MinimumLogic.semax_load.Module LoadB := LoadF2B (Def) (Conseq) (MinimumLogic) (LoadF).Module CSHL_Def := Def.Definition semax_cast_load_forward := @MinimumLogic.semax_cast_load.Module CastLoadB := CastLoadF2B (Def) (Conseq) (MinimumLogic) (CastLoadF).Module CSHL_Def := Def.Definition semax_store_forward := @MinimumLogic.semax_store.Module StoreB := StoreF2B (Def) (Conseq) (MinimumLogic) (StoreF).Module Extr : CLIGHT_SEPARATION_HOARE_LOGIC_EXTRACTION with Module CSHL_Def := Def := MinimumLogic.Module Sset := ToSset (Def) (Conseq) (Extr) (SetB) (PtrCmpB) (LoadB) (CastLoadB).

Theorem semax_prog_sound: forall Espec prog Vspec Gspec f, @DeepEmbedded.DeepEmbeddedDefs.semax_prog Espec prog Vspec Gspec f -> @MinimumLogic.CSHL_Defs.semax_prog Espec prog Vspec Gspec f.