(*The name is legacy. Comes from the time there was two shares. Then
 * The contradiction would look like 
 * forall (sh2 sh3:pshares) -> join pfullshare sh2 sh3 -> False. *)
Local Ltac pfulltac := try solve [exfalso; eapply join_writable0_readable; eauto].

Lemma rmap_freelock_join phi1 phi1' m loc R length phi2 phi : 0 < length -> rmap_freelock phi1 phi1' m loc R length -> join phi1 phi2 phi -> exists phi', rmap_freelock phi phi' m loc R length /\ join phi1' phi2 phi'.