(*Clight-specific: Require Import VST.veric.extend_tc. Require Import VST.veric.Clight_seplog. Require Import VST.veric.Clight_assert_lemmas. Require Import VST.veric.tycontext. Require Import VST.veric.expr2. Require Import VST.veric.expr_lemmas. *)
Local Open Scope pred.
Obligation Tactic := idtac.

(* Specifications: *)
Lemma adr_range_divide:
forall b i p q loc,
p >= 0 -> q >= 0 -> (adr_range (b,i) (p+q) loc <-> (adr_range (b,i) p loc \/adr_range (b,i+p) q loc)).
Lemma VALspec_range_e:
forall n sh base m loc, VALspec_range n sh base  m ->
adr_range base n loc ->
{x | m @ loc = YES sh (snd x) (VAL (fst x)) NoneP}.
Lemma store_init_data_outside':
forall F V (ge: Genv.t F V)  b a m p m',
Genv.store_init_data ge m b p a = Some m' ->
(forall b' ofs,
(b=b' /\ p <= ofs < p + init_data_size a) \/
contents_at m (b', ofs) = contents_at m' (b', ofs))
/\ access_at m = access_at m'
/\ nextblock m = nextblock m'.
Lemma store_init_data_list_outside':
forall F V (ge: Genv.t F V)  b il m p m',
Genv.store_init_data_list ge m b p il = Some m' ->
(forall b' ofs,
(b=b' /\ p <= ofs < p + init_data_list_size il) \/
contents_at m (b', ofs) = contents_at m' (b', ofs))
/\ access_at m = access_at m'
/\ nextblock m = nextblock m'.