Multiparty Session Types and their Applications http://mrg.doc.ic.ac.uk/ Nobuko Yoshida, Rumyana Neykova Imperial College London 1
Outline ➤ Idioms for Interaction ➤ Multiparty Session Types ➤ Scribble and Applications to a Large-scale Cyberinfrastructure ➤ Recent Results on Multiparty Session Types 2
Programming languages are tools which offer frameworks of abstraction for such activities – promoting or limiting them • Imperative • Functional • Logical
UNSTRUCTURED: STRUCTURED:
Quicksort in pure lambda: Quicksort with combinators:
Quicksort in ML:
ENCODING
Current: Communication is Ubiquitous ➤ The way to organise software is increasingly based on communications (Cloud Computing, many cores, message-passing parallel computation, ...) ➤ Question ➣ How to formally abstract/specify/implement/control communications? ➣ How to apply mobile processes and their type theories to real distributed applications and programming languages? 3
Current: Communication is Ubiquitous ➤ The way to organise software is increasingly based on communications (Cloud Computing, many cores, message-passing parallel computation, ...) ➤ Question ⇒ Multiparty session type theory = ➣ How to formally abstract/specify/implement/control communications? ➣ How to apply mobile processes and their type theories to real distributed applications and programming languages? ⇒ large-scale cyberinfrastructure for e-Science = 4
�⌦⌥ ⌃ ��⌥�/ ⇤��⇧⌥ "⌃⇧⇤⇧ ⇤⇧/⌥ � ⌫ 0◆1 ⌘��2⌥⌦⇤ 3,44⇣5# - 6⌥ �7 ⇤� �⇥⇧⌅✏ ⌦✓�⌥�⇧⌃�� ⇤�⇥⌦⇤⇥�⌥ ��� ��⌥�/⇧⌃� �⌦⌥ ⌃ ��⇥⌃✏ ◆ ⌃✏ �⌥✓�⌃✏& � ⌧⌥ ⌅⇡⇤⇧�⌥ ⌥⌃�� ✏ ⇤ ⌦�⌃⇤ ⌃⇤⌅✓ ⌦��⇧⌃� ���� ��⇤$ ���⇡$��⌥ ⌃✏ �⌃⇡$��⌥ 3⌥&�& �⇥�✓# ⇥�� �⇧⌃⌥# ⇥⌃✏⌥�⇡' ⇤⌥� ⌦ �⌥� # ⇤⌥⌅⌅⇧⇤⌥7# ⇤� ⌃�⇧⇤⇤⌥✏ /⇧ $⇧�$⇡⌘⌥⌥✏ ⌃⌥⇤'��↵& 8
�⌦⌥ ⌃ ��⌥�/ ⇤��⇧⌥ "⌃⇧⇤⇧ ⇤⇧/⌥ 9
⇢$ ⌅⌅⌥⌃�⌥ � �$⌥ ⌃⌥⌥✏ ⇤� ⌘⌥⌦⇧�✓# ⌦ ⇤ ⌅��⇥⌥# ⌘���� �# ⇧�⌘⌅⌥�⌥⌃⇤ ⌃✏ � ⌃ �⌥ �⌅ ⇥⌦↵�⇤⇥� �⌃����⌃ ↵���⌦✏� ↵⇤⇣⇥⇣⇧⇣ � & � ⇢���⇥⌃⇧⌦ ⇤⇧�⌃ ⇥� ⌃⌦⌥ ⇥ ⇢���⌥⌦⇤ �⌥ �⌥ ��✏⌥�⇧⌃� ⌃✏ ✓⌃⌦$��⌃⇧ ⇤⇧�⌃ ⇥ :⌥ ✏⌅�⌦↵⇡��⌥⌥✏��# ⌘����⌥ ⌃✏ ⌅⇧/⌥⌃⌥ ⇥ :✓⌃ �⇧⌦ �⌥ �⌥ ��⌃⇧⇤��⇧⌃� ⌃✏ �⌥⌦�/⌥�✓ ⇥ ⇠��⇧⌦ ⌅ ⌦�⌃⇤� ⇧⌃⇤ �⌃ �⌥ �⌥ / ⌅⇥⌥ � ◆$ �⌥✏ ⌃✏ ⇥⌥✏ �/⌥� ⌅�⌃�⇡⇤⌥�� ⌘⌥�⇧�✏ 3⌥&�& �4 ✓⌥ � ⇧⌃ ��"7& ;
�$✓ ⇣⇥⌅⇤⇧⌘ �⇤✓ ◆⌥⇧�⌃ �✓⌘⌥+ � ⌧��⇧⌃ ⇣⇧⌅⌃⌥� 3<44<7= ⌘�↵⌃� �⇤⌃ ⇥✓⌃ ⌃�◆⌃✏ ⇣ ⇧⇣�↵⌅⇥⌃⇤ ↵⇤⇣�⇤���⌦✏�� ⇥✓⌃� ���⌃ ⌦⇥ ⌥⌦�⌃�⇥⌦⌫ ⌃ & � ⇢ ⌃ ✏⌥⌦�⇧�⌥ ⌦���⇥⌃⇧⌦ ⇤⇧�⌃ ⌘��⇤�⌦�⌅ ⇥�↵⌃� � � ⇢ ⌃ �⌥ � ⇤⌥�⇧ ⌅⇧⌥✏ ✏⌃⇠ ⇧⇣��⌅✏⌦⇧�⇥⌦⇣✏� � ↵⇤⇣�⇤���⌦✏� �✏�⌅��⌃� ⌃✏ ⇥⇣⇣ ⇧✓�⌦✏� & � ⇡⇧� �⌫ ⌃ ⇥⇤�� ⇤⇧⌦ /⌥�⇧>⌦ ⇤⇧�⌃ 3✏⌥ ✏⌅�⌦↵⇡��⌥⌥✏��# �⌥⇤✓ ⌃✏ ⌅⇧/⌥⌃⌥7 '⇧⇤$�⇥⇤ �⇥�⇥⌃⇢�↵�⇧⌃ ⌃�↵ ⇣�⌦⇣✏ ↵⇤⇣⌫ ⌃�� 3 ↵⇣ �✏⇣�⌦� ⇥⌦�⌃ ⇧⇣�↵ ⌃�⌦⇥� 7& � ?%⇤⌥⌃✏ �⌅⌥ ⇤� ⇣�⌦⇧� ◆⌃⇤⌦⌧⇧�⇥⌦⇣✏� ⌃✏ @⌥%⇧�⌅⌥ ⌥�✏��⌦⇧ �⇣✏⌦⇥⇣⇤⌦✏� & A4
:⇧ ⌅��⇥⌥ �⌥⇤'⌥⌥⌃ "⌃✏⇥⇤�✓ ⌃✏ ⌫⌦ ✏⌥�⇧ �⇧⌃ �✓ ◆⌥⇧�⌃ �✓⌘⌥ BC⌫⌧⇠D;,# ?◆�CD;9E ⇥ ⇣⇧⌅⌃⌥�# )�⌃✏ ⌃✏ 6�$⇧✏ 2�⇧⌃⌥✏ ��⇢ �◆⇡⇢:⇠ 3<44<7 ⇥ 1��� ⌅⇧ ⇤⇧�⌃ �� ��⇢ �◆⇡⇢:⇠ B?◆�CD48E ⇥ ◆⌦�⇧��⌅⌥ ⇤ �⌥⌦$⌃�⌅��✓ AA
�⇥ ⇤⌅⇥⇧ ⌃⇥⌥� ⌦↵�� �✏⇣⌘✓ � ◆�
��⌅�⌥⌫⇠✏ ⇡✏⇢�✏✏ � ⌧⇠�⇢⇥⇧ ⌅ ⌧ �⇣⌅⌧✏��⌅ ⌃� ⌅⇥⇧ ✏���⌥ �⇧!✏� "↵�#$%&�' ( )↵%&*+ � ,�� ✏⇥' -⌥ ⌧⌅ ⌅ ⌧ .⌥�⌘�⌧⌅ /⌥� ✏⌧ 012 0 32�$ ⌦◆◆✓ � 4⌥⇥�⌅���⌅⇢�⌥ ⌥5 012 0 32�$ "( )↵%�+ � ⇣⇥�⇡⇡�✏ ⌅⇢ �✏⇣⌘ ⌥�⌥⌫⇧ � ,⇠�⇢�!⌅⇥⇢⇧ ✏���⌥ �⇧!✏� "↵)↵$%*+ � 61
��⌅�⌥⌫⇠✏ ⇡✏⇢�✏✏ � ⌧⇠�⇢⇥⇧ ⌅ ⌧ �⇣⌅⌧✏��⌅ ⌃� ⌅⇥⇧ ✏���⌥ �⇧!✏� "↵�#$%&�' ( )↵%&*+ � ,�� ✏⇥' -⌥ ⌧⌅ ⌅ ⌧ .⌥�⌘�⌧⌅ /⌥� ✏⌧ 012 0 32�$ ⌦◆◆✓ � 4⌥⇥�⌅���⌅⇢�⌥ ⌥5 012 0 32�$ "( )↵%�+ � ⇣⇥�⇡⇡�✏ ⌅⇢ �✏⇣⌘ ⌥�⌥⌫⇧ � ,⇠�⇢�!⌅⇥⇢⇧ ✏���⌥ �⇧!✏� "↵)↵$%*+ � 6�
Session Types Overview � Properties � Communication safety (no communication mismatch) � Communication fidelity (the communication follow the protocol) � Progress (no deadlock/stuck in a session)
Dynamic Monitoring [RV’13, COORDINATION’14, FMSD’15] Global Type Projection Local Type Local Type Local Type Dynamic Dynamic Dynamic Monitoring Monitoring Monitoring Program Program Program Carol Bob Alice
��������� �������� �����������
Buyer: A local projection
OOI agent negotiation 1/5 I https://confluence.oceanobservatories.org/display/syseng/ CIAD+COI+OV+Negotiate+Protocol 11 / 42
OOI agent negotiation 2/5 type <yml> "SAPDoc1" from "SAPDoc1.yml" as SAP; global protocol Negotiate(role Consumer as C, role Producer as P) { } 12 / 42
OOI agent negotiation 3/5 (choice) type <yml> "SAPDoc1" from "SAPDoc1.yml" as SAP; global protocol Negotiate(role Consumer as C, role Producer as P) { propose(SAP) from C to P; choice at P { accept() from P to C; confirm() from C to P; } or { reject() from P to C; } or { propose(SAP) from P to C; } } 13 / 42
OOI agent negotiation 4/5 type <yml> "SAPDoc1" from "SAPDoc1.yml" as SAP; global protocol Negotiate(role Consumer as C, role Producer as P) { propose(SAP) from C to P; choice at P { accept() from P to C; confirm() from C to P; } or { reject() from P to C; } or { propose(SAP) from P to C; choice at C { accept() from C to P; confirm() from P to C; } or { reject() from C to P; } or { propose(SAP) from C to P; } } } 14 / 42
OOI agent negotiation 5/5 (recursion) type <yml> "SAPDoc1" from "SAPDoc1.yml" as SAP; global protocol Negotiate(role Consumer as C, role Producer as P) { propose(SAP) from C to P; rec X { choice at P { accept() from P to C; confirm() from C to P; } or { reject() from P to C; } or { propose(SAP) from P to C; choice at C { accept() from C to P; confirm() from P to C; } or { reject() from C to P; } or { propose(SAP) from C to P; continue X; } } 15 / 42
Local protocol projection (Negotiation Consumer) // Projection for Consumer // Global propose(SAP) to P; propose(SAP) from C to P; rec START { rec START { choice at P { choice at P { accept() from P; accept() from P to C; confirm() to P; confirm() from C to P; } or { } or { reject() from P; reject() from P to C; } or { } or { propose(SAP) from P; propose(SAP) from P to C; choice at C { choice at C { accept() to P; accept() from C to P; confirm() from P; confirm() from P to C; } or { } or { reject() to P; reject() from C to P; } or { } or { propose(SAP) to P; propose(SAP) from C to P; continue START; continue START; } } } } } } 19 / 42
FSM generation (Negotiation Consumer) 20 / 42
Recommend
More recommend