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