Ltac pfullshare_join :=
elimtype False;
solve [ eapply pshare_join_full_false1; eauto
| eapply pshare_join_full_false2; eauto
| eapply pshare_join_full_false3; eauto
| eapply pshare_join_full_false4; eauto
| eapply pshare_pjoin_full_false3; eauto
| eapply pshare_pjoin_full_false4; eauto
].
Program Definition split_pshare (sh: pshare) : pshare * pshare :=
(mk_lifted (fst (Share.split sh)) _, mk_lifted (snd (Share.split sh)) _).
Next Obligation.
Next Obligation.

Lemma pshare_split_neq1: forall psh psh1 psh2, split_pshare psh = (psh1, psh2) -> psh1 <> psh.