Definition resource_share (r: resource) : option share :=
 match r with
 | YES sh _ _ _ => Some sh
 | NO sh _ => Some sh
 | PURE _ _ => None
 end.Definition nonlock (r: resource) : Prop :=
 match r with
 | YES _ _ k _ => isVAL k \/ isFUN k
 | NO _ _ => True
 | PURE _ _ => False
 end.

Lemma resource_share_join_exists: forall r1 r2 r sh1 sh2, resource_share r1 = Some sh1 -> resource_share r2 = Some sh2 -> join r1 r2 r -> exists sh, join sh1 sh2 sh /\ resource_share r = Some sh.