diff --git a/theories/typing/uniq_bor.v b/theories/typing/uniq_bor.v index 22c6617f1f025fabbe7b15fa96b1dd61a594ac9c..4d5551b2838f0a7be2d785bafa631adfb6020f0e 100644 --- a/theories/typing/uniq_bor.v +++ b/theories/typing/uniq_bor.v @@ -8,6 +8,8 @@ From lrust.typing Require Import perm lft_contexts type_context typing own. Section uniq_bor. Context `{typeG Σ}. + Local Hint Extern 1000 (_ ⊆ _) => set_solver : ndisj. + Program Definition uniq_bor (κ:lft) (ty:type) := {| ty_size := 1; (* We quantify over [P]s so that the Proper lemma @@ -38,15 +40,12 @@ Section uniq_bor. with "[Hpbown]") as "#Hinv"; first by eauto. iIntros "!> !# * % Htok". iMod (inv_open with "Hinv") as "[INV Hclose]". set_solver. iDestruct "INV" as "[>Hbtok|#Hshr]". - - iMod (bor_unnest _ _ _ P with "LFT [Hbtok]") as "Hb". - { apply ndisj_subseteq_difference. solve_ndisj. set_solver. } (* FIXME: some tactic should solve this in one go. *) + - iMod (bor_unnest _ _ _ P with "LFT [Hbtok]") as "Hb". solve_ndisj. { iApply bor_unfold_idx. eauto. } iModIntro. iNext. iMod "Hb". - iMod (bor_iff with "LFT [] Hb") as "Hb". - { apply ndisj_subseteq_difference. solve_ndisj. set_solver. } (* FIXME: some tactic should solve this in one go. *) + iMod (bor_iff with "LFT [] Hb") as "Hb". solve_ndisj. { by eauto. } - iMod (ty.(ty_share) with "LFT Hb Htok") as "[#Hshr $]". - { apply ndisj_subseteq_difference. solve_ndisj. set_solver. } (* FIXME: some tactic should solve this in one go. *) + iMod (ty.(ty_share) with "LFT Hb Htok") as "[#Hshr $]". solve_ndisj. iMod ("Hclose" with "[]") as "_"; auto. - iMod ("Hclose" with "[]") as "_". by eauto. iApply step_fupd_intro. set_solver. auto.