=Paper=
{{Paper
|id=Vol-1382/paper19
|storemode=property
|title=Outline of a Formalization of JADE Multi-Agent Systems
|pdfUrl=https://ceur-ws.org/Vol-1382/paper19.pdf
|volume=Vol-1382
|dblpUrl=https://dblp.org/rec/conf/woa/BergentiIP15
}}
==Outline of a Formalization of JADE Multi-Agent Systems==
Proc. of the 16th Workshop “From Object to Agents” (WOA15) June 17-19, Naples, Italy Outline of a Formalization of JADE Multi-Agent Systems Federico Bergenti Eleonora Iotti, Agostino Poggi Dipartimento di Matematica e Informatica Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Università degli Studi di Parma Parco Area delle Scienze 53/A, 43124 Parma, Italy Parco Area delle Scienze 181/A, 43124 Parma, Italy Email: federico.bergenti@unipr.it Email: eleonora.iotti@studenti.unipr.it, agostino.poggi@unipr.it Abstract—This paper proposes a formalization of JADE agents reviewed in terms of the proposed semantics. No refinement and multi-agent systems based on transition systems. The first of the JADE agent model is proposed and the semantics is section introduces the aims and scope of the research and it ground on the semantics of Java classes. We always assume focuses the content of the paper. The second section enumerates the availability of an underlying Java transition system and we the abstractions and the structures used in the formalization. refrain from formalizing it because it is a critical topic out of Successively, third section presents the formal semantics of the the scope of this paper (see, e.g., [10]). parts of a JADE-based source code that are involved in the management of (i) the life cycle of agents and (ii) the behaviours For the sake of brevity, only an outline of the proposed of agents. Fourth section shows a very simple JADE agent and it exemplifies the use of the proposed transition system. Finally, semantics is presented in this paper, and interested readers are a brief recapitulation of the work concludes the paper. invited to consult an upcoming paper that provides a complete description of the formalization. I. I NTRODUCTION JADE [1] is today one of the most widely used tools for the II. D EFINITIONS AND T ERMINOLOGY development of multi-agent systems both in research and in the industry. It is a core component of a complex software system The proposed formalization considers only five main en- that helps managing one of the most penetrating telecommu- tities that collectively describe a JADE multi-agent system. nication networks in Europe, serving millions of consumers The first of such entities is the multi-agent system itself—the daily [2]. It has been recently enhanced to support smart MAS—which is seen as a sort of environment where agents appliances [3], and it is the base of a recent initiative intended live. Such an environment is subject to internal and external to revitalize the use of software agents to support social events that may modify its state and the state of each agent activities [4], both cooperative (see, e.g., [5], [6]) and com- belonging to the MAS. Also, a MAS accounts for all entities petitive. Besides this, JADE was initially conceived primarily that we need to formalize the JADE system: within a MAS as a practical tool to help researchers experimenting with we are able to see all agents and their respective behaviours. FIPA technology (www.fipa.org). JADE was recognized by The second entity that we consider is the agent. An agent is FIPA community as the tool that most accurately implemented a complex entity that has a state, detailed in Section II-C, FIPA specifications, and it was often used for validating new and a list of behaviours. The behaviour is the third entity that specifications and for assessing the conformance of other we consider: it has a state, a type and an associated action. tools to FIPA guidelines and specifications. Moreover, it was Actions are not entities in the proposed formalization, and often selected to experiment potential enhancements to FIPA they are always associated to behaviours. Actually, we may specifications (see, e.g., [7]), and to gather the interest of think of an action as a list of activites that an agent performs FIPA members on common projects (see, e.g., [8]). Such a when it decides to activate the behaviour that encapsulates close relationship with an official standardization body forced the action. The type of the behaviour changes the way the JADE architects to let the design of JADE APIs open, so that agent performs the associated action, e.g., a cyclic behaviour third-party developers could adopt JADE—and FIPA together permits the agent to perform the action cyclically; conversely, with it—with minimal restrictions. For example, the agent a one-shot behaviour in meant to have the action performed model that JADE provides was intentionally left simple and only once. Each agent (respectively, behaviour) belongs to one not formally specified so that developers were not forced to agent class (respectively, behaviour class), and such classes are adopt a specific agent model just because they wanted their the last two of the five entities that we consider. An agent agents to be FIPA compliant. class is defined as a group of agents that have behaviours belonging to the same classes, and a behaviour class is a group After more than 15 years of JADE development and use, of behaviours that have the same type and the same action. It this paper first proposes a formal semantics of JADE agents is worth noting that the word class was chosen to identify and multi-agent systems to support reasoning on JADE-based the means that JADE provides to group agents and behaviours software systems. The proposed semantics is based on transi- by specific properties, i.e., Java classes. This choice implicitly tion systems [9] and it closely follows the intended meaning of types agents, but this work does not address this issue and JADE APIs to ensure that properly written JADE agents can be related issues (see, e.g., [11]). 123 Proc. of the 16th Workshop “From Object to Agents” (WOA15) June 17-19, Naples, Italy A. Constants Similarly, we define the function β that accesses the state of a behaviour as In order to give a formal definition of the aforementioned five entities, we choose a first-order language whose alphabet β : I → B. (7) consists of a finite set of constants, predicate symbols, function symbols, and the usual logical symbols (i.e., variables, connec- The composition α ◦ aid : V → A associates an agent to tives, and quantifiers). We let C be the finite set of constants a variable in the first-order language, while the composition and V the countably infinite set of variables. β ◦ bid : V → B does the same with respect to a behaviour. In order to account for the life cycle state of an agent, we We may write α(a) instead of α(aid(a)) with a slight abuse define specific constants:initiated, deleted, active, of notation when the intended meaning is evident from the suspended, and waiting. Similarly, the life cycle state of context. a behaviour is described by constants initiated, active, done, and blocked. We call SA the finite set of the agent C. Events life cycle state constants, and SB the finite set of behaviour life cycle state constants. Each behaviour needs a type and a A MAS is constantly subject to two types of events: internal description of its internal state: we call T and S the sets of and external. Each agent is fed with a sub-sequence of such such constants, respectively. Moreover, we also need a finite events in its life. Some of such events are particularly important set of constants that describes the state of the environment because they can change the state of the MAS (these are where agents live, which we call W. the external events), and/or the state of agents and respective behaviours (these are the internal events). The set of such In summary, the set of constants that we allow for the notable events that JADE manages, which we call E, contains first-order language used to describe the proposed semantics the following events: is composed of the union of all aforementioned sets: • Create(a, F ) denotes the creation of the agent a of C = SA ∪ SB ∪ T ∪ S ∪ W. (1) class F ; • Kill(a) denotes the destruction of the agent a; B. Variables and identifiers • Wait(a) denotes the state change of the agent a to the In addition to constants and variables, we define a set of state waiting; identifiers called I. Every time an entity is created, it gets a name from such a set. Each agent class and behaviour class is • Wake(a) denotes the state change of the agent a from associated with a specific identifier in the set I. Therefore we waiting to active; need a semantic structure that associates the name of the class • Suspend(a) denotes the state change of the agent a to the class itself. We call FA the set of all agents classes and to the state suspended; FB the set of all behaviour classes. Such semantic structures are called semantic contexts of the classes, and they are • Activate(a) denotes the state change of the agent a from suspended to the state it had before becoming ρA : I → FA , (2) suspended; ρB : I → FB . (3) • Create(a, b, F ) denotes the creation of the behaviour b of class F and agent a; In JADE, each agent has a name and a global unique • Block(b) denotes the state change from active to identifier (called AID, for agent identifier), which contains its blocked for the behaviour b; local name and its platform name. So we can consider the AID as a structured identifier defined a function • Restart(b) denotes the state change from blocked to active for the behaviour b; aid : V → I (4) • Start(MAS) denotes the first event that occurs in the that maps a variable a representing an agent to its AID. MAS; and Moreover, each behaviour has a name, which is its unique identifier. We can access such an identifier through the function • End(MAS) denotes the event that marks the termina- tion of the MAS (with all agents and behaviours); it bid : V → I. (5) is the last event that occurs in a computation of the MAS. Each agent (respectively, behaviour) needs to be instanti- The events in E that denotes changes in the state of an ated and maintained in a semantic structure, here generically agent are related to each other as shown in Figure II-C (left). called heap, which associates a concrete reference (i.e., an Similarly, Figure II-C (right) shows the finite state machine identifier) to the representation of the agent (respectively, that represents the state changes of a behaviour. behaviour). We call A the set of all agents and B the set of all behaviours, and we define a function α that accesses the In order to analyze the life cycle of agents and behaviours, state of an agent as we need to consider which event occurs in single steps of the computation: if e ∈ E and t ∈ N, the pair ht, ei means that α : I → A. (6) the event e occurred at step t. 124 Proc. of the 16th Workshop “From Object to Agents” (WOA15) June 17-19, Naples, Italy Kill(a) Suspend(a) q2 q4 q1 Create(a, b, F ) Activate(a) Kill(a) q0 Wake(a) Wait(a) q5 q0 q3 Block(b) Restart(b) Kill(a) Create(a, F ) Activate(a) q1 q3 q2 Suspend(a) Kill(a) Figure 1. Agent (left) and behaviour (right) life cycle events and their relationships. For agents: q0 = initiated, q1 = active, q2 = waiting, q3 = suspended_from_active, q4 = suspended_from_waiting and q5 = deleted; for behaviours q0 = initiated, q1 = active, q2 = blocked and q3 = done. D. Structures Definition 3 (MAS): A MAS is defined by a tuple An agent class is a pair Fa = hLB , ϕi, where LB is a list MAS = hA0 , B 0 , LE iT (10) of possible behaviours and ϕ a function that maps the names of its methods (in the set I of identifiers) to the associated where A0 ⊆ A is a finite set of agents, B 0 ⊆ B is a finite set blocks of code, i.e., sequences of statements written in Java of behaviours, LE is the list of events occurred in this MAS with JADE. up to time step T ∈ N. Similarly, a behaviour class is a pair Fb = ht, ψi, where In addition, to support the semantics described in next t ∈ T ⊆ C fixes the type of the behaviour in the class (e.g., section, we define Sb , a selector for the behaviours of an agent, cyclic or one-shot), and ψ is a function that associates specific i.e., the behaviour scheduler. Such a function computes the names to the related blocks of code. current behaviour to execute, from the list Lb of an agent a as In JADE, an agent is an entity that belongs to a particular Sb : A0 → B 0 . (11) class and that has a list of behaviours. So, an agent is completely described by the name of its class and by its state, as follows. III. S EMANTICS Definition 1 (Agent): An agent is a tuple The semantics of the life cycle of agents, given the events described in Section II-C, is described in the form of a labelled hF, sa , sw , Lb , Le i ∈ A (8) transition system (see, e.g., [9]). The proposed transition where F ∈ I is the identifier of the class, sa ∈ SA is the state system, called MAS transition system, is a pair hΓ, →i where of the agent, sw ∈ W the state of the environment seen by the Γ is a finite set of configurations and → is a binary relation on agent, Lb is a finite list of behaviours and Le a finite list of Γ. Once a MAS is fixed, the labels of such a transition system events. are the pairs time-event defined above. Similarly, we can define a behaviour as a specific entity Definition 4 (Configuration): A configuration in the tran- which belongs to a class, as follows. sition system is described by a tuple Definition 2 (Behaviour): A behaviour is a tuple hC, σ, α, βi ∈ Γ (12) hF, myAgent, sb , sw , si ∈ B (9) where C is a command, σ represents the state (stores and where F ∈ I is the identifier of the class, myAgent ∈ I is environments) of the underlying Java system, α and β are the unique identifier of the associated agent, sb ∈ SB is the the heaps that represent the state of all agents and of all state of the behaviour, sw ∈ W is the state of the environment behaviours, respectively. seen by the behaviour and s ∈ S is the internal state of the For the sake of clarity and when no ambiguity can arise, we behaviour. We call B the set of all behaviours. may not enumerate all four elements of a configuration in the In JADE, each agent lives within a MAS and therefore, for description of transition rules. Moreover, we use the symbol every time step T we can consider a global list of events LE ε for a configuration with no commands. The abstract syntax that occurred to all agents of that MAS since its activation, used for a command (or statement) C is the Java syntax, as i.e., since event Start(MAS). defined, e.g., in [10]. 125 Proc. of the 16th Workshop “From Object to Agents” (WOA15) June 17-19, Naples, Italy Each transition refers to an environment, or semantic B. Agent life cycle context. In this case, we use the class contexts defined in Section II-D. So, for example, a transition may be written as We describe the life cycle of a generic agent, instantiated follows in the MAS hA0 , B 0 , LE iT , starting from its creation. When a new agent a ∈ A of class Fa = hLB , ϕi is created, it is ht,ei ρA , ρB `N hC, σ, α, βi −−−→ hC 0 , σ 0 , α0 , β 0 i. (13) memorized in a location a of the heap α and the function setup of its class is executed. We assume that the code of where ρA and ρB are the class contexts and N ⊆ I ∪ V is the method setup is accessible from the function ϕ of the a finite set of names, i.e., identifiers or variables used in the agent class transition. ϕ(setup) = {B}. (17) A. Semantics of commands with events In this case, the MAS system has the transition We need a formal semantics to manage the events and ht,ei ρA ` hε, αi −−−→ ha.setup(){B}, α0 i (18) the state changes that occur in the life cycle of an agent. To this extent, we use a subsystem of the main MAS transition where α = α[hF, initiated, ω, [], [Create(a, F )]i/a]. 0 system. Such a subsystem has the same configuration of the Note that the agent class context is crucial within this transition MAS system, but the transition relation is called →com . The because it gives us the necessary information regarding the execution of such a system may be interrupted by an event that setup method. may cause a state change: this is represented by taking the label on the transition relation that indicates the current execution The block B of the agent setup is computed by the step and by matching it with the event just occurred. Notably, commands transition system, as follows at some execution step no event occurs, and we indicate them ht,ei with ht, $i. ρA `a hB, σ, α, βi −−−→com hε, σ 0 , α0 , β 0 i ... (19) ht,ei Let us consider a fixed MAS hA0 , B 0 , LE iT . A list of ρA ` ha.setup(){B}, σ, α, βi −−−→ hε, σ 0 , α00 , β 0 i statements, indicated with C1 ; C2 , is computed as usual from where α00 = α0 [hF, active, sw , Lb , Le i/a]. left to right taking care of the propagation of the current event, as shown by the rule During setup, agent a can add and/or remove behaviours from its list Lb , through the following statements ht,ei hC1 , σ, α, βi −−−→com hε, σ 0 , α0 , β 0 i . (14) addBehaviour(b), removeBehaviour(b). ht,ei hC1 ; C2 , σ, α, βi −−−→com hC2 , σ 0 , α0 , β 0 i It is worth noting that such statements can be used also inside the action of a behaviour, and not only in the setup method, When no event occurs, as we can see in the rule (15), to change the list of behaviours dynamically. Finally, after the statement C is computed by means of the underlying Java setup, the agent enters the active state and it becomes semantics system, which we call →jstmt ready to select a behaviour in its list. The life of an agent hC, σi →jstmt hε, σ 0 i continues by performing actions of behaviours until the event . (15) Kill(a) occurs. When an agent a is killed, it computes the ht,$i hC, σi −−−→com hε, σ 0 i function takeDown. Only after the execution of takeDown the agent a is removed from the heap by assigning α(a) = $. We work under the reasonable assumption that such a subsystem may change only the state σ and we do not consider C. Behaviour actions changes in all stores and environments of Java. If α(a) = a = hF0 , sa , s0w , Lb , Le i ∈ A0 is an instantiated We then define specific rules to update the state of an agent. agent and β(b) = b = hF, a, active, sw , si ∈ B 0 is a When an event e related to the agent a = hF, sa , sw , Lb , Le i behaviour that appears in the list of the agent, i.e., b ∈ Lb , then occurs, sa is changed to a new state, and e is stored in the list the behaviour may be selected by the behaviour scheduler of of events Le . Similarly, we define rules for the behaviour state the agent to perform the relative action, i.e., Sb (a) = b. The changes. In this case, there is no need for a list of events inside transition of the main system then calls the action method the behaviour entity, as shown in Figure II-C. For example, of the class of b the following rule describes the state change from active to blocked ρB ` hε, σ, α, βi → hb.action(){C}, σ, α, βi. e = Block(b) β(b) = hF, active, sw , si Just like for the method setup of the agent, the block of code . (16) ht,ei C of action is executed by the subsystem →com . hC, βi −−−→com hC, β[hF, blocked, sw , si/b]i A one-shot behaviour terminates after a single execution There is no explicit rule for the change from active to of its action, and it is removed from the list of behaviours of done because the latter is reached only after the execution the agent, through the function removeBehaviour. So, if of the action for a one-shot behaviour, and cyclic behaviours the agent is still alive, the behaviour scheduler chooses another never change to done. Obviously the event End(MAS) stops behaviour. On the contrary, if the behaviour b is cyclic, then all behaviours and agents in a MAS, forcing them to reach its action is performed cyclically and it is never automatically their respective final states. removed from the list of behaviours of the agent. 126 Proc. of the 16th Workshop “From Object to Agents” (WOA15) June 17-19, Naples, Italy ht,ei ρA , ρB `a,b hC;removeBehaviour(b), σ, α, βi −−−→com hε, σ 0 , α0 , β 0 i . . . β 0 (b) = hF, a, active, sw , si (20) ht,ei ρB ` hb.action(){C}, σ, α, βi −−−→ hε, σ 0 , α0 , β 0 [hF, a, done, sw , si/b]i ht,ei ρA , ρB `a,b hC;removeBehaviour(b), σ, α, βi −−−→com hε, σ 0 , α0 , β 0 i . . . β 0 (b) = hF, a, blocked, sw , si (21) ht,ei ρB ` hb.action(){C}, σ, α, βi −−−→ hε, σ 0 , α0 , β 0 i Figure 2. Rules governing the transition of a one-shot behaviour from the active to the blocked state. The behaviour scheduler of an agent can select only behaviours that are in the active state. Note that a necessary condition for the scheduler Sb (a) ϕ(setup) = { to choose a behaviour is that it must be in the active state. Greetings greetings = A behaviour is normally in the active state, but it can reach new Greetings(this); the blocked state during the execution of its action. When this occurs, the execution continues up to the natural termination addBehaviour(greetings); of the action and the blocked behaviour is not removed from } the list of behaviours. Anyway, the scheduler cannot choose it until it returns to the active state, as detailed, for one-shot ψ(action) = { behaviours, in rules (20) and (21), summarized in Figure 2. System.out.println("Hello world"); IV. A D IDACTIC E XAMPLE } This section discusses a simple example of JADE agent and shows its semantics according to the transition system outlined Suppose that the MAS starts at execution step 0, and in previous sections. The simple agent has the following source that the first event that occurs is the creation of agent hello, code. belonging to the class HelloAgent 1 import j a d e . c o r e . Agent ; e0 = h0, Start(MAS)i MAS = h∅, ∅, [e0 ]iT 2 import j a d e . c o r e . b e h a v i o u r s . O n e S h o t B e h a v i o u r ; 3 ↓ 4 p u b l i c c l a s s H e l l o A g e n t e x t e n d s Agent { e1 = h1, Create(hello, HelloAgent)i 5 protected void s e t u p ( ) { A0 = {hello}, LE = [e1 , e0 ]. 6 G r e e t i n g s g r e e t i n g s = new G r e e t i n g s ( t h i s ) ; 7 Variable hello allows retrieving the information about the new 8 addBehaviour ( g r e e t i n g s ) ; 9 } agent, and we can access its AID by function aid(hello) = 10 hello, and control its state thanks to the heap α. 11 private s t a t i c c l a s s Greetings extends OneShotBehaviour { The event Create(hello, HelloAgent) activates the first 12 p u b l i c G r e e t i n g s ( Agent a ) { transition 13 super ( a ) ; e 14 } 1 ρA ` hε, αi −→ hhello.setup(){B}, αi i 15 16 public void a c t i o n ( ) { where {B} is the block of code obtained by ϕ(setup) and 17 System . o u t . p r i n t l n ( ” H e l l o w o r l d ” ) ; 18 } αi = α[hHelloAgent, initiated, ω, [], [e1 ]i 19 } /hello]. 20 } Class HelloAgent defines an agent class and its static Suppose that no event occurs at execution step 2: the main inner class a behaviour class. This is formalized by setting transition system enters in the subsystem →com , as follows. the pairs hLB , ϕi and ht, ψi using the information contained in the source code. Then, the context is initialized to create ρA `hello hGreetings greetings = a reference between the identifier of classes and their relative new Greetings(), σ, αi , βi structures, as follows. ↓ e3 ρA (HelloAgent) = hLB , ϕi haddBehaviour(greetings), σ i , αi , β i i ρB (Greetings) = hone-shot, ψi ↓ e4 LB = [Greetings] hε, σ , αii , β i i ii 127 Proc. of the 16th Workshop “From Object to Agents” (WOA15) June 17-19, Naples, Italy where σ ii is obtained from a transition of the Java subsystem where E is a special command which denotes the termination →jstmt , called at every execution step, and of the execution. The event occurred are summarized below. e2 = h2, $i β i = β[hGreetings, hello, active, ω, ωi ↓ /greetings] e3 = h3, Create(hello, greetings, Greetings)i ↓ αii = αi [hHelloAgent, initiated, e4 = h4, $i ω, [greetings], [e3 , e1 ]i/hello]. ↓ e5 = h5, $i This transition is necessary to apply rule (19) ↓ e e6 = h6, $i ρA `hello hB, σ, αi , βi −→ 2 ii ii i com hε, σ , α , β i ... ↓ 2 e ρA ` hhello.setup(){B}, σ, αi , βi −→ hε, σ ii , αiii , β i i e7 = h7, End(MAS)i where the state of the agent is eventually changed to active V. C ONCLUSIONS αiii = αii [hHelloAgent, active, ω, [greetings], [e3 , e1 ]i/hello]. This paper provides an outline of the major ingredients of a semantics of JADE agents and multi-agent systems based on transition systems. The five main entities that we consider, Then, because agent hello is active, the scheduler can choose namely the multi-agent system, agents and their classes, be- a behaviour to execute. The only behaviour in the list of haviours and their classes, are discussed. The paper provides behaviours of the agent is greetings so Sb (hello) = greetings an example of the transition system that can be obtained from a very simple JADE agent. The complete description of the ρB ` hε, σ ii , αiii , β i i semantics cannot fit the constraints of a workshop paper and ↓ e5 interested readers are directed to an upcoming journal paper hgreetings.action(){B}, σ ii , αiii , β i i. that also discusses the complete semantics of message passing. The block of code {B} of the action, accessed through the R EFERENCES function ψ, is executed in the →com subsystem, as follows. [1] F. Bellifemine, G. Caire, and D. Greenwood, Developing multi-agent systems with JADE. Wiley Series in Agent Technology, 2007. ρA , ρB `hello,greetings [2] F. Bergenti, G. Caire, and D. Gotta, “Large-scale network and service management with WANTS,” in Industrial Agents: Emerging Applica- hSystem.out.println("Hello world")σ ii , αiii , β i i tions of Software Agents in Industry. Elsevier, 2015, pp. 231–246. ↓ e6 [3] F. Bergenti, G. Caire, and D. Gotta, “Agents on the move: JADE for Android devices,” in Procs. Workshop From Objects to Agents, 2014. hε, σ iii , αiii , β i i [4] F. Bergenti, G. Caire, and D. Gotta, “Agent-based social gaming with AMUSE,” in Procs. 5th Int’l Conf. Ambient Systems, Networks and where σ iii is obtained by the Java transition system. According Technologies (ANT 2014) and 4th Int’l Conf. Sustainable Energy to rule (20), at the end of the computation of its action, the Information Technology (SEIT 2014), ser. Procedia Computer Science. Elsevier, 2014, pp. 914–919. state of the behaviour is changed to done. [5] F. Bergenti and A. Poggi, “Agent-based approach to manage negoti- ii iii i ation protocols in flexible CSCW systems,” in Procs. 4th Int’l Conf. ρA , ρB `hello,greetings hB, σ , α , β i Autonomous Agents, 2000, pp. 267–268. 6 e iii iii i [6] F. Bergenti, A. Poggi, and M. Somacher, “A collaborative platform −→ com hε, σ , α , β i ... . for fixed and mobile networks,” Communications of the ACM, vol. 45, ρA ` hgreetings.action(){B}, σ ii , αiii , β i i no. 11, pp. 39–44, 2002. e 6 −→ hε, σ iii , αiii , β ii i [7] F. Bergenti and A. Poggi, “Ubiquitous information agents,” Int’l J. Cooperative Information Systems, vol. 11, no. 34, pp. 231–244, 2002. In fact: [8] F. Bergenti, A. Poggi, B. Burg, and G. Caire, “Deploying FIPA- compliant systems on handheld devices,” IEEE Internet Computing, vol. 5, no. 4, pp. 20–25, 2001. β ii = β i [hGreetings, hello, done, ω, ωi [9] G. D. Plotkin, “A Structural approach to Operational Semantics,” J. Log. /greetings] Algebr. Program., vol. 60-61, pp. 17–139, 2004. [10] J. Alves-Foss, Formal syntax and semantics of Java. Springer Science & Business Media, 1999, no. 1523. Let us now suppose that when T = 7 the event End(MAS) [11] M. Baldoni, C. Baroglio, and F. Capuzzimati, “Typing multi-agent sys- occurs, thus producing the following transition tems via commitments,” Post-Procs. 2nd Int’l Workshop on Engineering Multi-Agent Systems (EMAS 2014), Revised Selected and Invited Papers, e ρA , ρB ` hε, σ iii , αiii , β ii i −→ 7 hE, σ iii , αiii , β ii i pp. 388–405, 2014. 128