Definition subsume_funspec'' (Delta: tycontext) (f1 f2 : funspec) :=
match f1 with
| mk_funspec fsig1 cc1 A1 P1 Q1 _ _ =>
match f2 with
| mk_funspec fsig2 cc2 A2 P2 Q2 _ _ =>
fsig1 = fsig2 /\ cc1 = cc2 /\
forall ts2 x2, exists ts1,
ENTAIL Delta, P2 ts2 x2 |-- EX x1:_,
((P1 ts1 x1) &&
(!! (ENTAIL (ret_tycon Delta), Q1 ts1 x1 |-- Q2 ts2 x2)))
end end.

Lemma subsume_semax_body'':
forall Vprog Gprog cs f id fs1 fs2,
subsume_funspec'' (func_tycontext f Vprog Gprog nil) fs1 fs2 ->
@semax_body Vprog Gprog cs f (id,fs1) ->
@semax_body Vprog Gprog cs f (id,fs2).