Changes for page Overview
From version 9.1
edited by Andrea Omicini
on 29/12/2021 17:47
on 29/12/2021 17:47
Change comment:
There is no comment for this version
To version 7.1
edited by Andrea Omicini
on 10/08/2021 16:45
on 10/08/2021 16:45
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,0 +1,1 @@ 1 +ReSpecT Overview - Content
-
... ... @@ -1,17 +1,19 @@ 1 -= {{respect/}} Overview = 1 +{{include document="Main.MacroSheet"/}}{{velocity}} 2 +* #respect() (**Re**action **Spec**ification **T**uples) is a logic-based language for the coordination of complex software systems. 3 +* #respect() promotes a coordination model providing tuple centres as programmable, general-purpose coordination media. 4 +* the behaviour of #respect() tuple centres is programmed through the #respect() first-order logic language. 2 2 3 -* {{respect/}} (**Re**action **Spec**ification **T**uples) is a logic-based language for the coordination of complex software systems 4 -* {{respect/}} promotes a coordination model providing tuple centres as programmable, general-purpose coordination media 5 -* the behaviour of {{respect/}} tuple centres is programmed through the {{respect/}} first-order logic language 6 +== The #respect() Tuple Centre Coordination Model == 6 6 7 -== The {{respect/}} Tuple Centre Coordination Model == 8 - 9 -A tuple centre is a tuple space enhanced with the possibility to program its behaviour in response to interactions. 10 -First of all, coordinated entities (//{{respect/}} agents//, henceforth, or simply //agents//) can operate on a {{respect/}} tuple centre in the same way as on a standard Linda tuple space: by exchanging //tuples//—which are ordered collection of knowledge chunks—through a simple set of coordination primitive. 11 -So, an agent can write a tuple in a tuple centre with an {{code language="none"}}out{{/code}} primitive; or read a tuple from a tuple centre with primitives such as {{code language="none"}}in{{/code}}, {{code language="none"}}rd{{/code}}, {{code language="none"}}inp{{/code}}, {{code language="none"}}rdp{{/code}} specifying a tuple template - that is, an identifier for a set of tuples, according to some tuple matching mechanism 8 +A tuple centre is a tuple space enhanced with the possibility to program its behaviour in response to interactions. 9 +## 10 +First of all, coordinated entities (//#respect() agents//, henceforth, or simply //agents//) can operate on a #respect() tuple centre in the same way as on a standard Linda tuple space: by exchanging //tuples//—which are ordered collection of knowledge chunks—through a simple set of coordination primitive. 11 +## 12 +So, an agent can write a tuple in a tuple centre with an #code("out") primitive; or read a tuple from a tuple centre with primitives such as #code("in"), #code("rd"), #code("inp"), #code("rdp") specifying a tuple template - that is, an identifier for a set of tuples, according to some tuple matching mechanism. 13 +## 12 12 Reading tuples can be 13 -* //destructive// — {{codelanguage="none"}}in{{/code}},{{codelanguage="none"}}inp{{/code}}remove the matching tuple – or //non-destructive//–{{codelanguage="none"}}rd{{/code}},{{codelanguage="none"}}rdp{{/code}}simply read the matching tuple14 -* //suspensive// — {{codelanguage="none"}}in{{/code}},{{codelanguage="none"}}rd{{/code}}wait until a matching tuple is found – or //non-suspensive//–{{codelanguage="none"}}inp{{/code}},{{codelanguage="none"}}rdp{{/code}}immediately return either the matching tuple or a failure result15 +* //destructive// — #code("in"), #code("inp") remove the matching tuple – or //non-destructive//– #code("rd"), #code("rdp") simply read the matching tuple 16 +* //suspensive// — #code("in"), #code("rd") wait until a matching tuple is found – or //non-suspensive//– #code("inp"), #code("rdp") immediately return either the matching tuple or a failure result 15 15 16 16 but is anyway always //non-deterministic//: when more than one tuple in a tuple centre are found that match a tuple template, one is non-deterministically chosen among them and returned. 17 17 ... ... @@ -22,23 +22,54 @@ 22 22 23 23 The main features of //generative communication// (where information generated has an independent life with respect to the generator) are the forms of uncoupling (space, time, name) based on mediated interaction: sender and receiver do not need to know each other, to coexist in the same space or at the same time in order to communicate (to exchange a tuple, in particular), and more generally, to interact. 24 24 ## 25 -//Associative access// (access based on structure and content of information exchanged, rather than on location, or on name) based on tuple matching promotes synchronisation based on tuple structure and content: thus, coordination is data-driven, and allows for knowledge-based coordination patterns. Finally, //suspensive semantics// promotes coordination patterns based on knowledge availability, and couples well with incomplete, partial knowledge. 27 +//Associative access// (access based on structure and content of information exchanged, rather than on location, or on name) based on tuple matching promotes synchronisation based on tuple structure and content: thus, coordination is data-driven, and allows for knowledge-based coordination patterns. 28 +## 29 +Finally, //suspensive semantics// promotes coordination patterns based on knowledge availability, and couples well with incomplete, partial knowledge. 26 26 27 -Even more, while the basic tuple centre model is independent of the type of tuple, {{respect/}} tuple centres adopt logic tuples – both tuples and tuple templates are essentially Prolog //facts// – and logic //unification// is used as the tuple-matching mechanism. 28 -So, for instance, an agent {{code language="none"}}ag1{{/code}} performing operation {{code language="none"}}we ? in(activity(ag1,CaseID)){{/code}} on tuple centre {{code language="none"}}we{{/code}} containing tuples {{code language="none"}}activity(ag1,c16){{/code}} and {{code language="none"}}activity(ag2,c22){{/code}} will be returned tuple {{code language="none"}}activity(ag1,c16){{/code}}—the one unifying with the template—removed from {{code language="none"}}we{{/code}}. Since the overall content of a tuple centre is a multiset of logic facts, it has a twofold interpretation as either a collection of messages, or a (logic) //theory of communication// among agents—thus promoting in principle forms of //reasoning about communication//. 31 +Even more, while the basic tuple centre model is independent of the type of tuple, #respect() tuple centres adopt logic tuples – both tuples and tuple templates are essentially Prolog //facts// – and logic //unification// is used as the tuple-matching mechanism. 32 +## 33 +So, for instance, an agent #code("ag1") performing operation #code("we ? in(activity(ag1,CaseID))") on tuple centre #code("we") containing tuples #code("activity(ag1,c16)") and #code("activity(ag2,c22)") will be returned tuple #code("activity(ag1,c16)")—the one unifying with the template—removed from #code("we"). 34 +## 35 +Since the overall content of a tuple centre is a multiset of logic facts, it has a twofold interpretation as either a collection of messages, or a (logic) //theory of communication// among agents—thus promoting in principle forms of //reasoning about communication//. 29 29 30 -Finally, a tuple centre is a programmable tuple space, so as to add //programmability// of the coordination medium as a new dimension of coordination. While the behaviour of a tuple space in response to interaction events is fixed – so, the effects of coordination primitives is fixed –, the behaviour of a tuple centre can be tailored to the system needs by defining a set of specification tuples, or reactions, which determine how a tuple centre should react to incoming / outgoing events. While the basic tuple centre model is not bound to any specific language to define reactions, {{respect/}} tuple centres are obviously programmed through the {{respect/}} logic-based specification language. 37 +Finally, a tuple centre is a programmable tuple space, so as to add //programmability// of the coordination medium as a new dimension of coordination. 38 +## 39 +While the behaviour of a tuple space in response to interaction events is fixed – so, the effects of coordination primitives is fixed –, the behaviour of a tuple centre can be tailored to the system needs by defining a set of specification tuples, or reactions, which determine how a tuple centre should react to incoming / outgoing events. 40 +## 41 +While the basic tuple centre model is not bound to any specific language to define reactions, #respect() tuple centres are obviously programmed through the #respect() logic-based specification language. 31 31 32 -== {{respect/}}as a Core Coordination Language ==43 +== #respect() as a Core Coordination Language == 33 33 34 -The original {{respect/}} is a logic-based language for the specification of the behaviour of tuple centre. As a behaviour specification language, #respect(): 45 +The original #respect() is a logic-based language for the specification of the behaviour of tuple centre. 46 +## 47 +As a behaviour specification language, #respect(): 35 35 * enables the definition of computations within a tuple centre, called reactions, and 36 36 * makes it possible to associate reactions to events occurring in a tuple centre. 37 37 38 -So, {{respect/}} has both a declarative and a procedural part. As a specification language, it allows events to be declaratively associated to reactions by means of specific logic tuples, called specification tuples, whose form is {{code language="none"}}reaction(E,R){{/code}}. In short, given a event {{code language="none"}}Ev{{/code}}, a specification tuple {{code language="none"}}reaction(E,R){{/code}} associates a reaction {{code language="none"}}Rtheta{{/code}} to {{code language="none"}}Ev{{/code}} if {{code language="none"}}theta{{/code}} = mgu({{code language="none"}}E,Ev{{/code}}). As a reaction language, {{respect/}} enables reactions to be procedurally defined in terms of sequences of logic reaction goals, each one either succeeding or failing. A reaction as a whole succeeds if all its reaction goals succeed, and fails otherwise. Each reaction is executed sequentially with a transactional semantics: so, a failed reaction has no effect on the state of a logic tuple centre. 51 +So, #respect() has both a declarative and a procedural part. 52 +## 53 +As a specification language, it allows events to be declaratively associated to reactions by means of specific logic tuples, called specification tuples, whose form is #code("reaction(E,R)"). 54 +## 55 +In short, given a event #code("Ev"), a specification tuple #code("reaction(E,R)") associates a reaction #code("Rtheta") to #code("Ev") if #code("theta") = mgu(#code("E,Ev")). 56 +## 57 +As a reaction language, #respect() enables reactions to be procedurally defined in terms of sequences of logic reaction goals, each one either succeeding or failing. 58 +## 59 +A reaction as a whole succeeds if all its reaction goals succeed, and fails otherwise. 60 +## 61 +Each reaction is executed sequentially with a transactional semantics: so, a failed reaction has no effect on the state of a logic tuple centre. 39 39 40 -All the reactions triggered by an event are executed before serving any other event: so, agents perceive the result of serving the event and executing all the associated reactions altogether as a single transition of the tuple centre state. As a result, the effect of a coordination primitive on a logic tuple centre can be made as complex as needed by the coordination requirements of a system. Generally speaking, since{{respect/}} has been shown to be Turing-equivalent, any computable coordination law could be in principle encapsulated into a {{respect/}} tuple centre. This is why {{respect/}} can be assumed as a general-purpose core language for coordination: a language that could then be used to represent and enact policies and rules for coordination systems of any sort. 63 +All the reactions triggered by an event are executed before serving any other event: so, agents perceive the result of serving the event and executing all the associated reactions altogether as a single transition of the tuple centre state. 64 +## 65 +As a result, the effect of a coordination primitive on a logic tuple centre can be made as complex as needed by the coordination requirements of a system. 66 +## 67 +Generally speaking, since #respect() has been shown to be Turing-equivalent, any computable coordination law could be in principle encapsulated into a #respect() tuple centre. 68 +## 69 +This is why #respect() can be assumed as a general-purpose core language for coordination: a language that could then be used to represent and enact policies and rules for coordination systems of any sort. 41 41 42 -Adopting the declarative interpretation of logic tuples, a {{respect/}} tuple centre has then a twofold nature a //theory of communication// (the set of the ordinary tuples) and a //theory of coordination// (the set of the specification tuples). In principle, this allows intelligent agents to reason about the state of collaboration activities, and to possibly affect their dynamics. Furthermore, the twofold interpretation (either declarative or procedural) of {{respect/}} specification tuples allows knowledge and control to be represented uniformly (as Prolog-like facts) and encapsulated within the same coordination artefact. 43 - 44 -{{include reference="Environment" excludeFirstHeading="yes"/}} 71 +Adopting the declarative interpretation of logic tuples, a #respect() tuple centre has then a twofold nature a //theory of communication// (the set of the ordinary tuples) and a //theory of coordination// (the set of the specification tuples). 72 +## 73 +In principle, this allows intelligent agents to reason about the state of collaboration activities, and to possibly affect their dynamics. 74 +## 75 +Furthermore, the twofold interpretation (either declarative or procedural) of #respect() specification tuples allows knowledge and control to be represented uniformly (as Prolog-like facts) and encapsulated within the same coordination artefact. 76 +{{/velocity}} 77 +{{include document="ReSpecT.MacroSheet"/}}