diff --git a/heap_lang/lib/spin_lock.v b/heap_lang/lib/spin_lock.v
index 9cd0fd096b390a5a95e2ff1c7b58b5c12aa664ae..34b5b22c352803a5a7fda785a797b86184f3b7fa 100644
--- a/heap_lang/lib/spin_lock.v
+++ b/heap_lang/lib/spin_lock.v
@@ -57,26 +57,26 @@ Section proof.
     iModIntro. iApply "HΦ". iExists l. eauto.
   Qed.
 
-  Lemma try_acquire_spec γ lk R (Φ: val → iProp Σ) :
-    is_lock γ lk R ★ ((locked γ -★ R -★ Φ #true) ∧ Φ #false)
-    ⊢ WP try_acquire lk {{ Φ }}.
+  Lemma try_acquire_spec γ lk R :
+    {{{ is_lock γ lk R }}} try_acquire lk
+    {{{b; #b, if b is true then locked γ ★ R else True }}}.
   Proof.
-    iIntros "[#Hl HΦ]". iDestruct "Hl" as (l) "(% & #? & % & #?)". subst.
+    iIntros (Φ) "[#Hl HΦ]". iDestruct "Hl" as (l) "(% & #? & % & #?)". subst.
     wp_rec. iInv N as ([]) "[Hl HR]" "Hclose".
     - wp_cas_fail. iMod ("Hclose" with "[Hl]"); first (iNext; iExists true; eauto).
-      iModIntro. iDestruct "HΦ" as "[_ HΦ]". iApply "HΦ".
+      iModIntro. iApply ("HΦ" $! false). done.
     - wp_cas_suc. iDestruct "HR" as "[Hγ HR]".
       iMod ("Hclose" with "[Hl]"); first (iNext; iExists true; eauto).
-      iModIntro. iDestruct "HΦ" as "[HΦ _]". rewrite /locked. by iApply ("HΦ" with "Hγ HR").
+      iModIntro. rewrite /locked. by iApply ("HΦ" $! true with "[$Hγ $HR]").
   Qed.
 
   Lemma acquire_spec γ lk R :
     {{{ is_lock γ lk R }}} acquire lk {{{; #(), locked γ ★ R }}}.
   Proof.
     iIntros (Φ) "[#Hl HΦ]". iLöb as "IH". wp_rec.
-    wp_apply (try_acquire_spec with "[- $Hl]"). iSplit.
-    - iIntros "Hlked HR". wp_if. iModIntro. iApply "HΦ"; iFrame.
-    - wp_if. iApply ("IH" with "[HΦ]"). auto.
+    wp_apply (try_acquire_spec with "[- $Hl]"). iIntros ([]).
+    - iIntros "[Hlked HR]". wp_if. iModIntro. iApply "HΦ"; iFrame.
+    - iIntros "_". wp_if. iApply ("IH" with "[HΦ]"). auto.
   Qed.
 
   Lemma release_spec γ lk R :
diff --git a/heap_lang/lib/ticket_lock.v b/heap_lang/lib/ticket_lock.v
index 2bf6efd6873799b697ab25083e8f2e5caf6ba83e..3846ddebefa8f41ff6bab1ada82abb1c695bb7d7 100644
--- a/heap_lang/lib/ticket_lock.v
+++ b/heap_lang/lib/ticket_lock.v
@@ -88,10 +88,10 @@ Section proof.
     iModIntro. iApply ("HΦ" $! (#lo, #ln)%V γ). iExists lo, ln. eauto.
   Qed.
 
-  Lemma wait_loop_spec γ lk x R (Φ : val → iProp Σ) :
-    issued γ lk x R ★ (locked γ ★ R -★ Φ #()) ⊢ WP wait_loop #x lk {{ Φ }}.
+  Lemma wait_loop_spec γ lk x R :
+    {{{ issued γ lk x R }}} wait_loop #x lk {{{; #(), locked γ ★ R }}}.
   Proof.
-    iIntros "[Hl HΦ]". iDestruct "Hl" as (lo ln) "(% & #? & % & #? & Ht)".
+    iIntros (Φ) "[Hl HΦ]". iDestruct "Hl" as (lo ln) "(% & #? & % & #? & Ht)".
     iLöb as "IH". wp_rec. subst. wp_let. wp_proj. wp_bind (! _)%E.
     iInv N as (o n) "(Hlo & Hln & Ha)" "Hclose".
     wp_load. destruct (decide (x = o)) as [->|Hneq].
@@ -106,7 +106,7 @@ Section proof.
     - iMod ("Hclose" with "[Hlo Hln Ha]").
       { iNext. iExists o, n. by iFrame. }
       iModIntro. wp_let. wp_op=>[[/Nat2Z.inj //]|?].
-      wp_if. iApply ("IH" with "Ht"). by iExact "HΦ".
+      wp_if. iApply ("IH" with "Ht"). iNext. by iExact "HΦ".
   Qed.
 
   Lemma acquire_spec γ lk R :