From 03d3465f8d79df3b299240bc6e0840165b5d746d Mon Sep 17 00:00:00 2001
From: Jonas Kastberg <jihgfee@gmail.com>
Date: Sun, 10 May 2020 12:37:02 +0200
Subject: [PATCH] Concur2020

---
 README.md          | 18 +++++++++++++++++-
 papers/CONCUR20.md | 16 ++++++++++++++++
 2 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 papers/CONCUR20.md

diff --git a/README.md b/README.md
index 64a999f..645f061 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
 # ACTRIS COQ DEVELOPMENT
 
+For CONCUR 2020 specific remarks see [CONCUR2020.md](CONCUR2020.md).
+
 This directory contains the Coq mechanisation of the Actris framework,
 first presented in the paper
 "Actris: Session Type Based Reasoning in Separation Logic".
@@ -46,9 +48,11 @@ The individual types contain the following:
 
 ## Notation
 
-The following table gives a mapping between the official notation in literature
+The following table gives a mapping between the notation in literature
 and the Coq mechanization:
 
+Dependent Separation Protocols:
+
 |        | Literature                    | Coq mechanization                     |
 |--------|-------------------------------|---------------------------------------|
 | Send   | `! x_1 .. x_n <v>{ P }. prot` | `<! x_1 .. x_n> MSG v {{ P }}; prot`  |
@@ -59,6 +63,17 @@ and the Coq mechanization:
 | Append | `prot_1 · prot_2`             | `prot_1 <++> prot_2`                  |
 | Dual   | An overlined protocol         | No notation                           |
 
+Semantic Session Types:
+
+|        | Literature                    | Coq mechanization                     |
+|--------|-------------------------------|---------------------------------------|
+| Send   | `!_{X_1 .. X_n} A . S`        | `<!! X_1 .. X_n> TY A ; S`            |
+| Recv   | `?_{X_1 .. X_n} A . S`        | `<?? X_1 .. X_n> TY A ; S`            |
+| End    | `end`                         | `END`                                 |
+| Select | `(+){ S_1 .. S_n }`           | `lty_choice SEND Ss`                  |
+| Branch | `&{ S_1 .. S_n }`             | `lty_choice RECV Ss`                  |
+| Dual   | An overlined protocol         | No notation                           |
+
 ## Coq tactics
 
 In order to prove programs using Actris, one can make use of a combination of
@@ -109,6 +124,7 @@ Concretely, the normalization performs the following actions:
 [ActrisProofMode]: theories/channel/proofmode.v
 
 ## Semantic Session Type System
+
 The logical relation for type safety of a semantic session type system is contained
 in the directory [theories/logrel](theories/logrel). The logical relation is
 defined across the following files:
diff --git a/papers/CONCUR20.md b/papers/CONCUR20.md
new file mode 100644
index 0000000..ae23ea2
--- /dev/null
+++ b/papers/CONCUR20.md
@@ -0,0 +1,16 @@
+## Examples
+
+The parallel receive example in Section 4 can be found in
+  [theories/logrel/examples/double.v](../theories/logrel/examples/double.v):
+  This program performs two ``racy'' parallel receives on the same channel from two
+  different threads, using locks to allow the channel to be shared. This
+  program cannot be shown to be well-typed using the semantic typing rules.
+  Therefore, a manual proof of the well-typedness is given.
+
+The subprotocol assertion over two protocols that sends reference ownerships in
+Section 5 can be found in
+  [theories/examples/subprotocols.v](../theories/examples/subprotocols.v):
+  It contains the proof of the example.
+
+The recursive session subtyping example in Section 5 can be found in
+  [theories/logrel/examples/subtyping.v](../theories/logrel/examples/subtyping.v):
-- 
GitLab