Module CSHL_Defs := DerivedDefs(CSHL_Def).
(***************** SEMAX_LEMMAS ****************)

Axiom semax_func_cons:
forall {Espec: OracleKind},
forall fs id f fsig cc A P Q NEP NEQ (V: varspecs) (G G': funspecs) {C: compspecs} ge b,
andb (id_in_list id (map (@fst _ _) G))
(andb (negb (id_in_list id (map (@fst ident fundef) fs)))
(semax_body_params_ok f)) = true ->
Forall
(fun it : ident * type =>
complete_type cenv_cs (snd it) =
true) (fn_vars f) ->
var_sizes_ok (f.(fn_vars)) ->
f.(fn_callconv) = cc ->
Genv.find_symbol ge id = Some b -> Genv.find_funct_ptr ge b = Some (Internal f) ->
semax_body V G f (id, mk_funspec fsig cc A P Q NEP NEQ)->
semax_func V G ge fs G' ->
semax_func V G ge ((id, Internal f)::fs)
((id, mk_funspec fsig cc A P Q NEP NEQ)  :: G').