Parameter semax_func: forall (G: funspecs) (p: program) (G': funspecs), Prop.

(* Specifications: *)
Axiom semax_func_nil: forall G, semax_func G nil nil.
Axiom semax_func_cons:
forall  fs id f vars P (G G': funspecs),
inlist id (map (@fst adr (list var * control)) fs) = false ->
list_nodups vars = true ->
length vars = length (fst P) ->
semax vars G (lift1 (call P) (fun s => map s vars)) f ->
semax_func G fs G' ->
semax_func G ((id, (vars,f))::fs) ((id, P) :: G').
Axiom semax_func_nil: forall G, semax_func G nil nil.
Axiom semax_func_cons:
forall  fs id f vars P (G G': funspecs),
inlist id (map (@fst adr (list var * control)) fs) = false ->
list_nodups vars = true ->
length vars = length (fst P) ->
semax vars G (fun s => call P (map s vars)) f ->
semax_func G fs G' ->
semax_func G ((id, (vars,f))::fs) ((id, P) :: G').