diff --git a/theories/base_logic/lib/cancelable_invariants.v b/theories/base_logic/lib/cancelable_invariants.v index c03416e0d0f2498cc9c222ced811fcce1cc6c778..d38a8816ccb5a7512230b33a02c8cc290ebb8720 100644 --- a/theories/base_logic/lib/cancelable_invariants.v +++ b/theories/base_logic/lib/cancelable_invariants.v @@ -99,6 +99,14 @@ Section proofs. iExists γ. iFrame "Hγ". by iApply "Halloc". Qed. + Lemma cinv_alloc_open E N P : + ↑N ⊆ E → (|={E,E∖↑N}=> ∃ γ, cinv N γ P ∗ cinv_own γ 1 ∗ (▷ P ={E∖↑N,E}=∗ True))%I. + Proof. + iIntros (?). iMod (own_alloc 1%Qp) as (γ) "Hγ"; [done..|]. + iMod (inv_alloc_open N _ (P ∨ cinv_own γ 1)) as "[Hinv Hclose]"; [done..|]. + iExists γ; iIntros "!> {$Hγ $Hinv} HP". iApply "Hclose". by eauto. + Qed. + Lemma cinv_cancel E N γ P : ↑N ⊆ E → cinv N γ P -∗ cinv_own γ 1 ={E}=∗ ▷ P. Proof. iIntros (?) "#Hinv Hγ".