Skip to content
Snippets Groups Projects
Commit a0961de3 authored by Ralf Jung's avatar Ralf Jung
Browse files

locally teach solve_ndisj how to handle these inclusions

parent c72bfec9
No related branches found
No related tags found
No related merge requests found
Pipeline #
...@@ -8,6 +8,8 @@ From lrust.typing Require Import perm lft_contexts type_context typing own. ...@@ -8,6 +8,8 @@ From lrust.typing Require Import perm lft_contexts type_context typing own.
Section uniq_bor. Section uniq_bor.
Context `{typeG Σ}. Context `{typeG Σ}.
Local Hint Extern 1000 (_ _) => set_solver : ndisj.
Program Definition uniq_bor (κ:lft) (ty:type) := Program Definition uniq_bor (κ:lft) (ty:type) :=
{| ty_size := 1; {| ty_size := 1;
(* We quantify over [P]s so that the Proper lemma (* We quantify over [P]s so that the Proper lemma
...@@ -38,15 +40,12 @@ Section uniq_bor. ...@@ -38,15 +40,12 @@ Section uniq_bor.
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.
iDestruct "INV" as "[>Hbtok|#Hshr]". iDestruct "INV" as "[>Hbtok|#Hshr]".
- iMod (bor_unnest _ _ _ P with "LFT [Hbtok]") as "Hb". - iMod (bor_unnest _ _ _ P with "LFT [Hbtok]") as "Hb". solve_ndisj.
{ apply ndisj_subseteq_difference. solve_ndisj. set_solver. } (* FIXME: some tactic should solve this in one go. *)
{ iApply bor_unfold_idx. eauto. } { iApply bor_unfold_idx. eauto. }
iModIntro. iNext. iMod "Hb". iModIntro. iNext. iMod "Hb".
iMod (bor_iff with "LFT [] Hb") as "Hb". iMod (bor_iff with "LFT [] Hb") as "Hb". solve_ndisj.
{ apply ndisj_subseteq_difference. solve_ndisj. set_solver. } (* FIXME: some tactic should solve this in one go. *)
{ by eauto. } { by eauto. }
iMod (ty.(ty_share) with "LFT Hb Htok") as "[#Hshr $]". iMod (ty.(ty_share) with "LFT Hb Htok") as "[#Hshr $]". solve_ndisj.
{ apply ndisj_subseteq_difference. solve_ndisj. set_solver. } (* FIXME: some tactic should solve this in one go. *)
iMod ("Hclose" with "[]") as "_"; auto. iMod ("Hclose" with "[]") as "_"; auto.
- iMod ("Hclose" with "[]") as "_". by eauto. - iMod ("Hclose" with "[]") as "_". by eauto.
iApply step_fupd_intro. set_solver. auto. iApply step_fupd_intro. set_solver. auto.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment