claim : a computational language for autonomous, intelligent and mobile agents
DESCRIPTION
CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents. Amal EL FALLAH-SEGHROUCHNI Alexandru SUNA. University of Paris 6. University of Paris 9. Motivations. Think and implement in the same paradigm: agent Meet the requirements of: distribution migration. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/1.jpg)
CLAIM : CLAIM : A Computational Language for A Computational Language for
Autonomous, Intelligent and Mobile agentsAutonomous, Intelligent and Mobile agents
Amal EL FALLAH-SEGHROUCHNI Alexandru SUNA
University of Paris 6University of Paris 6 University of Paris 9University of Paris 9
![Page 2: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/2.jpg)
MotivationsMotivations Think and implement in the same
paradigm: agent
Meet the requirements of:– distribution– migration
![Page 3: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/3.jpg)
Talk OutlineTalk Outline Programming distributed MAS
– Agent Oriented Languages– Ambient Calculus
CLAIM specifications– Agents– Agent’s Reasoning– Example
Implementation aspects– SyMPA– Mobility Protocol– Mobility Completeness
CLAIM Expressiveness Conclusion and perspectives
![Page 4: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/4.jpg)
Agent Oriented LanguagesAgent Oriented Languages (1) (1)
1993, Y.Shoham agent oriented programming
Agents’ characteristics:Agents’ characteristics:
mentalmental state:• beliefs• goals (AgentSpeak, VIVA, 3APL, dMars)• obligations (Agent-0, Agent-K, PLACA)
reasoning mechanismsreasoning mechanisms
capabilities/servicescapabilities/servicesAgent-0, Agent-K, PLACA, AgentSpeak
languages : Agent-0, Agent-K, PLACA, AgentSpeak, VIVA, 3APL, dMars
![Page 5: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/5.jpg)
planning:planning: PLACA, AgentSpeak, 3APL, dMars
communication:communication:
• agent reasoning, without communication :3APL, dMars
• message passing: Agent-0, Agent-K, PLACA, AgentSpeak,VIVA
concurrency:concurrency: AgentSpeak, 3APL, dMars
mobility:mobility: none
Agent Oriented Languages Agent Oriented Languages (2)(2)
Agents’ characteristics:Agents’ characteristics:
![Page 6: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/6.jpg)
Ambient Calculus Ambient Calculus [Cardelli and Gordon, 98][Cardelli and Gordon, 98]
• Interest : improve the modeling of agents' mobilityAmbient :Ambient : • a bounded place
• a name, set of processes and sub-ambients
P,Q ::= processes M[P] ambient (n)P restriction 0 inactivity P | Q composition !P replication M.P capability action (x).P input action M output action
M ::= capabilities x variable n name in n enter into n out n exit out of n open n open n acid open from inside
mv in n move in n mv out n move out of n
+ Reduction rules+ Reduction rules
![Page 7: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/7.jpg)
Ambient Calculus Ambient Calculus [Cardelli and Gordon, 98][Cardelli and Gordon, 98]
Reduction rules:
enter action: enter action: n[in m.P | Q] | m[R] m[n[P | Q] | R ]
exit action:exit action: m[n[out m.P | Q] | R] n[P | Q] | m[R]
replicationreplication: : !P !P | P
open action: open action: open n.P | n[Q] P | Q
other rules:other rules:mv in n.P | n[Q] n[ P | Q ] n[mv out n.P | Q ] P | n[Q]n[acid.P | Q ] P | Q
Communication: Communication: (x).P | M P { xM }
![Page 8: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/8.jpg)
Our CLAIMOur CLAIM
An agent oriented programming language that homogeneously combines:
Intelligence, Autonomy and Mobility
Cognition, Interaction and Concurrence
Agent Languages Concurrent Languages
• goals• knowledge• capabilities• reasoning
• communication primitives
• mobility primitives
![Page 9: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/9.jpg)
Agent DescriptionAgent Description
defineAgent agentName {parent = null | agentName ;knowledge = null | { knowledge;*} ;goals = null | { goal ;* } ;messages = null | { message ;* } ;capabilities = null | { capability ;* } ;processes = null | { process | * } ;agents = null | { agentName ;* } ;
}
defineAgentClass className { ... }newAgent agentName ( className )
![Page 10: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/10.jpg)
Agent’s ComponentsAgent’s Components
knowledgeknowledge
knowledge = agentName (capabilityS,message,effect ) | proposition
goalsgoals
goal = proposition
parentparent
hierarchical structure ; Ambient-Calculus like
![Page 11: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/11.jpg)
VariablesVariablesvariable : variable : ?x , where x could be: • agentName
• capabilitySignature• message• goal• effect
Examples:
forAllKnowledge(?Ag(cap1,?mess,?effect)) { process(?Ag) }
?Ag - all the agents in the knowledge base that have the capacity cap1
forAllAgents(?Ag : className) { process(?Ag) } ?Ag - all the sub-agents of the current agent that belong to the class className
![Page 12: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/12.jpg)
Agents’ CommunicationAgents’ Communicationsend ( receiver, message [, c, [t] ] )
receiver:receiver: • agentName• ?Ag• all (broadcast )• this• ?Ag:className (multicast)
message:message:• proposition• messages concerning the knowledge
tell ( knowledge )askAllCapabilities ( agentName, agentName )askIfCapabiliy ( agentName,agentName,capabilityS )achieveCapability ( agentName,agentName,capabilityS )removeCapability (agentName, capabilityS )
• mobility messages
![Page 13: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/13.jpg)
Messages concerning knowledgeMessages concerning knowledge
A.send(B,tell(knowledge))
the knowledge is added in the knowledge base
A.send(B,askAllCapabilities(A,B))
B.send(A,tell(B(capabilityS,message,effect )))
A.send(B,askIfCapabiliy(A,B,capabilityS))
B.send(A,tell(B(capabilityS,message,effect )))
A.send(B,achieveCapabiliy(A,B,capabilityS))
the capability is performed
A.send(B,removeCapability(A,capabilityS))
the knowledge about this capability is removed
![Page 14: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/14.jpg)
Mobility messagesMobility messagesopenBy(Ag)
- ask open permission
openOK(Ag) ; openNotOK(Ag)- the agent Ag accepts / doesn’t accept to be open
wantOut(Ag)- ask exit permission
outOK(Ag) ; outNotOK(Ag) - the agent Ag gives / doesn’t give the permission
wantIn(Ag)- ask enter permission
inOK(Ag) ; inNotOK(Ag)- the agent Ag gives / doesn’t give the permission
Add permissions to
ambient-calculus primitives
![Page 15: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/15.jpg)
CapabilitiesCapabilitiescapabilities :capabilities :
capability = capabilitySignature { message = null | message ; conditions = null | condition ; do { process }; effects = null | { proposition ;*}
}
condition = function(args*) | agentName.effect | ( condition ) | not condition | condition and condition | condition or condition
![Page 16: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/16.jpg)
ProcessesProcesses
P ::= P.PpropositioninstructionfunctionName([arguments*])newAgent agentName( agentClass )in ( arg,agentName )out ( arg,agentName )moveTo( arg,agentName )open ( agentName )acidsend ( receiver, message [,c [,t]] )
processes :processes :forAllKnowledge (knowledge){ P }
forAllAgents (agentName){ P }
arg = this | clone | process
![Page 17: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/17.jpg)
Agent’s ReasoningAgent’s Reasoning
Forward reasoning::
• choose a messages from the queue of messages• find the capabilities that have this activation message • verify the conditions of the chosen capabilities• execute the corresponding processes
Backward reasoning:
• choose a goal form the goal list• find the capabilities that allow to achieve the goal• verify the conditions of the chosen capabilities update the goals, ask for capabilities• execute the corresponding processes
![Page 18: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/18.jpg)
ExampleExamplee-commerce
Company agent
• knows the names of some Buyer agents• can create Seller agents
Seller agent class
• can migrate• can negotiate with Buyer agents
Buyer agent class
• can negotiate with Seller agents
two solutionsforward reasoning
backward reasoning
![Page 19: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/19.jpg)
Agent definitions Agent definitions (forward - 1)(forward - 1)
defineAgent Company { parent=null ; knowledge= { B1(Buy,buy(),null); B2(Buy,buy(),null); } goals=null; messages=null ; capabilities={
sendSeller { message=sendSeller() ; condition=null; do { newAgent S1(Seller).forAllKnowledge(?Ag(Buy,?mess?eff)) { send(S1,tell(?Ag(Buy,?mess,?eff))) }. send(S1,go()) } effects=null;}useData { message=arriveSeller(?Ag); condition=null; do { computeData() } effects=null;}
} processes= send(this,sendSeller()); agents=null ;}
![Page 20: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/20.jpg)
Agent definitions Agent definitions (forward - 2)(forward - 2)defineAgentClass Seller {
parent=null ;knowledge= null;goals=null;messages=null ;capabilities={
goToBuyer {message=go();condition=null;do { forAllKnowledge(?B(Buy,mess,?eff)){
moveTo(this,?B).negotiate(?B) }.send(this,goToCompany()) }
effects=null;}goToCompany {
message = goToCompany() ; condition=null;do { moveTo(this,Company).send(Company,arriveSeller(this)) }effects=null;
}}processes= null ;agents=null ;
}
![Page 21: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/21.jpg)
Run steps Run steps (forward)(forward)
CompanyCompany S1 : SellerS1 : Seller
send(this,sendSeller)
find capabilities
execute capability
sendSeller()
verify conditions:OK
find, verify, execute goToBuyer()
send(this,goToCompany())
find, verify, execute goToCompany
send(Company,arriveSeller(S1))
Find, verify, execute useData()
send(S1,go())
![Page 22: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/22.jpg)
Agent definitions Agent definitions (backward - 1)(backward - 1)
defineAgent Company { parent=null ; knowledge= null; goals=haveData(); messages=null ; capabilities={
useData { message=arriveSeller(?Ag); condition= ?Ag:Seller.arriveToCompany(); do { computeData(); } effects=haveData();}
} processes= null; agents= { S1; }}
![Page 23: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/23.jpg)
Agent definitions Agent definitions (backward - 2)(backward - 2)
defineAgentClass Seller {parent=Company ;knowledge={ B1(Buy,buy(),null); B2(Buy,buy(),null); }goals=null;messages=null ;capabilities={
goToBuyer {message=go(); condition=null;do { forAllKnowledge(?B(Buy,mess,?eff)){
moveTo(this,?B).negotiate(?B) }.send(this,goToCompany()) }
effects=endNegotiation();}goToCompany {
message = goToCompany() ; condition=this.endNegotiation();do { moveTo(this,Company).send(Company,arriveSeller(this)) }
effects=arriveToCompany();}
}processes= null ;agents=null ;
}
![Page 24: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/24.jpg)
Run steps Run steps (backward)(backward)
CompanyCompany
find capabilities
useData(), effect=haveData()
verify conditions
goal=haveData()
?Ag:Seller.arriveToCompany()
S1 : SellerS1 : Seller
find capabilities
goHome(), effect=arriveHome()
verify conditions
this.endNegotiation()
find capabilities
verify conditions:null
execute capability
goToBuyer(), effect=endNegotiation()
![Page 25: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/25.jpg)
SyMPA ArchitectureSyMPA Architecture(MASIF compliant)(MASIF compliant)
Agent System
Agent
Agent …
I/O
I/O
I/O
Agent System
Agent
Agent …
I/O
I/O
I/O
Central System
I/O
![Page 26: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/26.jpg)
Agent System LevelAgent System Level
Interface + Editor
PSystemDefinitions Base
MASStructure
Interpret
Create agents
PAgent PAgent. . .
![Page 27: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/27.jpg)
Agent LevelAgent Level
PAgent
agentfile
name.agd
Interface
waitmessages
runprocesses
verifygoals
selectcapabilities
selectcapabilities
visualisemodify
update update
![Page 28: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/28.jpg)
Mobility ProtocolMobility Protocol
Agent A
in(this,B)
PSystem A
Agent B
PSystem B
Central System
getAgentIP(B)IP,port(System(B))
wantToSend(B)
IP,port(B)
wantIn(this,A)
inOK(this,B)
Save agent’s state
inAgent(A,B,agent) Restore agent
Update SMA
Update SMA
Verify authority
![Page 29: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/29.jpg)
Mobility CompletenessMobility Completenessalgorithm MobilityOperationInput : agent, SMA
while (not SMA.structureCondition()) do wait(t1)if (SMA.structureCondition()) then
agent.saveState()agent.suspendAllProcesses()agent.askPermission()while (not agent.receivePermission() ) do wait(t2)if (agent.receivePermission()) then
SMA.update()while (not SMA.endUpdating()) do wait(t3)agent.restoreState()agent.resumeAllProcesses()
end ifelse
agent.removeProcess(this)agent.restoreState()agent.resumeAllProcesses()
end elseend if
![Page 30: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/30.jpg)
Language ExpressivenessLanguage ExpressivenessFIPA Contract Net Protocol
![Page 31: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/31.jpg)
Agents Definitions Agents Definitions (FIPA - 1)(FIPA - 1)
defineAgent Initiator {parent=null ;knowledge= null;goals=null;messages=null ;capabilities={ calForProposals {
message=callForProposals();condition=null;do { send(?Ag:Participant,cfp(this) ) }effects=null;
} rejectProposal {
message= propsose(?PAg);condition= reject() ;do { send(?PAg,rejectProposal(this)) }effects=null;
}
![Page 32: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/32.jpg)
acceptProposal {message= propsose(?PAg) ;condition= accept() ;do { send(?PAg,acceptProposal(this)) }effects=null;
}}processes= send(this,callForProposals()) ;agents=null ;
}
Agents Definitions Agents Definitions (FIPA - 2)(FIPA - 2)
![Page 33: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/33.jpg)
Agents Definitions Agents Definitions (FIPA - 3)(FIPA - 3)
defineAgentClass Participant {parent=null ;knowledge= null;goals=null;messages=null ;capabilities={ refuzeCFP {
message=cfp(?IAg) ;condition=notAccept();do { send(?IAg,refuse(this) ) }effects=null;
} notUnderstood {
message= cfp(?IAg); condition=notUnderstood() ;do { send(?IAg,notUnderstood(this) )}effects=null;
} acceptCFP {
message=cfp(?IAg); condition=accept();do { send(?IAg,propose(this) ) }effects=null;
}
![Page 34: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/34.jpg)
Agents Definitions Agents Definitions (FIPA - 4)(FIPA - 4)
failure {message = acceptProposal(?IAg) ;
condition=failure();do { send(?IAg,failure(this) ) }effects=null;
} done {
message = acceptProposal(?IAg) ;condition=done();do { send(?IAg,informDone(this) ) }effects=null;
} ref {
message = acceptProposal(?IAg) ;condition=ref();do { send(?IAg,informRef(this) ) }effects=null;
}}processes= null ;agents=null ;
}
![Page 35: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/35.jpg)
Conclusion: Main ContributionConclusion: Main ContributionCLAIM languageCLAIM language
• Goals, Knowledge, capacities• Backward reasoning: reactive behavior• Forward reasoning : goal driven behavior
• Communication primitives • Mobility primitives
SyMPA systemSyMPA system
• Easy design of distributed MAS • editing agents, interpret, agent interface
• Suitable platform for implementation• management, creation, execution, authentication, migration of agents• protocols for communication and mobility
Expressiveness
Completeness
![Page 36: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/36.jpg)
PerspectivesPerspectives
Define an operational semantics of CLAIMDefine an operational semantics of CLAIM Enrich the languageEnrich the language
– add security primitives and data types
Extend de language possibilities
– develop libraries of agents
– endow agents with learning capacities
Improve SYMPA
– call functions/subroutines defined in other languages
– offer several mechanisms for the management of agents and agent systems
![Page 37: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/37.jpg)
References References • Luca Cardelli, "Abstractions for Mobile Computation", in Secure Internet Programming: Security Issues for Mobile and Distributed Objects. Lecture Notes in Computer Science, Vol. 1603, Springer, pp. 51-94, 1999.
• Luca Cardelli, "Mobile Ambients Synchronisation", SRC Technical Note, 1997.
• Luca Cardelli, A.D. Gordon, "Mobile Ambients", in Foundations of Software Science and Computational Structures, Maurice Nivat (Ed.), Lecture Notes in Computer Science, Vol. 1378, Springer, pp. 140-155, 1998
• Winton H E Davies, Peter Edwards, "Agent-K: An Integration of AOP and KQLM", 1994.
• K.V.Hindriks, F.S.deBoer, W.van der Hoek, J.J.Ch.Meyer, "Agent Programming in 3APL", 1999
•M. d'Inverno, D. Kinny, M. Luck, M. Wooldridge, "A Formal Specification of dMARS", 1998.
![Page 38: CLAIM : A Computational Language for Autonomous, Intelligent and Mobile agents](https://reader036.vdocument.in/reader036/viewer/2022062408/568140d1550346895dac9e0e/html5/thumbnails/38.jpg)
• D. Milojicic, M. Breugst, I. Busse, J. Campbell, S. Covaci, B. Friedman, K. Kosaka, D. Lange, K. Ono, M. Oshima, C. Tham, S. Virdhagriswaran, J. White, "MASIF, The OMG Mobile Agent System Interoperability Facility", 1998.
• David Parks, "Agent-Oriented Programming: A Practical Evaluation", 1997.
• Yoav Shoham, "Agent Oriented Programming", Artificial Intelligence (60), pp.51-92, 1993.
• Christian F. Tschudin, "Mobile Agent Security", in Intelligent Information Agents - Agent based information discovery and management on the Internet, Springer, pp. 431-445, 1999.
• Gerd Wagner, "VIVA Knowledge-Based Agent Programming", 1996.
• D.Weerasooriya, Anand S. Rao, K. Ramamohanarao, "Design of a Concurrent Agent-Oriented Language", 1994.
References References