Module ExtrFacts := GenExtrFacts (CSHL_Def) (Conseq) (Extr).Module ExtrIFacts := GenIExtrFacts (CSHL_Def) (CConseq) (Extr).Module CSHL_Def := DeepEmbeddedDef.Module CSHL_Defs := DeepEmbeddedDefs.Definition semax_extract_exists := @semax_extract_exists.Definition semax_func_nil := @AuxDefs.semax_func_nil (@Def.semax_external).Definition semax_func_cons := @AuxDefs.semax_func_cons (@Def.semax_external).Definition semax_func_cons_ext := @AuxDefs.semax_func_cons_ext (@Def.semax_external).

(* Specifications: *)
Theorem semax_ifthenelse : forall {CS: compspecs} {Espec: OracleKind}, forall Delta P (b: expr) c d R, bool_type (typeof b) = true -> @semax CS Espec Delta (P && local (`(typed_true (typeof b)) (eval_expr b))) c R -> @semax CS Espec Delta (P && local (`(typed_false (typeof b)) (eval_expr b))) d R -> @semax CS Espec Delta (tc_expr Delta (Eunop Cop.Onotbool b (Tint I32 Signed noattr)) && P) (Sifthenelse b c d) R.