diff --git a/iris_heap_lang/lib/rw_lock.v b/iris_heap_lang/lib/rw_lock.v
index 6343716c06a74148df186822e2206742b4add110..7eb3572632e6ab251f9161cfc3779bc41497317f 100644
--- a/iris_heap_lang/lib/rw_lock.v
+++ b/iris_heap_lang/lib/rw_lock.v
@@ -64,26 +64,21 @@ Class rwlock `{!heapGS_gen hlc Σ} := RwLock {
 }.
 Global Hint Mode rwlock + + + : typeclass_instances.
 
-Global Instance is_rw_lock_contractive `{!heapGS_gen hlc Σ, !rwlock} γ lk :
-  ∀ n, Proper (pointwise_relation _ (dist_later n) ==> dist n) (is_rw_lock γ lk).
+Global Instance is_rw_lock_contractive `{!heapGS_gen hlc Σ, !rwlock} γ lk n :
+  Proper (pointwise_relation _ (dist_later n) ==> dist n) (is_rw_lock γ lk).
 Proof.
-  intros n Φ1 Φ2 HΦ.
-  set (Φ1' := λne (q : leibnizO Qp), Φ1 q).
-  set (Φ2' := λne (q : leibnizO Qp), Φ2 q).
-  assert (Next Φ1' ≡{n}≡ Next Φ2') as HΦ'.
-  { constructor => m ? q /=. specialize (HΦ q). by eapply dist_later_dist_lt. }
-  clear HΦ. revert n HΦ'. eapply (uPred.internal_eq_entails (M:=iResUR Σ)).
-  rewrite later_equivI. iIntros "#HΦ". iApply prop_ext. iModIntro.
-  iSplit; iIntros "H"; iApply (is_rw_lock_iff with "H"); iIntros "!> !> %q".
-  all: rewrite ofe_morO_equivI; iSpecialize ("HΦ" $! q).
-  all: change (Φ1 q) with (Φ1' q); change (Φ2 q) with (Φ2' q).
-  all: iRewrite "HΦ"; auto.
+  assert (Contractive (is_rw_lock γ lk : (Qp -d> iPropO Σ) → _)) as Hcontr.
+  { apply (uPred.contractive_internal_eq (M:=iResUR Σ)); iIntros (Φ1 Φ2) "#HΦ".
+    rewrite discrete_fun_equivI.
+    iApply plainly.prop_ext_2; iIntros "!>"; iSplit; iIntros "H";
+      iApply (is_rw_lock_iff with "H");
+      iIntros "!> !>" (q); iRewrite ("HΦ" $! q); auto. }
+  intros Φ1 Φ2 HΦ. apply Hcontr. dist_later_intro. apply HΦ.
 Qed.
 
 Global Instance is_rw_lock_proper `{!heapGS_gen hlc Σ, !rwlock} γ lk :
   Proper (pointwise_relation _ (≡) ==> (≡)) (is_rw_lock γ lk).
 Proof.
-  intros Φ1 Φ2 HΦ.
-  apply equiv_dist=>n. apply is_rw_lock_contractive=>q.
-  constructor=>m _. move: (HΦ q) => /equiv_dist. auto.
+  intros Φ1 Φ2 HΦ. apply equiv_dist=> n. apply is_rw_lock_contractive=> q.
+  dist_later_intro. apply equiv_dist, HΦ.
 Qed.