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

slight proof tweaks

parent 1b624382
No related tags found
No related merge requests found
...@@ -56,7 +56,7 @@ Section rc. ...@@ -56,7 +56,7 @@ Section rc.
q.[ν] (1.[ν] ={lftN,}▷=∗ [ν])) q.[ν] (1.[ν] ={lftN,}▷=∗ [ν]))
| _ => False end; | _ => False end;
ty_shr κ tid l := ty_shr κ tid l :=
(l' : loc), &frac{κ} (λ q, l {q} [ #l']) (l' : loc), &frac{κ} (λ q, l {q} #l')
F q, ⌜↑shrN lftE F -∗ q.[κ] F q, ⌜↑shrN lftE F -∗ q.[κ]
={F, F∖↑shrN}▷=∗ q.[κ] γ ν q' ty', κ ν ={F, F∖↑shrN}▷=∗ q.[κ] γ ν q' ty', κ ν
type_incl ty' ty type_incl ty' ty
...@@ -74,6 +74,7 @@ Section rc. ...@@ -74,6 +74,7 @@ Section rc.
iMod (bor_fracture (λ q, l ↦∗{q} vl)%I with "LFT H↦") as "#H↦"; first done. iMod (bor_fracture (λ q, l ↦∗{q} vl)%I with "LFT H↦") as "#H↦"; first done.
destruct vl as [|[[|l'|]|][|]]; destruct vl as [|[[|l'|]|][|]];
try by iMod (bor_persistent_tok with "LFT Hb Htok") as "[>[] _]". try by iMod (bor_persistent_tok with "LFT Hb Htok") as "[>[] _]".
setoid_rewrite heap_mapsto_vec_singleton.
iFrame "Htok". iExists _. iFrame "#". rewrite bor_unfold_idx. iFrame "Htok". iExists _. iFrame "#". rewrite bor_unfold_idx.
iDestruct "Hb" as (i) "(#Hpb&Hpbown)". iDestruct "Hb" as (i) "(#Hpb&Hpbown)".
set (C := ( _ _ _ _, _ _ _ &na{_,_,_} _ _)%I). set (C := ( _ _ _ _, _ _ _ &na{_,_,_} _ _)%I).
...@@ -310,7 +311,7 @@ Section code. ...@@ -310,7 +311,7 @@ Section code.
wp_bind (!_)%E. wp_bind (!_)%E.
iSpecialize ("Hshr" with "[] Hα1"); last iApply (wp_step_fupd with "Hshr"); [done..|]. iSpecialize ("Hshr" with "[] Hα1"); last iApply (wp_step_fupd with "Hshr"); [done..|].
iMod (frac_bor_acc with "LFT Hlrc Hα2") as (q') "[Hlrc↦ Hclose]"; first solve_ndisj. iMod (frac_bor_acc with "LFT Hlrc Hα2") as (q') "[Hlrc↦ Hclose]"; first solve_ndisj.
rewrite heap_mapsto_vec_singleton. iApply wp_fupd. wp_read. iApply wp_fupd. wp_read.
iMod ("Hclose" with "[$Hlrc↦]") as "Hα2". iIntros "!> [Hα1 Hproto]". iMod ("Hclose" with "[$Hlrc↦]") as "Hα2". iIntros "!> [Hα1 Hproto]".
iDestruct "Hproto" as (γ ν q'' ty') "(#Hincl & #Hty & #Hinv & #Hrctokb & #Hshr)". iModIntro. iDestruct "Hproto" as (γ ν q'' ty') "(#Hincl & #Hty & #Hinv & #Hrctokb & #Hshr)". iModIntro.
wp_let. wp_op. rewrite shift_loc_0. wp_let. wp_op. rewrite shift_loc_0.
...@@ -371,7 +372,7 @@ Section code. ...@@ -371,7 +372,7 @@ Section code.
wp_bind (!_)%E. wp_bind (!_)%E.
iSpecialize ("Hdelay" with "[] Hα1"); last iApply (wp_step_fupd with "Hdelay"); [done..|]. iSpecialize ("Hdelay" with "[] Hα1"); last iApply (wp_step_fupd with "Hdelay"); [done..|].
iMod (frac_bor_acc with "LFT Hrc' Hα2") as (q') "[Hrc'↦ Hclose2]"; first solve_ndisj. iMod (frac_bor_acc with "LFT Hrc' Hα2") as (q') "[Hrc'↦ Hclose2]"; first solve_ndisj.
rewrite heap_mapsto_vec_singleton. iApply wp_fupd. wp_read. iApply wp_fupd. wp_read.
iMod ("Hclose2" with "[$Hrc'↦]") as "Hα2". iIntros "!> [Hα1 Hproto]". iMod ("Hclose2" with "[$Hrc'↦]") as "Hα2". iIntros "!> [Hα1 Hproto]".
iDestruct "Hproto" as (γ ν q'' ty') "(#? & #? & #Hinv & #Hrctokb & #Hshr)". iModIntro. iDestruct "Hproto" as (γ ν q'' ty') "(#? & #? & #Hinv & #Hrctokb & #Hshr)". iModIntro.
wp_op. wp_write. wp_op. wp_write.
......
...@@ -14,12 +14,12 @@ Section uniq_bor. ...@@ -14,12 +14,12 @@ Section uniq_bor.
match vl return _ with match vl return _ with
| [ #(LitLoc l) ] => &{κ} l ↦∗: ty.(ty_own) tid | [ #(LitLoc l) ] => &{κ} l ↦∗: ty.(ty_own) tid
| _ => False | _ => False
end%I; end;
ty_shr κ' tid l := ty_shr κ' tid l :=
( l':loc, &frac{κ'}(λ q', l {q'} #l') l':loc, &frac{κ'}(λ q', l {q'} #l')
F q, ⌜↑shrN lftE F -∗ q.[κκ'] F q, ⌜↑shrN lftE F -∗ q.[κκ']
={F, F∖↑shrN∖↑lftN}▷=∗ ty.(ty_shr) (κκ') tid l' q.[κκ'])%I ={F, F∖↑shrN∖↑lftN}▷=∗ ty.(ty_shr) (κκ') tid l' q.[κκ']
|}. |}%I.
Next Obligation. by iIntros (q ty tid [|[[]|][]]) "H". Qed. Next Obligation. by iIntros (q ty tid [|[[]|][]]) "H". Qed.
Next Obligation. Next Obligation.
move=> κ ty N κ' l tid ??/=. iIntros "#LFT Hshr Htok". move=> κ ty N κ' l tid ??/=. iIntros "#LFT Hshr Htok".
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment