Commit 58e2394c authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Merge branch 'master' into gen_proofmode

parents d8e9c860 11eacd8b
...@@ -71,6 +71,21 @@ Section proofs. ...@@ -71,6 +71,21 @@ Section proofs.
iIntros "!>". iExists P. iSplit; last done. iIntros "!# !>"; iSplit; auto. iIntros "!>". iExists P. iSplit; last done. iIntros "!# !>"; iSplit; auto.
Qed. Qed.
Lemma cinv_open_strong E N γ p P :
N E
cinv N γ P - cinv_own γ p ={E,E∖↑N}=
P cinv_own γ p ( P cinv_own γ 1 ={E∖↑N,E}= True).
Proof.
iIntros (?) "#Hinv Hγ". iDestruct "Hinv" as (P') "[#HP' Hinv]".
iInv N as "[HP | >Hγ']" "Hclose".
- iIntros "!> {$Hγ}". iSplitL "HP".
+ iNext. iApply "HP'". done.
+ iIntros "[HP|Hγ]".
* iApply "Hclose". iLeft. iNext. by iApply "HP'".
* iApply "Hclose". iRight. by iNext.
- iDestruct (cinv_own_1_l with "Hγ' Hγ") as %[].
Qed.
Lemma cinv_alloc E N P : P ={E}= γ, cinv N γ P cinv_own γ 1. Lemma cinv_alloc E N P : P ={E}= γ, cinv N γ P cinv_own γ 1.
Proof. Proof.
iIntros "HP". iMod (cinv_alloc_strong E N) as (γ _) "[Hγ Halloc]". iIntros "HP". iMod (cinv_alloc_strong E N) as (γ _) "[Hγ Halloc]".
...@@ -79,22 +94,18 @@ Section proofs. ...@@ -79,22 +94,18 @@ Section proofs.
Lemma cinv_cancel E N γ P : N E cinv N γ P - cinv_own γ 1 ={E}= P. Lemma cinv_cancel E N γ P : N E cinv N γ P - cinv_own γ 1 ={E}= P.
Proof. Proof.
iIntros (?) "#Hinv Hγ". iDestruct "Hinv" as (P') "[#HP' Hinv]". iIntros (?) "#Hinv Hγ".
iInv N as "[HP|>Hγ']". iMod (cinv_open_strong with "Hinv Hγ") as "($ & Hγ & H)"; first done.
- iModIntro. iFrame "Hγ". iModIntro. iApply "HP'". done. iApply "H". by iRight.
- iDestruct (cinv_own_1_l with "Hγ Hγ'") as %[].
Qed. Qed.
Lemma cinv_open E N γ p P : Lemma cinv_open E N γ p P :
N E N E
cinv N γ P - cinv_own γ p ={E,E∖↑N}= P cinv_own γ p ( P ={E∖↑N,E}= True). cinv N γ P - cinv_own γ p ={E,E∖↑N}= P cinv_own γ p ( P ={E∖↑N,E}= True).
Proof. Proof.
iIntros (?) "#Hinv Hγ". iDestruct "Hinv" as (P') "[#HP' Hinv]". iIntros (?) "#Hinv Hγ".
iInv N as "[HP | >Hγ']" "Hclose". iMod (cinv_open_strong with "Hinv Hγ") as "($ & $ & H)"; first done.
- iIntros "!> {$Hγ}". iSplitL "HP". iIntros "!> HP". iApply "H"; auto.
+ iNext. iApply "HP'". done.
+ iIntros "HP". iApply "Hclose". iLeft. iNext. by iApply "HP'".
- iDestruct (cinv_own_1_l with "Hγ' Hγ") as %[].
Qed. Qed.
Global Instance into_inv_cinv N γ P : IntoInv (cinv N γ P) N. Global Instance into_inv_cinv N γ P : IntoInv (cinv N γ P) N.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment