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.
Existing Instance NullExtension.Espec.

Lemma tcret_malloc:
tcret_proof (tptr tvoid) (rmaps.ConstType (Z * globals))
(fun (_ : list Type) (x : Z * globals) =>
let (n, gv) := x in
(EX p : val,
PROP ( )
LOCAL (temp ret_temp p)
SEP (mem_mgr gv;
if @eq_dec val Memory.EqDec_val p nullval
then @emp mpred Nveric Sveric
else malloc_token' Ews n p * memory_block Ews n p))%assert).