Next Obligation.
intros; intro; intros.
destruct H0 as [sh [rsh ?]]; exists sh, rsh.
apply (age1_YES a a'); auto.
Qed.
Next Obligation.     intros; intro; intros. auto.
Qed.
Program Definition core_load' (ch: memory_chunk) (l: address) (v: val) (bl: list memval)
: pred rmap :=
!!(length bl = size_chunk_nat ch /\ decode_val ch bl = v /\ (align_chunk ch | snd l)) &&
allp (jam (adr_range_dec l (size_chunk ch))
(fun l' phi => exists sh, exists rsh, phi @ l'
= YES sh rsh (VAL (nth (nat_of_Z (snd l' - snd l)) bl Undef)) NoneP)
(fun _ _ => True)).
Next Obligation.
intros; intro; intros.
destruct H0 as [sh [rsh ?]]; exists sh, rsh.
apply (age1_YES a a'); auto.
Qed.
Next Obligation.     intros; intro; intros. auto.
Qed.

Lemma is_resource_pred_YES_VAL sh:
is_resource_pred
(fun l' => EX  v: memval, yesat NoneP (VAL v) sh l')
(fun r _ n => (exists b0 rsh, r = YES sh rsh (VAL b0)
(SomeP (ConstType unit) (fun _ => tt)))).