There was a problem fetching the pipeline mini graph.
on a newer Iris version, the solve_ndisj works somewhat better
parent
54b982f6
No related branches found
No related tags found
Pipeline #
Showing
- opam.pins 1 addition, 1 deletionopam.pins
- theories/typing/own.v 3 additions, 4 deletionstheories/typing/own.v
- theories/typing/shr_bor.v 6 additions, 13 deletionstheories/typing/shr_bor.v
- theories/typing/sum.v 1 addition, 1 deletiontheories/typing/sum.v
- theories/typing/uniq_bor.v 8 additions, 6 deletionstheories/typing/uniq_bor.v
... | @@ -72,14 +72,13 @@ Section own. | ... | @@ -72,14 +72,13 @@ Section own. |
iMod (inv_alloc shrN _ (idx_bor_own 1 i ∨ ty_shr ty κ tid l')%I | iMod (inv_alloc shrN _ (idx_bor_own 1 i ∨ ty_shr ty κ tid l')%I | ||
with "[Hpbown]") as "#Hinv"; first by eauto. | with "[Hpbown]") as "#Hinv"; first by eauto. | ||
iIntros "!> !# * % Htok". iMod (inv_open with "Hinv") as "[INV Hclose]". set_solver. | iIntros "!> !# * % Htok". iMod (inv_open with "Hinv") as "[INV Hclose]". set_solver. | ||
(* FIXME We shouldn't have to add this manually to make the set_solver below work (instead, solve_ndisj below should do it). Also, this goal itself should be handled by solve_ndisj. *) | |||
assert (↑shrN ⊥ ↑lftN). { eapply ndot_preserve_disjoint_l. solve_ndisj. } | |||
iDestruct "INV" as "[>Hbtok|#Hshr]". | iDestruct "INV" as "[>Hbtok|#Hshr]". | ||
- iMod (bor_later with "LFT [Hbtok]") as "Hb". | - iMod (bor_later with "LFT [Hbtok]") as "Hb". | ||
{ set_solver. } | { apply ndisj_subseteq_difference. solve_ndisj. set_solver. } (* FIXME: some tactic should solve this in one go. *) | ||
|
|||
{ rewrite bor_unfold_idx. eauto. } | { rewrite bor_unfold_idx. eauto. } | ||
iModIntro. iNext. iMod "Hb". | iModIntro. iNext. iMod "Hb". | ||
iMod (ty.(ty_share) with "LFT Hb Htok") as "[#$ Htok]". set_solver. | iMod (ty.(ty_share) with "LFT Hb Htok") as "[#$ Htok]". | ||
{ apply ndisj_subseteq_difference. solve_ndisj. set_solver. } (* FIXME: some tactic should solve this in one go. *) | |||
iFrame "Htok". iApply "Hclose". auto. | iFrame "Htok". iApply "Hclose". auto. | ||
- iMod fupd_intro_mask' as "Hclose'"; last iModIntro. set_solver. | - iMod fupd_intro_mask' as "Hclose'"; last iModIntro. set_solver. | ||
iNext. iMod "Hclose'" as "_". iMod ("Hclose" with "[]") as "_"; by eauto. | iNext. iMod "Hclose'" as "_". iMod ("Hclose" with "[]") as "_"; by eauto. | ||
... | ... |