diff --git a/theories/channel/multi_proto_consistency_examples.v b/theories/channel/multi_proto_consistency_examples.v
index af4b7afd75480d8175b2800a85cceea8f00a3924..c5dcdfddb90fb5cd69f63d5c6c2cbb5d0a212cb7 100644
--- a/theories/channel/multi_proto_consistency_examples.v
+++ b/theories/channel/multi_proto_consistency_examples.v
@@ -302,29 +302,89 @@ Section example5.
         clean_map 4. clean_map 0.
         iProto_consistent_take_step.
     - iIntros "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
-      clean_map 1. clean_map 3.      
+      clean_map 1. clean_map 3.
       iProto_consistent_take_step.
       iIntros "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
-      clean_map 0. clean_map 2.      
+      clean_map 0. clean_map 2.
       iProto_consistent_take_step.
       + iIntros "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
-        clean_map 2. clean_map 4.      
+        clean_map 2. clean_map 4.
         iProto_consistent_take_step.
         iIntros "_". iSplit; [done|]. iSplit; [done|]. iNext.
-        clean_map 3. clean_map 0.      
+        clean_map 3. clean_map 0.
         iProto_consistent_take_step.
         iIntros "_". iSplit; [done|]. iSplit; [done|]. iNext.
-        clean_map 4. clean_map 0.      
+        clean_map 4. clean_map 0.
         iProto_consistent_take_step.
       + iIntros "_". iSplit; [done|]. iSplit; [done|]. iNext.
-        clean_map 3. clean_map 0.              
+        clean_map 3. clean_map 0.
         iProto_consistent_take_step.
         iIntros "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
-        clean_map 2. clean_map 4.              
+        clean_map 2. clean_map 4.
         iProto_consistent_take_step.
         iIntros "_". iSplit; [done|]. iSplit; [done|]. iNext.
-        clean_map 4. clean_map 0.              
+        clean_map 4. clean_map 0.
         iProto_consistent_take_step.
   Qed.
 
 End example5.
+
+Section two_buyer.
+  Context `{!heapGS Σ}.
+
+  Definition two_buyer_prot : gmap nat (iProto Σ) :=
+    <[0 := (<(Send, 1) @ (title:Z)> MSG #title ;
+            <(Recv, 1) @ (quote:Z)> MSG #quote ;
+            <(Send, 2) @ (contrib:Z)> MSG #contrib ; END)%proto]>
+   (<[1 := (<(Recv, 0) @ (title:Z)> MSG #title ;
+            <(Send, 0) @ (quote:Z)> MSG #quote ;
+            <(Send, 2)> MSG #quote ;
+            <(Recv, 2) @ (b:bool)> MSG #b ;
+            if b then
+              <(Recv, 2) @ (address:Z)> MSG #address ;
+              <(Send, 2) @ (date:Z)> MSG #date ; END
+            else END)%proto]>
+   (<[2 := (<(Recv, 1) @ (quote:Z)> MSG #quote ;
+            <(Recv, 0) @ (contrib:Z)> MSG #contrib ;
+            if bool_decide (contrib >= quote/2)%Z then
+              <(Send, 1)> MSG #true ;
+              <(Send, 1) @ (address:Z)> MSG #address ;
+              <(Recv, 1) @ (date:Z)> MSG #date ; END
+            else
+              <(Send, 1)> MSG #false ; END)%proto]>
+      ∅)).
+
+  Lemma two_buyer_prot_consistent :
+    ⊢ iProto_consistent two_buyer_prot.
+  Proof.
+    rewrite /two_buyer_prot.
+    iProto_consistent_take_step.
+    iIntros (title) "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
+    clean_map 0. clean_map 1.
+    iProto_consistent_take_step.
+    iIntros (quote) "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
+    clean_map 0. clean_map 1.
+    iProto_consistent_take_step.
+    iIntros "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
+    clean_map 1. clean_map 2.
+    iProto_consistent_take_step.
+    iIntros (contrib) "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
+    clean_map 0. clean_map 2.
+    case_bool_decide.
+    - iProto_consistent_take_step.
+      iIntros "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
+      clean_map 2. clean_map 1.
+      iProto_consistent_take_step.
+      iIntros (address) "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
+      clean_map 2. clean_map 1.
+      iProto_consistent_take_step.
+      iIntros (date) "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
+      clean_map 2. clean_map 1.
+      iProto_consistent_take_step.
+    - iProto_consistent_take_step.
+      iIntros "_". iExists _. iSplit; [done|]. iSplit; [done|]. iNext.
+      clean_map 2. clean_map 1.
+      iProto_consistent_take_step.
+  Qed.
+
+End two_buyer.