diff --git a/barrier/barrier.v b/barrier/barrier.v
index 05210c59eaad5f54cfdf875f573a09b341e78ae6..d5de9209fe4aa8f470abd41b3ee9909540a867c9 100644
--- a/barrier/barrier.v
+++ b/barrier/barrier.v
@@ -1,3 +1,4 @@
+From algebra Require Export upred_big_op.
 From program_logic Require Export sts saved_prop.
 From heap_lang Require Export derived heap wp_tactics notation.
 
@@ -102,10 +103,11 @@ Section proof.
   Notation iProp := (iPropG heap_lang Σ).
 
   Definition waiting (P : iProp) (I : gset gname) : iProp :=
-    (∃ Q : gmap gname iProp, True)%I.
+    (∃ Q : gmap gname iProp, ▷(P -★ Π★{map Q} (λ _ Q, Q)) ★
+                             Π★{map Q} (λ i Q, saved_prop_own SpI i Q))%I.
 
   Definition ress (I : gset gname) : iProp :=
-    (True)%I.
+    (Π★{set I} (λ i, ∃ Q, saved_prop_own SpI i Q ★ ▷Q))%I.
 
   Definition barrier_inv (l : loc) (P : iProp) (s : stateT) : iProp :=
     match s with