Definition program_proved (p: program) :=
exists G, semax_func G p G
/\ table_get G 0 = Some  (0::nil, fun s => allocpool (eval (Var 0) s)).

Axiom semax_exp: forall A vars G (P: A -> assert) c,
typecheck vars c = true ->
(forall v:A, semax vars G (P v) c) ->
semax vars G (fun s => EX v:A, (P v s)) c.