Require VST.floyd.library.
Parameter body_malloc:
forall {Espec: OracleKind} {cs: compspecs} ,
VST.floyd.library.body_lemma_of_funspec EF_malloc (snd malloc_spec').
Parameter body_free:
forall {Espec: OracleKind} {cs: compspecs} ,
VST.floyd.library.body_lemma_of_funspec EF_free (snd free_spec').
Parameter body_exit:
forall {Espec: OracleKind},
VST.floyd.library.body_lemma_of_funspec
(EF_external "exit"
{| sig_args := AST.Tint :: nil; sig_res := None; sig_cc := cc_default |})
(snd exit_spec).
Definition Gprog : funspecs :=
spec_stdlib.specs ++ spec_stdlib.ispecs.

(*same proof as in library.v, but the statement is a little different*)
Lemma semax_func_cons_malloc_aux {cs: compspecs} (gv: globals) (gx : genviron) (ret : option val) z:
(EX p : val,
PROP ( )
LOCAL (temp ret_temp p)
SEP (spec_stdlib.mem_mgr gv; if eq_dec p nullval then emp else malloc_token' Ews z p * memory_block Ews z p))%assert
(make_ext_rval gx ret) |-- !! is_pointer_or_null (force_val ret).