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_joins: forall r1 r2 sh1 sh2, resource_share r1 = Some sh1 -> resource_share r2 = Some sh2 -> joins r1 r2 -> joins sh1 sh2.