<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Global Types for Agent Interaction Protocols (short paper)⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Federico Bergenti</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Leonardo Galliera</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Paola Giannini</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Stefania Monica</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Riccardo Nazzari</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>DISIT &amp; DISSTE, Università del Piemonte Orientale</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>DISMI, Università di Modena e Reggio Emilia</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>DISTI, Università di Parma</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>We introduce an extension of global and local types tailored to the description of FIPA agent interaction protocols, formalize one of such protocols with these types. This paper is the first step of an ongoing project aimed at the definition of agent systems correctly implementing protocols by construction. Introduction Dynamic systems are characterized by entities interacting in asynchronous ways. Software agents are software entities with the ability to [1]: react to environmental changes; take autonomous decisions and act accordingly to achieve their (explicit) goals; cooperate in loosely coupled Multi-Agent Systems (MASs). The interest in agent programming languages [2] dates back to the early proposals of agent technologies [3] and, since then, it has grown significantly. Agent programming languages represent an important research topic because they are recognized as important tools [4] to support Agent-Oriented Software Engineering (AOSE) [5] and applications [6]. Jadescript [7, 8] is an Agent-Oriented Programming (AOP) [3] language that was designed from participants of the current project [7] to support the construction of efective agents. The near-future development plans for Jadescript include a dedicated support for a collection of (agent) interaction protocols [9] standardized by the Foundation for Intelligent Physical Agents (FIPA, www.fipa.org), which is an IEEE Standards Committee established to promote interoperability among agents. FIPA specifies some generalpurpose interaction protocols and FIPA-compliant agents are requested to support at least some of them. FIPA encourages designers and programmers to adopt these interaction protocols, which motivates the need for a dedicated support for them in Jadescript. The seminal works on session types [10] and typestate have started a surge of research on behavioral type systems [11] for describing interaction protocols and enforcing various</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Multiparty Sessions</kwd>
        <kwd>Global Types</kwd>
        <kwd>Agent Interaction Protocols</kwd>
        <kwd>Agent Programming Languages</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        properties including deadlock freedom [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. A multiparty session (MPS for short) is an interaction
among participants/agents communicating by exchanging messages [
        <xref ref-type="bibr" rid="ref13 ref14 ref15">13, 14, 15</xref>
        ]. The interaction
is specified by a global type of the session. Local or session types may be retrieved as projections
from the global type. Projectability, i.e., the existence of the projection on all participants,
ensures that the protocol can be implemented. Session types give a a decoupled (i.e., distributed)
view of a protocol from the perspective of each participant.
      </p>
      <p>
        The global types of [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] have several limitations, that make them not suitable to specify the
standard protocols of interaction between agents. In particular, a session involves a fixed set of
participants, whose behaviour is individually specified when the session is first initiated: there
is no notion of specifying the behaviour for a class of participants that share the same behaviour
and no participant can dynamically (i.e., during an ongoing session) leave the interactions which
are, however, basic requests for the FIPA protocols of interaction between agents.
      </p>
      <p>
        A very expressive enhancement of global types was proposed in [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ]. Roles are defined
as classes of local behaviours that an arbitrary number of participants can dynamically join and
leave. This extension is very expressive. However, it is unrealistically implementable with the
communication pattern of agent languages, since it requires some sort of centralized register
handling the association between participants and roles. Other extensions, tailored to specific
application domains, were proposed, most of them targeting a specific programming languages,
[
        <xref ref-type="bibr" rid="ref18 ref19 ref20">18, 19, 20</xref>
        ]. Of the language independent ones we mention Pabble, [
        <xref ref-type="bibr" rid="ref21 ref22">21, 22</xref>
        ], in which multiple
participants can be grouped in the same role and indexed and there is the possibility of changing
participants in a role by parameterisation, and the one proposed in [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] to ensure good properties
of the interactions in MPSs in spite of failures. It introduces the notions of sub-sessions and role
set (similar to the roles of [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ]). Our proposal, inspired by the two mentioned extensions, is
tailored to the goal of specifying FIPA protocols, in which often groups of agents are addressed
by an agent mediating their interaction with the rest of the world. In the following, participant
is a synonym for agent. We call these groups of participants role sets and their coordinator is
the only participant interacting with them. The coordinator can broadcast a message to all
the participants of the role set and there is a construct to execute a sub-protocol on all the
participants in a role set. In addition to projectability, we give some well-formedness restrictions
on the global types that are meant to enforce their realisability by Jadescript agents.
Global and Local Types with Role Sets In the following definitions we use the
metavariables: p, q, r for single participants; , ,  for participant variables (in the scope of a for);
p, q , r for either participants or participant variables; R for role sets; R for either single participants
or role sets; Q for either participants or participant variables or role sets; ℓ for labels (names)
of messages and S for basic types (int, bool, .....). A global protocol declaration, defined in
Figure 1, specifies the participants and the role sets involved in the protocol and the associated
global type. Each role set is coupled with a participant (from the declared ones) which is its
coordinator. The body of the declaration is a global type G. First a choice of messages may be
sent in addition to single participants also to all the participants in a role set. In this case we
enforce the restriction that the sender be the coordinator of the role set. As usual we have a
choice of diferent messages and after the communication the protocol continues as prescribed
by the global type corresponding to the selected label. Recursion introduces a recursion variable
global protocol name(p; ⟨R, p⟩) = G
      </p>
      <p>G ::= p → Q { ℓ⟨S⟩.G }∈
|  X .G | X
| End
| for  : ⟨R, q⟩ G1; G2
|  → q Quit
 ̸= ∅ and ℓℎ ̸= ℓ for ℎ ̸= .
local protocol name at R(p; ⟨R, q⟩) = T</p>
      <p>T ::=</p>
      <p>
        Q !{ ℓ⟨S⟩.T }∈
| p?{ ℓ⟨S⟩.T }∈
|  X .T | X
| End
| for  : ⟨R, q⟩ T1; T2
| !Quit | q ? Quit
X that can be used in its body to return to the beginning of G. As usual we assume recursion to
be guarded. End stands for the end of the protocol, but also the end of a sub-protocol as we
will see shortly. The for construct prescribes that the same protocol G1 be executed by all the
participants in the role set R. In G1 the variable  denotes any participant in R. The semicolon
preceding G2 means that the coordinator q of R must have completed the protocol G1 on all
the participants in R before continuing as specified by G2. So End occurring in G1 does not
mean the end of the whole interaction, but just of the sub-protocol G1. In G1 there cannot
occur free recursion variables. We also impose the restriction that for cannot be nested. The
FIPA protocols analysed, so far, can be formalized without nesting of for. However, eventually
we would like to remove this restriction. Finally the last clause of the definition is used by a
participant in a role set to exit from the protocol. This means that subsequent messages sent
from the coordinator to the participants of its role set will not be sent to this participant. The
highlighted constructs are the extension w.r.t. [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] .
      </p>
      <p>The local/session types are the view of a protocol from the perspective of each participant.
A local protocol declaration, , defined in Figure 2, specifies the participants and the role sets
involved in the protocol from the point of view of a participant or role set and the associated
local/session. The body of the declaration is a local/session type T.</p>
      <p>
        For local types, we have the standard constructs: choice of outputs (sending a message) also
called internal choices, choice of inputs (receiving a message) also called external choices and
guarded recursion. Then we have for construct and the request and accept of the message
for exiting from the interaction. The for construct can only occur in the local type of the
coordinator of a role set and similar restrictions apply for the request and accept of the Quit
message. We now show how a FIPA protocol is described with our types. The example illustrates
also how the projection of the global type onto the participants and role sets is defined.
Global and Local Types for the Brokering Interaction Protocol In Figure 3 we formalize,
using our global types, the FIPA Brokering Interaction and in Figures 4 and 5 we give the
projections on its participants and role set. We use the Java-like syntax, coming from Scribble [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ],
which difers from our formal syntax mainly in the definition of the choice constructs (both
for global and local types). The choice construct, e.g., line 4 of Figure 3 and lines 5 and 12 of
Figure 4, specifies the leader of the choice, i.e., the sender of the communication. The branches
in case of global types should start with a message from the leader to the same participant and
in case of local types with the corresponding send or receive.
      </p>
      <p>
        The participants of the protocol are the initiator, the broker and a number of agents in
1 global protocol myBrokering(role initiator,role broker,roleset Subagents:broker){
2 forward(string) from initiator to broker.
3 choice at broker{
4 refuse() from broker to initiator.
5 stop() from broker to Subagents.End
6 } or {
7 agree() from broker to initiator.
8 findAgent(string) from broker to Subagents.
9 for agent:&lt;Subagents,broker&gt;{
10 choice at agent {
11 notPossible() from agent to broker.
12 QUIT() from agent to broker
13 } or {
14 canDo() from agent to broker.End
15 }
16 } ;
17 choice at broker {
18 failureNoMacth() from broker to initiator.
19 stop() from broker to Subagents. End
20 } or {
21 foundMatches() from broker to initiator.
22 inputData(string) from broker to Subagents.
23 for agent:&lt;Subagents,broker&gt;{
24 choice at agent {
25 result(string) from agent to broker.End
26 } or {
27 someError() from agent to broker.End
28 }
29 }
30 } ;
31 choice at broker {
32 replyFromSubagents(string) from broker to initiator.End
33 } or {
34 failureBrokering() from broker to initiator.End
35 }}}}
the role set Subagents with the broker as their coordinator, line 1 of Figure 3. The interaction
starts with the initiator asking, by sending a message forward to the broker, to forward
its request to the subagents. We specified a simple string as the request, but more complex data
structures maybe exchanged. After this there is a choice made by the broker that may decide
to fulfil the request or to refuse it. So we have a choice, with leader the broker which branches,
starting at lines 4 and 7, begin with a message sent from the broker to the initiator. In
order to have the projection on the role set Subagents, whose participants will behave in a
diferent manner in the two branches, the broker must send them a diferent message in two
branches. Our projection use the merge operator of [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] to return a choice of inputs, that we can
see in the local protocol of Subagent of Figure 5 starting at lines 5 and 7. Then the broker
searches for the agents that may perform the request of the initiator using the subprotcol
in the body of the for. For each agent the broker is waiting for a message from agent
which may accept to perform the request, by sending canDo(), line 14, or refusing, by sending
notPossible(), line 11, and leave the interaction with the QUIT() message, line 12. From
now on the subsequent communications between the broker and the role set Subagents will
not involve the agents that quit the protocol. We see the diference between QUIT() and End,
lines 12 and 14 of Figures 3, when projecting on the role set Subagents. The communication at
line 12 in the global protocol is projected to QUIT()to broker, line 10 of Figures 5, whereas
End is replaced with the projection of the protocol following the ; , lines 13-28 of Figures 5.
The projection on the initiator of this subprotocol produces End since no communication
involves the initiator, so for this participant the projection is just the projection of the rest
of the protocol. The projection of a for produces a local for only for the broker, i.e., the
coordinator of the interaction, lines 11-18 of Figures 4. After the subprotocol the broker, if
there are agents that responded positively to the request send a message foundMatches()
to the initiator, sends the inputs of the request to the remaining agents and collects their
responses via the subprotocol in the for the at lines 25-32. After that it sends the results, if there
are any to the initiator. Again, in order to have the projection on the role set Subagents,
whose participants will behave in a diferent manner in the two branches, the
broker must a
message to the agents also in the branch of failure to match, line 21.
      </p>
      <p>Conclusion</p>
      <p>
        The work presented is a part of a larger research project, within the PRIN project
