Set Bullet Behavior "Strict Subproofs".
(* Those were overwritten in structured_injections *)
Notation join := sepalg.join.
Notation join_assoc := sepalg.join_assoc.
Definition islock_pred (R: pred rmap) r :=
exists sh sh' z, r = YES sh sh' (LK z 0) (SomeP rmaps.Mpred (fun _ => R)).

Lemma islock_pred_join_sub {r1 r2 R} : join_sub r1 r2 -> islock_pred R r1  -> islock_pred R r2.
Definition LKspec_ext (R: pred rmap) : spec :=
fun (sh: Share.t) (l: AV.address)  =>
allp
(jam
(adr_range_dec l LKSIZE)
(fun l' => yesat (SomeP rmaps.Mpred (fun _ => R)) (LK LKSIZE (snd l' - snd l)) sh l)
(fun _ => TT)).