Require Export VST.veric.base.
Require Export VST.veric.assert_lemmas.
Local Open Scope pred.
Hint Resolve corable_funassert : core.
Definition allp_fun_id (Delta : tycontext) (rho : environ): pred rmap :=
ALL id : ident , ALL fs : funspec ,
!! ((glob_specs Delta) ! id = Some fs) -->
(EX b : block, !! (Map.get (ge_of rho) id = Some b) && func_ptr_si fs (Vptr b Ptrofs.zero)).
Definition allp_fun_id_sigcc (Delta : tycontext) (rho : environ): pred rmap :=
(ALL id : ident ,
(ALL fs : funspec ,
!! ((glob_specs Delta) ! id = Some fs) -->
(EX b : block, !! (Map.get (ge_of rho) id = Some b) &&
match fs with
mk_funspec sig cc _ _ _ _ _ => sigcc_at sig cc (b, 0)
end))).

Lemma funassert_allp_fun_id_sub: forall Delta Delta' rho,
tycontext_sub Delta Delta' ->
funassert Delta' rho |-- allp_fun_id Delta rho.