Multi-threaded Communicating Agents in Qu-Prolog

  • Keith L. Clark
  • Peter J. Robinson
  • Silvana Zappacosta Amboldi
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3900)


In this tutorial paper we summarise the key features of the multi-threaded Qu-Prolog language for implementing multi-threaded communicating agent applications. Internal threads of an agent communicate using the shared dynamic database used as a generalisation of Linda tuple store. Threads in different agents, perhaps on different hosts, communicate using either a thread-to-thread store and forward communication system, or by a publish and subscribe mechanism in which messages are routed to their destinations based on content test subscriptions.

We illustrate the features using an auction house application. This is fully distributed with multiple auctioneers and bidders which participate in simultaneous auctions. The application makes essential use of the three forms of inter-thread communication of Qu-Prolog. The agent bidding behaviour is specified graphically as a finite state automaton and its implementation is essentially the execution of its state transition function. The paper assumes familiarity with Prolog and the basic concepts of multi-agent systems.


Reserve Price Bidding Behaviour Agent Application Internal Thread Call Price 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Robinson, P.J.: Ergo Reference Manual. Technical report, ITEE, University of Queensland,
  2. 2.
    Clark, K.L., Robinson, P.J., Hagen, R.: Multi-threading and message communication in Qu-Prolog. Theory and Practice of Logic Programming 1(3), 283–301 (2001)CrossRefMATHGoogle Scholar
  3. 3.
    Robinson, P.J., Hinchley, M., Clark, K.L.: Qu-Prolog: An Implementation Language with Advanced Reasoning Capabilities. In: Hinchey, M.G., Rash, J.L., Truszkowski, W.F., Rouff, C.A., Gordon-Spears, D.F. (eds.) FAABS 2002. LNCS (LNAI), vol. 2699. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  4. 4.
    Segall, B., et al.: Content based routing with elvin4. In: Proceedings AUUG2K. Canberra, Australia (2000), Downloadable from
  5. 5.
    Wooldridge, M.J., Ciancarini, P.: Agent Oriented Software Engineering: the State of the Art. In: Ciancarini, P., Wooldridge, M.J. (eds.) AOSE 2000. LNCS, vol. 1957, pp. 1–28. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  6. 6.
    Carriero, N., Gelernter, D.: Linda in context. Communications of the ACM 32(4), 444–458 (1989)CrossRefGoogle Scholar
  7. 7.
    Finin, T., Fritzson, R., McKay, D., McEntire, R.: KQML as an agent communication language. In: Proceedings 3rd International Conference on Information and Knowledge Management (1994)Google Scholar
  8. 8.
    FIPA. Fipa communicative act library specification. Technical report, Foundation for Intelligent Physical Agents (2002),
  9. 9.
    McCabe, F.G.: ICM Reference Manual. Fujitsu laboratories Ltd. (1999) Downloadable from,
  10. 10.
    Smith, R.G.: The contract net protocol: High-level communication and control in a distributed problem solver. In: Bond, A.H., Gasser, L. (eds.) Readings in distributed aritficial intelligence, pp. 357–366. Morgan Kaufmann, San Francisco (1988)CrossRefGoogle Scholar
  11. 11.
    Coffey, S., Gaertner, D.: Using pheromones, broadcasting and negotiation for agent gathering tasks. In: Toni, F., Torroni, P. (eds.) CLIMA 2005. LNCS (LNAI), vol. 3900, Springer, Heidelberg (2006)Google Scholar
  12. 12.
    Eskilson, J., Carlsson, M.: SICStus MT—A Multithreaded Execution Environment for SICStus Prolog. In: Palamidessi, C., Meinke, K., Glaser, H. (eds.) ALP 1998 and PLILP 1998. LNCS, vol. 1490, pp. 36–53. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  13. 13.
    Tarau, P.: BinProlog 9.x Professional Edition: User Guide. Technical report, BinNet Corp (2002), Available from
  14. 14.
    Clark, K.L., Robinson, P.J.: Agents as Multi-threaded Logical Objects. In: Kakas, A.C., Sadri, F. (eds.) Computational Logic: Logic Programming and Beyond. LNCS (LNAI), vol. 2407, p. 33. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  15. 15.
    Roy, P.V., Haridi, S.: Mozart: A programming system for agent applications. In: International Workshop on Distributed and Internet Programming with Logic and Constraint Languages. Part of International Conference on Logic Programming (ICLP 1999) (1999),
  16. 16.
    Cabenza, D., Hemenegildo, M., Carro, M.: On the uses of attributed variables in parallel and concurrent logic programming systems. In: Sterling, L. (ed.) Proceedings of ICLP 1995, pp. 631–645. MIT Press, Cambridge (1995)Google Scholar
  17. 17.
    McCabe, F.G., Clark, K.L.: Agent PRocess Interaction Language. In: Wooldridge, M.J., Jennings, N.R. (eds.) ECAI 1994 and ATAL 1994. LNCS (LNAI), vol. 890, pp. 324–340. Springer, Heidelberg (1995)CrossRefGoogle Scholar
  18. 18.
    Armstrong, J., Virding, R., Williams, M.: Concurrent Programming in Erlang. Prentice-Hall International, Englewood Cliffs (1993)MATHGoogle Scholar
  19. 19.
    Clark, K.L., McCabe, F.G.: Go! – a Multi-paradigm programming language for implementing Multi-threaded agents. Annals of Mathematics and Artificial Intelligence 41(2-4), 171–206 (2004)CrossRefMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Keith L. Clark
    • 1
  • Peter J. Robinson
    • 2
  • Silvana Zappacosta Amboldi
    • 1
  1. 1.Dept. of ComputingImperial CollegeLondon
  2. 2.School of ITEEThe University of QueenslandBrisbane

Personalised recommendations