From e21a5733b0d410e73b87371d5838698879828e5a Mon Sep 17 00:00:00 2001
From: Robbert Krebbers <mail@robbertkrebbers.nl>
Date: Wed, 1 Apr 2020 02:36:05 +0200
Subject: [PATCH] Add rule `iProto_le_branch`.

---
 theories/channel/channel.v | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/theories/channel/channel.v b/theories/channel/channel.v
index 6e4bb0c..4b7295c 100644
--- a/theories/channel/channel.v
+++ b/theories/channel/channel.v
@@ -174,6 +174,21 @@ Section channel.
     by apply iProto_message_proper=> /= -[].
   Qed.
 
+  Lemma iProto_le_branch a P1 P2 p1 p2 p1' p2' :
+    ▷ (P1 -∗ P1 ∗ iProto_le p1 p1') ∧ ▷ (P2 -∗ P2 ∗ iProto_le p2 p2') -∗
+    iProto_le (iProto_branch a P1 P2 p1 p2) (iProto_branch a P1 P2 p1' p2').
+  Proof.
+    iIntros "H". rewrite /iProto_branch. destruct a.
+    - iApply iProto_le_send'; iIntros "!>" (b) "HP /=".
+      iExists b; iSplit; [done|]. destruct b.
+      + iDestruct "H" as "[H _]". by iApply "H".
+      + iDestruct "H" as "[_ H]". by iApply "H".
+    - iApply iProto_le_recv'; iIntros "!>" (b) "HP /=".
+      iExists b; iSplit; [done|]. destruct b.
+      + iDestruct "H" as "[H _]". by iApply "H".
+      + iDestruct "H" as "[_ H]". by iApply "H".
+  Qed.
+
   (** ** Specifications of [send] and [recv] *)
   Lemma new_chan_spec p :
     {{{ True }}}
-- 
GitLab