Knowledge

Choreographic programming

Source 📝

548:
Yoshida, Nobuko; Vasconcelos, Vasco T.; Padovani, Luca; Bono, Nicholas Ng; Neykova, Rumyana; Montesi, Fabrizio; Mascardi, Viviana; Martins, Francisco; Johnsen, Einar Broch; Hu, Raymond; Giachino, Elena; Gesbert, Nils; Gay, Simon J.; Deniélou, Pierre-Malo; Castagna, Giuseppe; Campos, Joana; Bravetti,
158:
Client.(credentials, serviceID) -> CAS.authRequest if CAS.check(authRequest) then CAS.token = genToken(authRequest) CAS.Success(token) -> Client.result CAS.Success(token) -> Service.result else CAS.Failure -> Client.result CAS.Failure -> Service.result
219:
A key feature of choreographic programming is the capability of compiling choreographies to distributed implementations. These implementations can be libraries for software that needs to participate in a computer network by following a protocol, or standalone distributed programs.
288:
recv authRequest from Client if check(authRequest) then token = genToken(authRequest) send Success(token) to Client send Success(token) to Service else send Failure to Client send Failure to Service
1571: 230:
Endpoint projection returns a program for each role described in the source choreography. For example, given the choreography above, endpoint projection would return three programs: one for
1477: 1541: 305:
The paradigm of choreographic programming originates from its titular PhD thesis. The inspiration for the syntax of choreographic programming languages can be traced back to
1490: 897: 1640: 1575: 627: 820: 1470: 1704: 2054: 1916: 2060: 1463: 1423: 1326: 1120: 1070: 973: 918: 756: 519: 325: 297:
For each role, its code contains the actions that the role should execute to implement the choreography correctly together with the others.
2245: 1993: 1713: 1396:
Pohjola, Johannes Åman; Gómez-Londoño, Alejandro; Shaker, James; Norrish, Michael (2022). Andronick, June; de Moura, Leonardo (eds.).
1212: 1018: 674: 620: 2085: 1765: 1709: 1945: 1818: 1749: 1684: 1607: 2311: 2123: 1886: 1516: 601:
Giallorenzo, Saverio; Montesi, Fabrizio; Peressotti, Marco; Richter, David; Salvaneschi, Guido; Weisenburger, Pascal (2021).
143: 100: 2306: 1901: 1891: 1669: 358: 2285: 2265: 2195: 2138: 2100: 2090: 2050: 1975: 1911: 1881: 1808: 1797: 1694: 1674: 1649: 1612: 381: 362: 2240: 2003: 1970: 1865: 1841: 1803: 1783: 1679: 1588: 1566: 1551: 403: 392: 309:, also known as "Alice and Bob" notation. Choreographic programming has also been heavily influenced by standards for 183:
checks if the request is valid for obtaining an authentication token. If so, it generates a token and communicates a
2187: 2173: 2080: 2040: 1965: 1871: 1851: 1718: 1597: 1531: 451: 306: 57: 60:(also known as "Alice and Bob" notation). The key to these languages is the communication primitive, for example 2280: 1955: 1935: 1921: 1303:, Lecture Notes in Computer Science, vol. 12819, Cham: Springer International Publishing, pp. 115–133, 52:
to define the intended communication behaviour of concurrent participants. Programs in this paradigm are called
2260: 2220: 2163: 2095: 1833: 1664: 1295:
Cruz-Filipe, Luís; Montesi, Fabrizio; Peressotti, Marco (2021), Cerone, Antonio; Ölveczky, Peter Csaba (eds.),
659:
Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '13
2270: 2250: 2191: 2178: 2158: 1985: 1722: 1626: 1584: 167:
communicates a pair consisting of some credentials and the identifier of the service it wishes to access to
2230: 2205: 2199: 2143: 2105: 1793: 1788: 1740: 1635: 1536: 1508: 1499: 466: 2132: 2128: 2070: 2022: 1592: 471: 333: 743: 2275: 2255: 2215: 2017: 1876: 1745: 1732: 1486: 461: 310: 32: 28: 391:). A higher-order, object-oriented choreographic programming language that compiles to libraries in 324:
Choreographic programming is an active area of research. The paradigm has been used in the study of
2210: 2148: 1960: 1940: 1926: 1658: 1526: 1521: 703:
Preda, Mila Dalla; Gabbrielli, Maurizio; Giallorenzo, Saverio; Lanese, Ivan; Mauro, Jacopo (2017).
2027: 1980: 1950: 1896: 1755: 1654: 1546: 1455: 1429: 1368: 1332: 1304: 1277: 1249: 1218: 1197:. Leibniz International Proceedings in Informatics (LIPIcs). Vol. 193. pp. 15:1–15:18. 1175: 1157: 1126: 1099: 1076: 1043: 1024: 979: 951: 924: 889: 870: 811: 791: 724: 680: 605:. Leibniz International Proceedings in Informatics (LIPIcs). Vol. 194. pp. 22:1–22:27. 525: 341: 329: 211:
message (Lines 7–8). We refer to this choreography as the "SSO choreography" in the remainder.
2183: 2075: 1930: 1906: 1846: 1813: 1775: 1760: 1699: 1419: 1322: 1269: 1208: 1116: 1066: 1014: 969: 914: 752: 670: 616: 515: 2065: 1997: 1861: 1602: 1409: 1378: 1314: 1259: 1198: 1167: 1108: 1058: 1006: 961: 906: 860: 801: 716: 662: 606: 570: 562: 507: 456: 318: 314: 20: 1047: 2115: 1989: 1855: 1556: 435: 410: 1296: 2167: 1823: 1689: 414: 96: 1397: 2300: 2153: 1433: 1336: 1281: 1222: 1179: 815: 529: 377: 1408:. Dagstuhl, Germany: Schloss Dagstuhl – Leibniz-Zentrum für Informatik: 27:1–27:18. 1130: 1080: 1028: 983: 928: 874: 720: 684: 728: 373: 354: 337: 111: 1062: 999:"Choreographing cyber-physical distributed control systems for the energy sector" 910: 611: 2035: 1318: 1112: 965: 894:"Discretionary Information Flow Control for Interaction-Oriented Specifications" 1414: 1264: 1237: 1203: 893: 431:
Kalas. A choreographic programming language with a verified compiler to CakeML.
409:
Core Choreographies. A core theoretical model for choreographic programming. A
1171: 1095: 943: 1273: 1145: 1010: 865: 848: 704: 666: 575: 1357:"HasChor: Functional Choreographic Programming for All (Functional Pearl)" 998: 654: 511: 501: 1402:
13th International Conference on Interactive Theorem Proving (ITP 2022)
1057:. Lecture Notes in Computer Science. Vol. 9688. pp. 195–211. 950:. Lecture Notes in Computer Science. Vol. 9688. pp. 114–123. 905:. Lecture Notes in Computer Science. Vol. 9200. pp. 427–450. 566: 438:
choreographic programming language theory with higher-order procedures.
425: 250:
are primitives for sending and receiving messages to/from other roles.
1236:
Cruz-Filipe, Luís; Montesi, Fabrizio; Peressotti, Marco (2023-05-27).
1107:. Lecture Notes in Computer Science. Vol. 11230. pp. 22–40. 223:
The translation of a choreography into distributed programs is called
1398:"Kalas: A Verified, End-To-End Compiler for a Choreographic Language" 550: 421: 399: 1382: 806: 779: 1373: 1309: 1254: 1162: 956: 796: 603:
Multiparty Languages: The Choreographic and Multitier Cases (Pearl)
1356: 1055:
Formal Techniques for Distributed Objects, Components, and Systems
948:
Formal Techniques for Distributed Objects, Components, and Systems
834:"Fabrizio Montesi wins the EAPLS Best PhD Dissertation Award 2014" 1101:
On the Move to Meaningful Internet Systems. OTM 2018 Conferences
849:"Structured Communication-Centered Programming for Web Services" 833: 763: 1459: 1450: 1048:"Enforcing Availability in Failure-Aware Communicating Systems" 638: 388: 31:
where programs are compositions of interactions among multiple
1404:. Leibniz International Proceedings in Informatics (LIPIcs). 836:. European Association for Programming Languages and Systems. 369: 1195:
Formalising a Turing-Complete Choreographic Language in Coq
1094:
Giallorenzo, Saverio; Lanese, Ivan; Russo, Daniel (2018).
264:
send (credentials, serviceID) to CAS recv result from CAS
780:"Pirouette: higher-order typed functional choreographies" 95:
The example below shows a choreography for a simplified
1355:
Shen, Gan; Kashiwa, Shun; Kuper, Lindsey (2023-08-31).
847:
Carbone, Marco; Honda, Kohei; Yoshida, Nobuko (2012).
853:
ACM Transactions on Programming Languages and Systems
72:
communicates the result of evaluating the expression
376:
choreographic programming language that compiles to
2229: 2114: 2016: 1832: 1774: 1731: 1634: 1625: 1565: 1507: 1498: 778:Hirsch, Andrew K.; Garg, Deepak (16 January 2022). 705:"Dynamic Choreographies: Theory and Implementation" 1003:Proceedings of the Symposium on Applied Computing 254:Endpoint Projection (EPP) of the SSO choreography 242:. They are shown below in pseudocode form, where 784:Proceedings of the ACM on Programming Languages 555:Foundations and Trends in Programming Languages 48:In choreographic programming, developers use a 1238:"A Formal Theory of Choreographic Programming" 424:). A library for choreographic programming in 402:). Library-level choreographic programming in 1471: 1301:Theoretical Aspects of Computing – ICTAC 2021 1144:Cruz-Filipe, Luís; Montesi, Fabrizio (2020). 942:Cruz-Filipe, Luís; Montesi, Fabrizio (2016). 698: 696: 694: 549:Mario; Bono, Viviana; Ancona, Davide (2016). 179:(for authentication request). In Line 2, the 8: 1146:"A core model for choreographic programming" 888:Lluch Lafuente, Alberto; Nielson, Flemming; 357:). A choreographic programming language for 1096:"ChIP: A Choreographic Integration Process" 551:"Behavioral Types in Programming Languages" 543: 541: 539: 317:, as well as developments of the theory of 1631: 1504: 1478: 1464: 1456: 653:Carbone, Marco; Montesi, Fabrizio (2013). 596: 594: 592: 590: 588: 586: 56:. Choreographic languages are inspired by 1542:Programming in the large and in the small 1413: 1372: 1308: 1263: 1253: 1202: 1161: 955: 864: 805: 795: 610: 574: 207:that authentication failed, by sending a 163:The choreography starts in Line 1, where 84:". Alice, Bob, etc. are typically called 252: 80:, which stores it in its local variable 1193:Cohen, Liron; Kaliszyk, Cezary (2021). 483: 175:stores this pair in its local variable 773: 771: 1297:"Certifying Choreography Compilation" 997:López, Hugo A.; Heussen, Kai (2017). 495: 493: 491: 489: 487: 187:message containing the token to both 7: 751:(PhD). IT University of Copenhagen. 648: 646: 1042:López, Hugo A.; Nielson, Flemming; 764:(EAPLS Best PhD Dissertation Award) 709:Logical Methods in Computer Science 50:choreographic programming language 14: 899:Logic, Rewriting, and Concurrency 103:(CAS) that involves three roles: 2086:Partitioned global address space 628:(ECOOP 2021 Distinguished Paper) 821:(POPL 2022 Distinguished Paper) 413:implementation is available in 1242:Journal of Automated Reasoning 506:. Cambridge University Press. 503:Introduction to Choreographies 144:Central Authentication Service 101:Central Authentication Service 1: 146:responsible for checking the 1613:Uniform Function Call Syntax 1150:Theoretical Computer Science 1063:10.1007/978-3-319-39570-8_13 944:"Choreographies in Practice" 911:10.1007/978-3-319-23165-5_20 832:Arend Rensink (2015-08-30). 655:"Deadlock-freedom-by-design" 612:10.4230/LIPIcs.ECOOP.2021.22 195:(Lines 3–5). Otherwise, the 110:, which wishes to obtain an 2081:Parallel programming models 2055:Concurrent constraint logic 1319:10.1007/978-3-030-85315-0_8 1113:10.1007/978-3-030-02671-4_2 966:10.1007/978-3-319-39570-8_8 639:Choral programming language 128:, which needs to know from 2328: 2174:Metalinguistic abstraction 2041:Automatic mutual exclusion 1415:10.4230/LIPIcs.ITP.2022.27 1265:10.1007/s10817-023-09665-3 1204:10.4230/LIPIcs.ITP.2021.15 742:Montesi, Fabrizio (2013). 500:Montesi, Fabrizio (2023). 452:Security protocol notation 307:security protocol notation 99:(SSO) protocol based on a 58:security protocol notation 2046:Choreographic programming 1367:(ICFP): 207:541–207:565. 1172:10.1016/j.tcs.2019.07.005 745:Choreographic Programming 721:10.23638/LMCS-13(2:1)2017 282: 270: 258: 25:choreographic programming 2096:Relativistic programming 286: 274: 262: 156: 62: 1011:10.1145/3019612.3019656 866:10.1145/2220365.2220367 667:10.1145/2429069.2429101 136:should be given access. 64:Alice.expr -> Bob.x 2106:Structured concurrency 1491:Comparison by language 467:Structured concurrency 361:that produces code in 334:cyber-physical systems 2312:Programming paradigms 2071:Multitier programming 1887:Interface description 1487:Programming paradigms 512:10.1017/9781108981491 472:Multitier programming 276:recv result from CAS 154:The choreography is: 2307:Concurrent computing 1005:. pp. 437–443. 462:Service choreography 315:interaction diagrams 311:service choreography 29:programming paradigm 16:Programming paradigm 2211:Self-modifying code 1819:Probabilistic logic 1750:Functional reactive 1705:Expression-oriented 1659:Partial application 1451:www.choral-lang.org 1044:Nielson, Hanne Riis 890:Nielson, Hanne Riis 255: 225:endpoint projection 215:Endpoint Projection 2124:Attribute-oriented 1897:List comprehension 1842:Algebraic modeling 1655:Anonymous function 1547:Design by contract 1517:Jackson structures 567:10.1561/2500000031 342:system integration 338:runtime adaptation 330:parallel computing 253: 2294: 2293: 2184:Program synthesis 2076:Organic computing 2012: 2011: 1917:Non-English-based 1892:Language-oriented 1670:Purely functional 1621: 1620: 1425:978-3-95977-252-5 1328:978-3-030-85314-3 1122:978-3-030-02670-7 1072:978-3-319-39569-2 975:978-3-319-39569-2 920:978-3-319-23164-8 758:978-87-7949-299-8 521:978-1-108-83376-9 359:adaptable systems 295: 294: 227:(EPP for short). 118:to interact with 2319: 2196:by demonstration 2101:Service-oriented 2091:Process-oriented 2066:Macroprogramming 2051:Concurrent logic 1922:Page description 1912:Natural language 1882:Grammar-oriented 1809:Nondeterministic 1798:Constraint logic 1700:Point-free style 1695:Functional logic 1632: 1603:Immutable object 1522:Block-structured 1505: 1480: 1473: 1466: 1457: 1438: 1437: 1417: 1393: 1387: 1386: 1376: 1352: 1346: 1345: 1344: 1343: 1312: 1292: 1286: 1285: 1267: 1257: 1233: 1227: 1226: 1206: 1190: 1184: 1183: 1165: 1141: 1135: 1134: 1106: 1091: 1085: 1084: 1052: 1039: 1033: 1032: 994: 988: 987: 959: 939: 933: 932: 904: 885: 879: 878: 868: 844: 838: 837: 829: 823: 819: 809: 799: 775: 766: 762: 750: 739: 733: 732: 700: 689: 688: 650: 641: 636: 630: 626: 614: 598: 581: 580: 578: 545: 534: 533: 497: 457:Sequence diagram 326:information flow 256: 249: 245: 241: 237: 233: 210: 206: 202: 198: 194: 190: 186: 182: 178: 174: 170: 166: 149: 141: 135: 131: 127: 121: 117: 109: 83: 79: 75: 71: 21:computer science 2327: 2326: 2322: 2321: 2320: 2318: 2317: 2316: 2297: 2296: 2295: 2290: 2232: 2225: 2116:Metaprogramming 2110: 2026: 2021: 2008: 1990:Graph rewriting 1828: 1804:Inductive logic 1784:Abductive logic 1770: 1727: 1690:Dependent types 1638: 1617: 1589:Prototype-based 1569: 1567:Object-oriented 1561: 1557:Nested function 1552:Invariant-based 1494: 1484: 1447: 1442: 1441: 1426: 1395: 1394: 1390: 1383:10.1145/3607849 1354: 1353: 1349: 1341: 1339: 1329: 1294: 1293: 1289: 1235: 1234: 1230: 1215: 1192: 1191: 1187: 1143: 1142: 1138: 1123: 1104: 1093: 1092: 1088: 1073: 1050: 1041: 1040: 1036: 1021: 996: 995: 991: 976: 941: 940: 936: 921: 902: 887: 886: 882: 846: 845: 841: 831: 830: 826: 807:10.1145/3498684 777: 776: 769: 759: 748: 741: 740: 736: 702: 701: 692: 677: 661:. p. 263. 652: 651: 644: 637: 633: 623: 600: 599: 584: 561:(2–3): 95–230. 547: 546: 537: 522: 499: 498: 485: 480: 448: 442: 350: 319:process calculi 303: 291: 290: 278: 277: 266: 265: 247: 243: 239: 235: 231: 217: 208: 204: 200: 196: 192: 188: 184: 180: 176: 172: 168: 164: 161: 160: 150:'s credentials. 147: 142:, which is the 139: 133: 129: 125: 119: 115: 107: 81: 77: 73: 69: 66: 65: 46: 41: 17: 12: 11: 5: 2325: 2323: 2315: 2314: 2309: 2299: 2298: 2292: 2291: 2289: 2288: 2283: 2278: 2273: 2268: 2263: 2258: 2253: 2248: 2243: 2237: 2235: 2227: 2226: 2224: 2223: 2218: 2213: 2208: 2203: 2181: 2176: 2171: 2161: 2156: 2151: 2146: 2141: 2136: 2126: 2120: 2118: 2112: 2111: 2109: 2108: 2103: 2098: 2093: 2088: 2083: 2078: 2073: 2068: 2063: 2058: 2048: 2043: 2038: 2032: 2030: 2014: 2013: 2010: 2009: 2007: 2006: 2001: 1986:Transformation 1983: 1978: 1973: 1968: 1963: 1958: 1953: 1948: 1943: 1938: 1933: 1924: 1919: 1914: 1909: 1904: 1899: 1894: 1889: 1884: 1879: 1874: 1872:Differentiable 1869: 1859: 1852:Automata-based 1849: 1844: 1838: 1836: 1830: 1829: 1827: 1826: 1821: 1816: 1811: 1806: 1801: 1791: 1786: 1780: 1778: 1772: 1771: 1769: 1768: 1763: 1758: 1753: 1743: 1737: 1735: 1729: 1728: 1726: 1725: 1719:Function-level 1716: 1707: 1702: 1697: 1692: 1687: 1682: 1677: 1672: 1667: 1662: 1652: 1646: 1644: 1629: 1623: 1622: 1619: 1618: 1616: 1615: 1610: 1605: 1600: 1595: 1581: 1579: 1563: 1562: 1560: 1559: 1554: 1549: 1544: 1539: 1534: 1532:Non-structured 1529: 1524: 1519: 1513: 1511: 1502: 1496: 1495: 1485: 1483: 1482: 1475: 1468: 1460: 1454: 1453: 1446: 1445:External links 1443: 1440: 1439: 1424: 1388: 1347: 1327: 1287: 1228: 1213: 1185: 1136: 1121: 1086: 1071: 1034: 1019: 989: 974: 934: 919: 880: 839: 824: 790:(POPL): 1–27. 767: 757: 734: 690: 675: 642: 631: 621: 582: 535: 520: 482: 481: 479: 476: 475: 474: 469: 464: 459: 454: 447: 444: 440: 439: 432: 429: 418: 407: 396: 385: 366: 349: 346: 302: 299: 293: 292: 287: 284: 280: 279: 275: 272: 268: 267: 263: 260: 238:, and one for 216: 213: 157: 152: 151: 137: 123: 97:single sign-on 63: 54:choreographies 45: 44:Choreographies 42: 40: 37: 35:participants. 15: 13: 10: 9: 6: 4: 3: 2: 2324: 2313: 2310: 2308: 2305: 2304: 2302: 2287: 2284: 2282: 2279: 2277: 2274: 2272: 2269: 2267: 2264: 2262: 2259: 2257: 2256:Data-oriented 2254: 2252: 2249: 2247: 2244: 2242: 2239: 2238: 2236: 2234: 2228: 2222: 2219: 2217: 2214: 2212: 2209: 2207: 2204: 2201: 2197: 2193: 2189: 2185: 2182: 2180: 2177: 2175: 2172: 2169: 2165: 2162: 2160: 2157: 2155: 2154:Homoiconicity 2152: 2150: 2147: 2145: 2142: 2140: 2137: 2134: 2130: 2127: 2125: 2122: 2121: 2119: 2117: 2113: 2107: 2104: 2102: 2099: 2097: 2094: 2092: 2089: 2087: 2084: 2082: 2079: 2077: 2074: 2072: 2069: 2067: 2064: 2062: 2061:Concurrent OO 2059: 2056: 2052: 2049: 2047: 2044: 2042: 2039: 2037: 2034: 2033: 2031: 2029: 2024: 2019: 2015: 2005: 2002: 1999: 1995: 1991: 1987: 1984: 1982: 1979: 1977: 1974: 1972: 1969: 1967: 1964: 1962: 1959: 1957: 1956:Set-theoretic 1954: 1952: 1949: 1947: 1944: 1942: 1939: 1937: 1936:Probabilistic 1934: 1932: 1928: 1925: 1923: 1920: 1918: 1915: 1913: 1910: 1908: 1905: 1903: 1900: 1898: 1895: 1893: 1890: 1888: 1885: 1883: 1880: 1878: 1875: 1873: 1870: 1867: 1863: 1860: 1857: 1853: 1850: 1848: 1845: 1843: 1840: 1839: 1837: 1835: 1831: 1825: 1822: 1820: 1817: 1815: 1812: 1810: 1807: 1805: 1802: 1799: 1795: 1792: 1790: 1787: 1785: 1782: 1781: 1779: 1777: 1773: 1767: 1764: 1762: 1759: 1757: 1754: 1751: 1747: 1744: 1742: 1739: 1738: 1736: 1734: 1730: 1724: 1720: 1717: 1715: 1714:Concatenative 1711: 1708: 1706: 1703: 1701: 1698: 1696: 1693: 1691: 1688: 1686: 1683: 1681: 1678: 1676: 1673: 1671: 1668: 1666: 1663: 1660: 1656: 1653: 1651: 1648: 1647: 1645: 1642: 1637: 1633: 1630: 1628: 1624: 1614: 1611: 1609: 1606: 1604: 1601: 1599: 1596: 1594: 1590: 1586: 1583: 1582: 1580: 1577: 1573: 1568: 1564: 1558: 1555: 1553: 1550: 1548: 1545: 1543: 1540: 1538: 1535: 1533: 1530: 1528: 1525: 1523: 1520: 1518: 1515: 1514: 1512: 1510: 1506: 1503: 1501: 1497: 1492: 1488: 1481: 1476: 1474: 1469: 1467: 1462: 1461: 1458: 1452: 1449: 1448: 1444: 1435: 1431: 1427: 1421: 1416: 1411: 1407: 1403: 1399: 1392: 1389: 1384: 1380: 1375: 1370: 1366: 1362: 1358: 1351: 1348: 1338: 1334: 1330: 1324: 1320: 1316: 1311: 1306: 1302: 1298: 1291: 1288: 1283: 1279: 1275: 1271: 1266: 1261: 1256: 1251: 1247: 1243: 1239: 1232: 1229: 1224: 1220: 1216: 1214:9783959771887 1210: 1205: 1200: 1196: 1189: 1186: 1181: 1177: 1173: 1169: 1164: 1159: 1155: 1151: 1147: 1140: 1137: 1132: 1128: 1124: 1118: 1114: 1110: 1103: 1102: 1097: 1090: 1087: 1082: 1078: 1074: 1068: 1064: 1060: 1056: 1049: 1045: 1038: 1035: 1030: 1026: 1022: 1020:9781450344869 1016: 1012: 1008: 1004: 1000: 993: 990: 985: 981: 977: 971: 967: 963: 958: 953: 949: 945: 938: 935: 930: 926: 922: 916: 912: 908: 901: 900: 895: 891: 884: 881: 876: 872: 867: 862: 858: 854: 850: 843: 840: 835: 828: 825: 822: 817: 813: 808: 803: 798: 793: 789: 785: 781: 774: 772: 768: 765: 760: 754: 747: 746: 738: 735: 730: 726: 722: 718: 714: 710: 706: 699: 697: 695: 691: 686: 682: 678: 676:9781450318327 672: 668: 664: 660: 656: 649: 647: 643: 640: 635: 632: 629: 624: 622:9783959771900 618: 613: 608: 604: 597: 595: 593: 591: 589: 587: 583: 577: 576:10044/1/44282 572: 568: 564: 560: 556: 552: 544: 542: 540: 536: 531: 527: 523: 517: 513: 509: 505: 504: 496: 494: 492: 490: 488: 484: 477: 473: 470: 468: 465: 463: 460: 458: 455: 453: 450: 449: 445: 443: 437: 434:Pirouette. A 433: 430: 427: 423: 419: 416: 412: 408: 405: 401: 397: 394: 390: 386: 383: 379: 378:microservices 375: 374:session-typed 371: 367: 364: 360: 356: 352: 351: 347: 345: 343: 339: 335: 331: 327: 322: 320: 316: 312: 308: 300: 298: 285: 281: 273: 269: 261: 257: 251: 228: 226: 221: 214: 212: 155: 145: 138: 124: 113: 106: 105: 104: 102: 98: 93: 91: 87: 61: 59: 55: 51: 43: 38: 36: 34: 30: 26: 22: 2261:Event-driven 2045: 1665:Higher-order 1593:Object-based 1405: 1401: 1391: 1364: 1360: 1350: 1340:, retrieved 1300: 1290: 1245: 1241: 1231: 1194: 1188: 1153: 1149: 1139: 1100: 1089: 1054: 1037: 1002: 992: 947: 937: 898: 883: 856: 852: 842: 827: 787: 783: 744: 737: 712: 708: 658: 634: 602: 558: 554: 502: 441: 323: 304: 296: 229: 224: 222: 218: 162: 153: 112:access token 94: 89: 85: 67: 53: 49: 47: 24: 18: 2271:Intentional 2251:Data-driven 2233:of concerns 2192:Inferential 2179:Multi-stage 2159:Interactive 2036:Actor-based 2023:distributed 1966:Stack-based 1766:Synchronous 1723:Value-level 1710:Applicative 1627:Declarative 1585:Class-based 859:(2): 1–78. 301:Development 177:authRequest 2301:Categories 2246:Components 2231:Separation 2206:Reflective 2200:by example 2144:Extensible 2018:Concurrent 1994:Production 1981:Templating 1961:Simulation 1946:Scientific 1866:Spacecraft 1794:Constraint 1789:Answer set 1741:Flow-based 1641:comparison 1636:Functional 1608:Persistent 1572:comparison 1537:Procedural 1509:Structured 1500:Imperative 1374:2303.00924 1342:2022-03-07 1310:2102.10698 1255:2209.01886 1163:1510.03271 957:1602.08863 797:2111.03484 478:References 436:mechanised 411:mechanised 234:, one for 33:concurrent 2133:Inductive 2129:Automatic 1951:Scripting 1650:Recursive 1434:251322644 1337:231985665 1282:252090305 1274:1573-0670 1248:(2): 21. 1223:231802115 1180:199122777 1156:: 38–66. 816:243833095 530:102335067 420:HasChor ( 348:Languages 90:processes 2286:Subjects 2276:Literate 2266:Features 2221:Template 2216:Symbolic 2188:Bayesian 2168:Hygienic 2028:parallel 1907:Modeling 1902:Low-code 1877:End-user 1814:Ontology 1746:Reactive 1733:Dataflow 1131:53015580 1081:12872876 1046:(2016). 1029:39112346 984:18067252 929:32617923 892:(2015). 875:15737118 685:15627190 446:See also 398:ChoRus ( 387:Choral ( 199:informs 39:Overview 2241:Aspects 2149:Generic 2139:Dynamic 1998:Pattern 1976:Tactile 1941:Quantum 1931:filters 1862:Command 1761:Streams 1756:Signals 1527:Modular 1361:HasChor 729:5555662 426:Haskell 422:website 400:website 389:website 370:website 355:website 353:AIOCJ ( 271:Service 236:Service 209:Failure 205:Service 193:Service 185:Success 132:if the 126:Service 120:Service 68:reads " 2004:Visual 1971:System 1856:Action 1680:Strict 1432:  1422:  1335:  1325:  1280:  1272:  1221:  1211:  1178:  1129:  1119:  1079:  1069:  1027:  1017:  982:  972:  927:  917:  873:  814:  755:  727:  683:  673:  619:  528:  518:  368:Chor ( 340:, and 259:Client 232:Client 201:Client 189:Client 165:Client 148:Client 134:Client 108:Client 2281:Roles 2164:Macro 1927:Pipes 1847:Array 1824:Query 1776:Logic 1685:GADTs 1675:Total 1598:Agent 1430:S2CID 1369:arXiv 1333:S2CID 1305:arXiv 1278:S2CID 1250:arXiv 1219:S2CID 1176:S2CID 1158:arXiv 1127:S2CID 1105:(PDF) 1077:S2CID 1051:(PDF) 1025:S2CID 980:S2CID 952:arXiv 925:S2CID 903:(PDF) 871:S2CID 812:S2CID 792:arXiv 749:(PDF) 725:S2CID 715:(2). 681:S2CID 526:S2CID 382:Jolie 372:). A 363:Jolie 114:from 86:roles 70:Alice 27:is a 1929:and 1576:list 1420:ISBN 1323:ISBN 1270:ISSN 1209:ISBN 1117:ISBN 1067:ISBN 1015:ISBN 970:ISBN 915:ISBN 753:ISBN 671:ISBN 617:ISBN 516:ISBN 404:Rust 393:Java 313:and 248:recv 246:and 244:send 203:and 191:and 74:expr 1834:DSL 1410:doi 1406:237 1379:doi 1315:doi 1260:doi 1199:doi 1168:doi 1154:802 1109:doi 1059:doi 1007:doi 962:doi 907:doi 861:doi 802:doi 717:doi 663:doi 607:doi 571:hdl 563:doi 508:doi 415:Coq 380:in 283:CAS 240:CAS 197:CAS 181:CAS 173:CAS 169:CAS 140:CAS 130:CAS 116:CAS 88:or 78:Bob 76:to 19:In 2303:: 2198:, 2194:, 2190:, 1996:, 1992:, 1721:, 1712:, 1591:, 1587:, 1574:, 1428:. 1418:. 1400:. 1377:. 1363:. 1359:. 1331:, 1321:, 1313:, 1299:, 1276:. 1268:. 1258:. 1246:67 1244:. 1240:. 1217:. 1207:. 1174:. 1166:. 1152:. 1148:. 1125:. 1115:. 1098:. 1075:. 1065:. 1053:. 1023:. 1013:. 1001:. 978:. 968:. 960:. 946:. 923:. 913:. 896:. 869:. 857:34 855:. 851:. 810:. 800:. 786:. 782:. 770:^ 723:. 713:13 711:. 707:. 693:^ 679:. 669:. 657:. 645:^ 615:. 585:^ 569:. 557:. 553:. 538:^ 524:. 514:. 486:^ 344:. 336:, 332:, 328:, 321:. 171:. 92:. 23:, 2202:) 2186:( 2170:) 2166:( 2135:) 2131:( 2057:) 2053:( 2025:, 2020:, 2000:) 1988:( 1868:) 1864:( 1858:) 1854:( 1800:) 1796:( 1752:) 1748:( 1661:) 1657:( 1643:) 1639:( 1578:) 1570:( 1493:) 1489:( 1479:e 1472:t 1465:v 1436:. 1412:: 1385:. 1381:: 1371:: 1365:7 1317:: 1307:: 1284:. 1262:: 1252:: 1225:. 1201:: 1182:. 1170:: 1160:: 1133:. 1111:: 1083:. 1061:: 1031:. 1009:: 986:. 964:: 954:: 931:. 909:: 877:. 863:: 818:. 804:: 794:: 788:6 761:. 731:. 719:: 687:. 665:: 625:. 609:: 579:. 573:: 565:: 559:3 532:. 510:: 428:. 417:. 406:. 395:. 384:. 365:. 122:. 82:x

Index

computer science
programming paradigm
concurrent
security protocol notation
single sign-on
Central Authentication Service
access token
Central Authentication Service
security protocol notation
service choreography
interaction diagrams
process calculi
information flow
parallel computing
cyber-physical systems
runtime adaptation
system integration
website
adaptable systems
Jolie
website
session-typed
microservices
Jolie
website
Java
website
Rust
mechanised
Coq

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.