From 77ba610d1b541a80e76440bcbca4fc6234227b7b Mon Sep 17 00:00:00 2001 From: Ralf Jung <jung@mpi-sws.org> Date: Mon, 11 Jul 2016 14:08:31 +0200 Subject: [PATCH] lib/spawn: make proofs more readable / steppable --- heap_lang/lib/spawn.v | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/heap_lang/lib/spawn.v b/heap_lang/lib/spawn.v index 75a09b442..5bfb576cd 100644 --- a/heap_lang/lib/spawn.v +++ b/heap_lang/lib/spawn.v @@ -56,23 +56,23 @@ Lemma spawn_spec (Ψ : val → iProp) e (f : val) (Φ : val → iProp) : heap_ctx heapN ★ WP f #() {{ Ψ }} ★ (∀ l, join_handle l Ψ -★ Φ #l) ⊢ WP spawn e {{ Φ }}. Proof. - iIntros {<-%of_to_val ?} "(#Hh&Hf&HΦ)". rewrite /spawn. + iIntros {<-%of_to_val ?} "(#Hh & Hf & HΦ)". rewrite /spawn. wp_let. wp_alloc l as "Hl". wp_let. iPvs (own_alloc (Excl ())) as {γ} "Hγ"; first done. iPvs (inv_alloc N _ (spawn_inv γ l Ψ) with "[Hl]") as "#?"; first done. { iNext. iExists (InjLV #0). iFrame; eauto. } wp_apply wp_fork. iSplitR "Hf". - - iPvsIntro. wp_seq. iPvsIntro. iApply "HΦ"; rewrite /join_handle. eauto. - - wp_focus (f _). iApply wp_wand_l; iFrame "Hf"; iIntros {v} "Hv". + - iPvsIntro. wp_seq. iPvsIntro. iApply "HΦ". rewrite /join_handle. eauto. + - wp_focus (f _). iApply wp_wand_l. iFrame "Hf"; iIntros {v} "Hv". iInv N as {v'} "[Hl _]"; first wp_done. - wp_store. iPvsIntro; iSplit; [iNext|done]. - iExists (InjRV v); iFrame; eauto. + wp_store. iPvsIntro. iSplit; [iNext|done]. + iExists (InjRV v). iFrame. eauto. Qed. Lemma join_spec (Ψ : val → iProp) l (Φ : val → iProp) : join_handle l Ψ ★ (∀ v, Ψ v -★ Φ v) ⊢ WP join #l {{ Φ }}. Proof. - rewrite /join_handle; iIntros "[[% H] Hv]"; iDestruct "H" as {γ} "(#?&Hγ&#?)". + rewrite /join_handle; iIntros "[[% H] Hv]". iDestruct "H" as {γ} "(#?&Hγ&#?)". iLöb as "IH". wp_rec. wp_focus (! _)%E. iInv N as {v} "[Hl Hinv]". wp_load. iDestruct "Hinv" as "[%|Hinv]"; subst. - iPvsIntro; iSplitL "Hl"; [iNext; iExists _; iFrame; eauto|]. -- GitLab