diff --git a/theories/heap_lang/lib/spawn.v b/theories/heap_lang/lib/spawn.v index 158e8c59f820795e24e3a86ee1149379a27d389c..a213fec88bfa18f4926cb90472bb32f0af781c66 100644 --- a/theories/heap_lang/lib/spawn.v +++ b/theories/heap_lang/lib/spawn.v @@ -44,11 +44,10 @@ Global Instance join_handle_ne n l : Proof. solve_proper. Qed. (** The main proofs. *) -Lemma spawn_spec (Ψ : val → iProp Σ) e (f : val) : - IntoVal e f → - {{{ WP f #() {{ Ψ }} }}} spawn e {{{ l, RET #l; join_handle l Ψ }}}. +Lemma spawn_spec (Ψ : val → iProp Σ) (f : val) : + {{{ WP f #() {{ Ψ }} }}} spawn f {{{ l, RET #l; join_handle l Ψ }}}. Proof. - iIntros (<- Φ) "Hf HΦ". rewrite /spawn /=. wp_lam. + iIntros (Φ) "Hf HΦ". rewrite /spawn /=. wp_lam. wp_alloc l as "Hl". iMod (own_alloc (Excl ())) as (γ) "Hγ"; first done. iMod (inv_alloc N _ (spawn_inv γ l Ψ) with "[Hl]") as "#?". diff --git a/theories/heap_lang/lifting.v b/theories/heap_lang/lifting.v index b9a9c0bf51b16f9c545b670caefcfb259723c305..143dc1424a0f988ff34af9ae03f916892e0647b5 100644 --- a/theories/heap_lang/lifting.v +++ b/theories/heap_lang/lifting.v @@ -317,12 +317,12 @@ Proof. - iApply "HΦ". done. Qed. -Lemma wp_resolve_proph e1 e2 p v w: - IntoVal e1 (LitV (LitProphecy p)) → - IntoVal e2 w → - {{{ proph p v }}} ResolveProph e1 e2 {{{ RET (LitV LitUnit); ⌜v = Some w⌠}}}. +Lemma wp_resolve_proph p v w: + {{{ proph p v }}} + ResolveProph (Val $ LitV $ LitProphecy p) (Val w) + {{{ RET (LitV LitUnit); ⌜v = Some w⌠}}}. Proof. - iIntros (<- <- Φ) "Hp HΦ". iApply wp_lift_atomic_head_step_no_fork; auto. + iIntros (Φ) "Hp HΦ". iApply wp_lift_atomic_head_step_no_fork; auto. iIntros (σ1 κ κs) "[Hσ HR] !>". iDestruct "HR" as (R [Hfr Hdom]) "HR". iDestruct (@proph_map_valid with "HR Hp") as %Hlookup. iSplit; first by eauto.