Skip to content
Snippets Groups Projects
Commit 5d3c508d authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

New lemma `step_fupdN_wand`, and use instead of `step_fupdN_mono`.

parent d9d67406
No related branches found
No related tags found
No related merge requests found
...@@ -78,8 +78,8 @@ Proof. ...@@ -78,8 +78,8 @@ Proof.
iPoseProof (Hiter Hinv) as "H". clear Hiter. iPoseProof (Hiter Hinv) as "H". clear Hiter.
destruct n as [|n]. destruct n as [|n].
- iApply fupd_plainly_mask_empty. iMod "H" as %?; auto. - iApply fupd_plainly_mask_empty. iMod "H" as %?; auto.
- iPoseProof (step_fupdN_mono _ _ _ _ (|={}=> φ)%I with "H") as "H'". - iDestruct (step_fupdN_wand _ _ _ _ (|={}=> φ)%I with "H []") as "H'".
{ iIntros "H". by iApply fupd_plain_mask_empty. } { by iApply fupd_plain_mask_empty. }
rewrite -step_fupdN_S_fupd. rewrite -step_fupdN_S_fupd.
iMod (step_fupdN_plain with "H'") as "Hφ". iModIntro. iNext. iMod (step_fupdN_plain with "H'") as "Hφ". iModIntro. iNext.
rewrite -later_laterN laterN_later. rewrite -later_laterN laterN_later.
...@@ -92,6 +92,5 @@ Lemma step_fupdN_soundness' `{invPreG Σ} φ n : ...@@ -92,6 +92,5 @@ Lemma step_fupdN_soundness' `{invPreG Σ} φ n :
Proof. Proof.
iIntros (Hiter). eapply (step_fupdN_soundness _ n). iIntros (Hiter). eapply (step_fupdN_soundness _ n).
iIntros (Hinv). iPoseProof (Hiter Hinv) as "Hiter". iIntros (Hinv). iPoseProof (Hiter Hinv) as "Hiter".
iApply (step_fupdN_mono with "Hiter"). iApply (step_fupdN_wand with "Hiter"). by iApply (fupd_mask_weaken _ _ _).
iIntros (?). iMod (fupd_intro_mask' _ ) as "_"; auto.
Qed. Qed.
...@@ -359,11 +359,20 @@ Section fupd_derived. ...@@ -359,11 +359,20 @@ Section fupd_derived.
Qed. Qed.
Lemma step_fupdN_mono E1 E2 n P Q : Lemma step_fupdN_mono E1 E2 n P Q :
(P Q) (|={E1, E2}▷=>^n P) (|={E1, E2}▷=>^n Q). (P Q) (|={E1,E2}▷=>^n P) (|={E1,E2}▷=>^n Q).
Proof. Proof.
intros HPQ. induction n as [|n IH]=> //=. rewrite IH //. intros HPQ. induction n as [|n IH]=> //=. rewrite IH //.
Qed. Qed.
Lemma step_fupdN_wand E1 E2 n P Q :
(|={E1,E2}▷=>^n P) -∗ (P -∗ Q) -∗ (|={E1,E2}▷=>^n Q).
Proof.
apply wand_intro_l. induction n as [|n IH]=> /=.
{ by rewrite wand_elim_l. }
rewrite -IH -fupd_frame_l later_sep -fupd_frame_l.
by apply sep_mono; first apply later_intro.
Qed.
Lemma step_fupdN_S_fupd n E P: Lemma step_fupdN_S_fupd n E P:
(|={E, }▷=>^(S n) P) ⊣⊢ (|={E, }▷=>^(S n) |={E}=> P). (|={E, }▷=>^(S n) P) ⊣⊢ (|={E, }▷=>^(S n) |={E}=> P).
Proof. Proof.
......
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