Parameter body_mallocN:
semax_external
(EF_external _mallocN
{| sig_args := AST.Tint :: nil; sig_res := Some AST.Tint |}) int
(fun n : int => PROP (4 <= Int.signed n) LOCAL (`(eq (Vint n)) (eval_id 1%positive)) SEP ())
(fun n : int => `(memory_block Tsh n) retval).
Parameter body_freeN:
semax_external
(EF_external _freeN
{| sig_args := AST.Tint :: AST.Tint :: nil; sig_res := None |}) unit
(fun _ : unit =>
PROP() LOCAL () SEP (`(memory_block Tsh) (`force_int (eval_id 2%positive)) (eval_id 1%positive)))
(fun _ : unit => emp).

(* Specifications: *)
Lemma extern_correct:
semax_func Vprog Gtot
((_mallocN,(External (EF_external _mallocN
(mksignature (AST.Tint :: nil) (Some AST.Tint)))
(Tcons tint Tnil) (tptr tvoid))) ::
(_freeN,
(External (EF_external _freeN
(mksignature (AST.Tint :: AST.Tint :: nil) None))
(Tcons (tptr tvoid) (Tcons tint Tnil)) tvoid)) :: nil)
(mallocN_spec::freeN_spec::nil).
Lemma prog_correct:
semax_prog prog Vprog Gprog.