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_store: forall x y v c vars G (P: assert),
expcheck vars x = true ->
expcheck vars y = true ->
semax vars G (fun s => mapsto (eval x s) (eval y s) * P s) c ->
semax vars G (fun s => mapsto (eval x s) v  * P s)  (Do Mem x  := y ; c).