Commit 741641e3 authored by Jacques-Henri Jourdan's avatar Jacques-Henri Jourdan

Replace elim_inv_embed_inv by the more generic instance elim_inv_embed.

parent 38c22598
Pipeline #7152 passed with stage
in 11 minutes and 42 seconds
......@@ -104,15 +104,6 @@ Proof.
iApply (Helim with "[$H2]"); first done.
iMod (inv_open _ N with "[#]") as "(HP&Hclose)"; auto with iFrame.
Qed.
Global Instance elim_inv_embed_inv {PROP' : sbi} `{SbiEmbedding _ PROP'}
E N (P : iProp Σ) (Q Q' : PROP') :
( R, ElimModal True |={E,E∖↑N}=> R R Q Q')
ElimInv (N E) inv N P True (⎡▷ P) (⎡▷ P ={E∖↑N,E}= True) Q Q'.
Proof.
rewrite /ElimInv /ElimModal. iIntros (Helim ?) "(#H1&TRUE&H2)".
rewrite -bi_embed_sep. iApply (Helim with "[$H2 $TRUE]"); first done.
iModIntro. iMod (inv_open _ N with "[#]") as "(HP&Hclose)"; auto with iFrame.
Qed.
Lemma inv_open_timeless E N P `{!Timeless P} :
N E inv N P ={E,E∖↑N}= P (P ={E∖↑N,E}= True).
......
......@@ -490,4 +490,13 @@ Proof. by rewrite /ElimModal monPred_at_fupd. Qed.
Global Instance add_modal_at_fupd_goal `{FUpdFacts PROP} E1 E2 𝓟 𝓟' Q i :
AddModal 𝓟 𝓟' (|={E1,E2}=> Q i) AddModal 𝓟 𝓟' ((|={E1,E2}=> Q) i).
Proof. by rewrite /AddModal !monPred_at_fupd. Qed.
Global Instance elim_inv_embed φ 𝓟inv 𝓟in 𝓟out 𝓟close Pin Pout Pclose Q Q' :
( i, ElimInv φ 𝓟inv 𝓟in 𝓟out 𝓟close (Q i) (Q' i))
MakeEmbed 𝓟in Pin MakeEmbed 𝓟out Pout MakeEmbed 𝓟close Pclose
ElimInv φ ⎡𝓟inv Pin Pout Pclose Q Q'.
Proof.
rewrite /MakeEmbed /ElimInv=>H <- <- <- ?. iStartProof PROP.
iIntros (?) "(?&?&HQ')". iApply H; [done|]. iFrame. iIntros "?". by iApply "HQ'".
Qed.
End sbi.
Markdown is supported
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