Choreograhies in ACL2


Alejandro Gomez-LondoƱo

5th of November 2020

A Computational Logic for Applicative Common Lisp


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

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

Deadlock-freedom

$c \rightarrow^{\ast} end$