“T-Ladies”, [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], one of whose goals is to provide support for development/maintenance,
automatic property verification/enforcement and bug detection of loosely connected, distributed,
possibly heterogeneous interacting systems. Our aim is the “correct” implementation of
interaction protocols between agents implemented in Jadescript, which is a language developed by
members of the project. More specifically, we want to define Jadescript agents whose interaction
behaviour follows, by construction, a given protocol. We use the MPS type methodology and
define protocols with global types from which we derive by projection the local types of the
agents. The implementation of an editor for the global and local types that checks their
projectability and well-formedness can be found at [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. We plan to translate these local types into
Jadescript agents involved in the protocol and prove that resulting system have the properties
of Session Fidelity and (possibly) Progress.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Franklin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. C.</given-names>
            <surname>Graesser</surname>
          </string-name>
          ,
          <article-title>Is it an agent, or just a program?: A taxonomy for autonomous agents</article-title>
          , in: J. P. Müller,
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Wooldridge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. R.</given-names>
            <surname>Jennings</surname>
          </string-name>
          (Eds.),
          <string-name>
            <surname>Intelligent Agents</surname>
            <given-names>III</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Agent</surname>
            <given-names>Theories</given-names>
          </string-name>
          , Architectures, and Languages,
          <source>ECAI '96 Workshop (ATAL)</source>
          , Budapest, Hungary,
          <source>August 12-13</source>
          ,
          <year>1996</year>
          , Proceedings, volume
          <volume>1193</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>1996</year>
          , pp.
          <fpage>21</fpage>
          -
          <lpage>35</lpage>
          . URL: https://doi.org/10.1007/BFb0013570. doi:
          <volume>10</volume>
          .1007/BFB0013570.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>C.</given-names>
            <surname>Bădică</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Budimac</surname>
          </string-name>
          , H.
          <string-name>
            <surname>-D. Burkhard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Ivanovic</surname>
          </string-name>
          ,
          <source>Software agents: Languages</source>
          , tools, platforms,
          <source>Computer Science and Information Systems</source>
          <volume>8</volume>
          (
          <year>2011</year>
          )
          <fpage>255</fpage>
          -
          <lpage>298</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Shoham</surname>
          </string-name>
          ,
          <article-title>Agent-oriented programming</article-title>
          ,
          <source>Artificial Intelligence</source>
          <volume>60</volume>
          (
          <year>1993</year>
          )
          <fpage>51</fpage>
          -
          <lpage>92</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>R. H.</given-names>
            <surname>Bordini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Braubach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dastani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. E. F.</given-names>
            <surname>Seghrouchni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Gomez-Sanz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Leite</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. O</given-names>
            <surname>'Hare</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pokahr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ricci</surname>
          </string-name>
          ,
          <article-title>A survey of programming languages and platforms for multi-agent systems</article-title>
          ,
          <source>Informatica</source>
          <volume>30</volume>
          (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.-P.</given-names>
            <surname>Gleizes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Zambonelli</surname>
          </string-name>
          (Eds.),
          <source>Methodologies and Software Engineering for Agent Systems: The Agent-Oriented Software Engineering Handbook</source>
          , Springer,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Distefano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Merlino</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Puliafito</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Cerotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Dautov</surname>
          </string-name>
          ,
          <article-title>Crowdsourcing and stigmergic approaches for (swarm) intelligent transportation systems</article-title>
          , in: Q.
          <string-name>
            <surname>Zu</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          Hu (Eds.),
          <source>Human Centered Computing</source>
          , Springer International Publishing, Cham,
          <year>2018</year>
          , pp.
          <fpage>616</fpage>
          -
          <lpage>626</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          ,
          <article-title>The first twenty years of agent-based software development with JADE, Autonomous Agents and Multi-Agent Systems 34 (</article-title>
          <year>2020</year>
          )
          <volume>36</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>36</lpage>
          :
          <fpage>19</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Petrosino</surname>
          </string-name>
          ,
          <article-title>A scripting language for practical agent-oriented programming</article-title>
          ,
          <source>in: Proceedings of the 8th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control (AGERE</source>
          <year>2018</year>
          )
          <article-title>at ACM SIGPLAN Conference Systems, Programming, Languages and Applications: Software for Humanity (SPLASH</article-title>
          <year>2018</year>
          ), ACM,
          <year>2018</year>
          , pp.
          <fpage>62</fpage>
          -
          <lpage>71</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>S.</given-names>
            <surname>Poslad</surname>
          </string-name>
          ,
          <article-title>Specifying protocols for multi-agent system interaction</article-title>
          ,
          <source>ACM Transactions on Autonomous and Adaptive Systems</source>
          <volume>2</volume>
          (
          <year>2007</year>
          )
          <volume>15</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>15</lpage>
          :
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>K.</given-names>
            <surname>Honda</surname>
          </string-name>
          ,
          <article-title>Types for dyadic interaction</article-title>
          , in: E. Best (Ed.), CONCUR, volume
          <volume>715</volume>
          <source>of LNCS</source>
          , Springer, Heidelberg,
          <year>1993</year>
          , pp.
          <fpage>509</fpage>
          -
          <lpage>523</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>D.</given-names>
            <surname>Ancona</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Bono</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Bravetti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Campos</surname>
          </string-name>
          , G. Castagna,
          <string-name>
            <given-names>P.</given-names>
            <surname>Deniélou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. J.</given-names>
            <surname>Gay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Gesbert</surname>
          </string-name>
          , E. Giachino,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. B.</given-names>
            <surname>Johnsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Martins</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Mascardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Montesi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Neykova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Ng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Padovani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. T.</given-names>
            <surname>Vasconcelos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <article-title>Behavioral types in programming languages</article-title>
          ,
          <source>Found. Trends Program. Lang</source>
          .
          <volume>3</volume>
          (
          <year>2016</year>
          )
          <fpage>95</fpage>
          -
          <lpage>230</lpage>
          . URL: https://doi.org/10.1561/2500000031. doi:
          <volume>10</volume>
          .1561/2500000031.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Coppo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dezani-Ciancaglini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          , L. Padovani,
          <article-title>Global progress for dynamically interleaved multiparty sessions</article-title>
          ,
          <source>Mathematical Structures in Computer Science</source>
          <volume>26</volume>
          (
          <year>2016</year>
          )
          <fpage>238</fpage>
          -
          <lpage>302</lpage>
          . URL: https://doi.org/10.1017/S0960129514000188. doi:
          <volume>10</volume>
          .1017/ S0960129514000188.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>K.</given-names>
            <surname>Honda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Carbone</surname>
          </string-name>
          ,
          <article-title>Multiparty asynchronous session types</article-title>
          , in: G.
          <string-name>
            <surname>C. Necula</surname>
          </string-name>
          , P. Wadler (Eds.), POPL, ACM Press, New York,
          <year>2008</year>
          , pp.
          <fpage>273</fpage>
          -
          <lpage>284</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bettini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Coppo</surname>
          </string-name>
          , L.
          <string-name>
            <surname>D'Antoni</surname>
            ,
            <given-names>M. D.</given-names>
          </string-name>
          <string-name>
            <surname>Luca</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Dezani-Ciancaglini</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <article-title>Global progress in dynamically interleaved multiparty sessions</article-title>
          , in: F. van
          <string-name>
            <surname>Breugel</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          Chechik (Eds.),
          <source>CONCUR</source>
          <year>2008</year>
          , volume
          <volume>5201</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2008</year>
          , pp.
          <fpage>418</fpage>
          -
          <lpage>433</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -85361-9_
          <fpage>33</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -85361-9\_
          <fpage>33</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>K.</given-names>
            <surname>Honda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Carbone</surname>
          </string-name>
          ,
          <article-title>Multiparty asynchronous session types</article-title>
          ,
          <source>Journal of ACM</source>
          <volume>63</volume>
          (
          <year>2016</year>
          ) 9:
          <fpage>1</fpage>
          -
          <lpage>9</lpage>
          :
          <fpage>67</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>P.</given-names>
            <surname>Deniélou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <article-title>Dynamic multirole session types</article-title>
          , in: T. Ball, M. Sagiv (Eds.), POPL, ACM,
          <year>2011</year>
          , pp.
          <fpage>435</fpage>
          -
          <lpage>446</lpage>
          . URL: https://doi.org/10.1145/1926385.1926435. doi:
          <volume>10</volume>
          .1145/ 1926385.1926435.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>P.</given-names>
            <surname>Deniélou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bejleri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <article-title>Parameterised multiparty session types</article-title>
          ,
          <source>Logical Methods in Computer Science</source>
          <volume>8</volume>
          (
          <year>2012</year>
          ). URL: https://doi.org/10.2168/LMCS-8(
          <issue>4</issue>
          :6)
          <year>2012</year>
          . doi:
          <volume>10</volume>
          .2168/LMCS-8(
          <issue>4</issue>
          :6)
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>D.</given-names>
            <surname>Castro-Perez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jongmans</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Ng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <article-title>Distributed programming using role-parametric session types in go: statically-typed endpoint apis for dynamicallyinstantiated communication structures</article-title>
          ,
          <source>Proc. ACM Program. Lang</source>
          .
          <volume>3</volume>
          (
          <year>2019</year>
          )
          <volume>29</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>29</lpage>
          :
          <fpage>30</fpage>
          . URL: https://doi.org/10.1145/3290342. doi:
          <volume>10</volume>
          .1145/3290342.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>G.</given-names>
            <surname>Cledou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Edixhoven</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jongmans</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Proença,</surname>
          </string-name>
          <article-title>API generation for multiparty session types, revisited and revised using Scala 3</article-title>
          , in: K. Ali, J. Vitek (Eds.),
          <source>ECOOP</source>
          <year>2022</year>
          , volume
          <volume>222</volume>
          of LIPIcs,
          <source>Schloss Dagstuhl - Leibniz-Zentrum für Informatik</source>
          ,
          <year>2022</year>
          , pp.
          <volume>27</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>27</lpage>
          :
          <fpage>28</fpage>
          . URL: https://doi.org/10.4230/LIPIcs.ECOOP.
          <year>2022</year>
          .
          <volume>27</volume>
          . doi:
          <volume>10</volume>
          .4230/LIPICS.ECOOP.
          <year>2022</year>
          .
          <volume>27</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>N.</given-names>
            <surname>Lagaillardie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Neykova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <article-title>Stay safe under panic: Afine Rust programming with multiparty session types</article-title>
          , in: K. Ali, J. Vitek (Eds.),
          <source>ECOOP</source>
          <year>2022</year>
          , volume
          <volume>222</volume>
          of LIPIcs,
          <source>Schloss Dagstuhl - Leibniz-Zentrum für Informatik</source>
          ,
          <year>2022</year>
          , pp.
          <volume>4</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>4</lpage>
          :
          <fpage>29</fpage>
          . URL: https: //doi.org/10.4230/LIPIcs.ECOOP.
          <year>2022</year>
          .
          <article-title>4</article-title>
          . doi:
          <volume>10</volume>
          .4230/LIPICS.ECOOP.
          <year>2022</year>
          .
          <volume>4</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>N.</given-names>
            <surname>Ng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <article-title>Pabble: Parameterised Scribble for parallel programming</article-title>
          ,
          <source>in: PDP</source>
          <year>2014</year>
          , IEEE Computer Society,
          <year>2014</year>
          , pp.
          <fpage>707</fpage>
          -
          <lpage>714</lpage>
          . URL: https://doi.org/10.1109/PDP.
          <year>2014</year>
          .
          <volume>20</volume>
          . doi:
          <volume>10</volume>
          .1109/PDP.
          <year>2014</year>
          .
          <volume>20</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>N.</given-names>
            <surname>Ng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          , Pabble: parameterised Scribble,
          <source>Serv. Oriented Comput. Appl</source>
          .
          <volume>9</volume>
          (
          <year>2015</year>
          )
          <fpage>269</fpage>
          -
          <lpage>284</lpage>
          . URL: https://doi.org/10.1007/s11761-014-0172-8. doi:
          <volume>10</volume>
          .1007/ S11761-014-0172-8.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>M.</given-names>
            <surname>Viering</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Eugster</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Ziarek</surname>
          </string-name>
          ,
          <article-title>A multiparty session typing discipline for faulttolerant event-driven distributed programming</article-title>
          ,
          <source>Proceedings of the ACM on Programming Languages</source>
          <volume>5</volume>
          (
          <year>2021</year>
          )
          <fpage>1</fpage>
          -
          <lpage>30</lpage>
          . URL: https://doi.org/10.1145/3485501. doi:
          <volume>10</volume>
          .1145/3485501.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>K.</given-names>
            <surname>Honda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mukhamedov</surname>
          </string-name>
          , G. Brown, T. Chen,
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <article-title>Scribbling interactions with a formal foundation</article-title>
          , in: R.
          <string-name>
            <surname>Natarajan</surname>
            ,
            <given-names>A. K.</given-names>
          </string-name>
          Ojo (Eds.),
          <source>Distributed Computing and Internet Technology - 7th International Conference, ICDCIT</source>
          <year>2011</year>
          , Bhubaneshwar, India, February 9-
          <issue>12</issue>
          ,
          <year>2011</year>
          . Proceedings, volume
          <volume>6536</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2011</year>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>75</lpage>
          . URL: https://doi.org/10.1007/978-3-
          <fpage>642</fpage>
          -19056-
          <issue>8</issue>
          _4. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -19056-8\_4.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>N.</given-names>
            <surname>Yoshida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Gheri</surname>
          </string-name>
          ,
          <article-title>A very gentle introduction to multiparty session types</article-title>
          , in: D. V.
          <string-name>
            <surname>Hung</surname>
          </string-name>
          ,
          <string-name>
            <surname>M. D'Souza</surname>
          </string-name>
          (Eds.),
          <source>Distributed Computing and Internet Technology - 16th International Conference, ICDCIT</source>
          <year>2020</year>
          , Bhubaneswar, India, January 9-
          <issue>12</issue>
          ,
          <year>2020</year>
          , Proceedings, volume
          <volume>11969</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2020</year>
          , pp.
          <fpage>73</fpage>
          -
          <lpage>93</lpage>
          . URL: https://doi.org/ 10.1007/978-3-
          <fpage>030</fpage>
          -36987-
          <issue>3</issue>
          _5. doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -36987-3\_5.
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>W. C.</surname>
          </string-name>
          et alt.,
          <article-title>Typeful language adaptation for dynamic, interacting and evolving systems</article-title>
          , https://cazzola.di.unimi.it/t-ladies.html,
          <year>2024</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>L.</given-names>
            <surname>Galliera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Nazzari</surname>
          </string-name>
          , Jadescript, https://github.com/LMetal/Jadescript,
          <year>2024</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>