We provide here a collection of examples of interaction models taken from our test cases, based on areas such as bioinformatics, business and emergency response.

FIPA Contract Net Interaction Protocol

In the FIPA Contract Net Interaction Protocol, the initiator, Id, takes the role of a manager which wishes to have some task performed by other agent(s). A receiving agent may either respond with a proposal, refuse, or not understand the task. The initiator can then either accept or refuse the proposal. The receiving agent then informs the initiator if the task is completed or sends a failure message. Alternatively, the initiator can cancel the task.
[More details]


//  Written by Jarred McGinnis
//
//  LCC Specification for FIPA contract net protocol 

a(contract_net_ip_initiator,Id)::
	(
		a(cfp_ca_sender,Id) or
		a(refuse_ca_receiver,Id) or
		a(not_understood_ca_receiver,Id)
	)
	then
	(
		a(accept_proposal_ca_sender,Id) or
		a(reject_proposal_ca_sender,Id)
	)
	then
	(
		a(inform_ca_receiver,Id) or
		a(failure_ca_receiver,Id) or
		a(cancel_ca_sender,Id)
	)

a(contract_net_ip_responder,Id)::
	(
		a(cfp_ca_sender,Id) or
		a(refuse_ca_sender,Id) or
		a(not_understood_ca_sender,Id)
	)
	then
	(
		a(accept_proposal_ca_receiver,Id) or
		a(reject_proposal_ca_receiver,Id)
	)
	then
	(
		a(inform_ca_sender,Id) or
		a(failure_ca_sender,Id) or
		a(cancel_ca_receiver,Id)
	)
FIPA Inform Communicative Act

A sending agent, Id, sends an inform request to a receiving agent, Pid, about some proposition that Id believes to be true and Id does not believe Pid has any knowledge of the truth of that proposition.A receiving agent, Pid, receives an inform request about some proposition from a sending agent, Id, is entitled to believe that the proposition is true.
[More details]


//  Written by Jarred McGinnis
//
//  LCC Specification for FIPA Inform as agent clauses

a(inform_ca_cender, Id)::
	inform(p) => a(inform_ca_receiver,Pid) <- believe(Id,p) and
	not(believe(Id,(bif(Pid,p) or uif(Pid,p))))

a(inform_ca_receiver, Pid)::
	assert(believe(Pid,p)) <- inform(p) <= a(inform_ca_sender,Id)

FIPA Query Interaction Protocol

In the FIPA Query Interaction Protocol (IP), a sending agent, Id, sends a query request to a receiving agent, Pid, to perform some kind of inform action. The receiving agent, Pid, can answer the query with either:

  • inform: gives the information requested
  • failure: the agent is unable to answer due to an error
  • not_understood: the query is not understood
  • the agent refuses to answer the query.

[More details]


//  Written by Jarred McGinnis
//
//  LCC Specification for FIPA query protocol 

a(query_ip_initiator, Id)::
	a(query_ca_sender,Id) then
	(
		a(inform_ca_receiver,Id) or
		a(failure_ca_receiver,Id) or
		a(not_understood_ca_receiver,Id) or
		a(refuse_ca_receiver,Id)
	)

a(query_ip_responder, Pid)::
	a(query_ca_receiver,Pid) then
	(
		a(inform_ca_sender,Pid) or
		a(failure_ca_sender,Pid) or
		a(not_understood_ca_sender,Pid) or
		a(refuse_ca_sender,Pid)
	)