#### Choreograhies in ACL2

Alejandro Gomez-LondoĆ±o

5th of November 2020

A Computational Logic for Applicative Common Lisp

• Terms are untyped
• The logic is first order
• All functions are total

The Method

1. Try to prove a lemma
2. It most likely will fail, but prints useful information (checkpoints)
3. Look at the checkpoints and find extra lemmas that might help
4. Write the lemma in a way that is useful for you main lemma
5. Apply the method on the extra lemmas
6. Go to step 1
• Nil means false, anything else is true (numbers,strings,pairs and symbols)
• The theorem prover is mostly automatic, but you can provide hints!
• I hope you like parentheses

Choreograhies

Choreographies are a way of describing communicating systems as global programs

A[2] -> B.y
P[3] -> Q.w
C[1] -> D.k


Concurrency

Concurrency


A[2] -> B.y
P[3] -> Q.w
✅


A[2] -> B.y
P[3] -> Q.w
C[1] -> D.k


A[2] -> B.y
✅
C[1] -> D.k


✅
P[3] -> Q.w
C[1] -> D.k


Asyncrony

Asyncrony


A[2] -> B.y
P[3] -> A.w
❌


A[2] -> B.y
P[3] -> A.w
A[1] -> D.k


A[2] -> B.y
✅
A[1] -> D.k


✅
P[3] -> A.w
A[1] -> D.k


Confluence

 $c \rightarrow^{\ast} end$