Communicating systems are everywhere

But as any other computer system they have bugs and occasionally fail

... bummer!

This thesis focuses on preventing two specific ways communicating systems might fail

💥

🙊🙉

Communication deadlocks


A


                    receive("B",x)
                    ...
        

B


                    receive("A",x)
                    ...
        

Communication deadlocks


A


                    ...
        

B


                    receive("A",x)
                    ...
        

out-of-memory errors


A


                    x = number_crunching()
                    send("B",x)
                    ...
        

B


                    receive("A",x)
                    ...
        

out-of-memory errors


A


                    x = 💥
                    send("B",x)
                    ...
        

B


                    receive("A",x)
                    ...
        

out-of-memory errors


A

💥

B


                    receive("A",x)
                    ...
        
We tackle these problems using end-to-end machine-checked proofs. This is, we aim to provide a theorem connecting our source code to the binary that actually runs in our computer.