Abstract
Go! is a multi-paradigm programming language that is oriented to the needs of programming secure, production quality, agent based applications. It is multi-threaded, strongly typed and higher order (in the functional programming sense). It has relation, function and action procedure definitions. Threads execute action procedures, calling functions and querying relations as need be. Threads in different agents communicate and coordinate using asynchronous messages. Threads within the same agent can also use shared dynamic relations acting as memory stores.
In this paper we introduce the essential features of Go! illustrating them by programming a simple multi-agent application comprising hybrid reactive/deliberative agents interacting in a simulated ballroom. The dancer agents negotiate to enter into joint commitments to dance a particular dance (e.g. polka) they both desire. When the dance is announced, they dance together. An agent’s reactive and deliberative components are concurrently executing threads which communicate and coordinate using belief, desire and intention memory stores. We believe such a multi-threaded agent architecture represents a powerful and natural style of agent implementation, for which Go! is well suited.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
McCabe, F., Clark, K.: April - 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)
Chu, D., Clark, K.L.: IC-Prolog II: a multi-threaded Prolog system. In: Succi, G., Colla, G. (eds.) Proceedings of the ICLP 1993 Workshop on Concurrent & Parallel Implementations of Logic Programming Systems, pp. 115–141 (1993)
McCabe, F.: L&O: Logic and Objects. Prentice-Hall International, Englewood Cliffs (1992)
Haugeneder, H., Steiner, D.: Co-operative agents: Concepts and applications. In: Jennings, N.R., Wooldridge, M.J. (eds.) Agent Technology, pp. 175–202. Springer, Heidelberg (1998)
Willmott, S.N., Dale, J., Burg, B., Charlton, C., O’Brien, P.: Agentcities: A Worldwide Open Agent Network. Agentlink News, 13–15 (2001)
Milner, R.: A theory of type polymorphism in programming. Computer and System Sciences 17, 348–375 (1978)
Minsky, M.: A framework for representing knowledge. In: Winston, P. (ed.) Psychology of Computer Vision, pp. 211–277. MIT Press, Cambridge (1975)
Clark, K., McCabe, F.: Go! – a multi-paradigm programming language for implementing multi-threaded agents. Annals of Mathematics and Artificial Intelligence (2004) (to appear)
Bratman, M.E., Israel, D.J., Pollack, M.E.: Plans and resource bounded practical reasoning. Computational Intelligence 4, 349–355 (1988)
Carriero, N., Gelernter, D.: Linda in context. Communications of the ACM 32, 444–458 (1989)
Omicini, A., Zambonelli, F.: Coordination for internet application development. Autonomous Agents and Multi-agent systems 2, 251–269 (1999)
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)
Armstrong, J., Virding, R., Williams, M.: Concurrent Programming in Erlang. Prentice-Hall International, Englewood Cliffs (1993)
Pereira, F., Warren, D.H.: Definite clause grammars compared with augmented transition network. Artificial Intelligence 13, 231–278 (1980)
Clark, K., McCabe, F.: Ontology representation and inference in Go! Technical report, Dept. of Computing, Imperial College, London (2003)
Roa, A.S., Georgeff, M.P.: An abstract architecture for rational agents. In: Proceedings of Knowledge Representation and Reasoning (KR&R 1992), pp. 349–349 (1992)
Clark, K.L., Robinson, P.J., Hagen, R.: Multi-threading and message communication in Qu-Prolog. Theory and Practice of Logic Programming 1, 283–301 (2001)
Tarau, P., Dahl, V.: Mobile Threads through First Order Continuations. In: Proceedings of APPAI-GULP-PRODE 1998, Coruna, Spain (1998)
Carro, M., Hermenegildo, M.: Concurrency in Prolog using Threads and a Shared Database. In: Schreye, D.D. (ed.) Proceedings of ICLP 1999, pp. 320–334. MIT Press, Cambridge (1999)
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)
Van Roy, P., Haridi, S.: Mozart: A programming system for agent applications. In: International Workshop on Distributed and Internet Programming with Logic and Constraint Languages (1999), http://www.mozart-oz.org/papers/abstracts/diplcl99.html ; Part of International Conference on Logic Programming (ICLP 1999)
Zoltan Somogyi, F.H., Conway, T.: Mercury: an efficient purely declarative logic programming language. In: Proceedings of the Australian Computer Science Conference, pp. 499–512 (1995)
LLoyd, J.W.: Programming in an integrated functional and logic programming language. Journal of Functional and Logic Programming, 1–49 (1999)
Hanus, M.: A unified computation model for functional and logic programming. In: Proc. 24st ACM Symposium on Principles of Programming Languages (POPL 1997), pp. 80–93 (1997)
Lloyd, J.: Interaction and concurrency in a declarative programming language. Unpublished report, Dept. of Computer Science, Bristol University, London (1988)
Fisher, M.: A survey of concurrent MetateM- the language and its applications. In: Gabbay, D.M., Ohlbach, H.J. (eds.) ICTL 1994. LNCS (LNAI), vol. 827, pp. 480–505. Springer, Heidelberg (1994)
Constantini, S., Tocchio, A.: A logic programming language for multi-agent systems. In: Flesca, S., Greco, S., Leone, N., Ianni, G. (eds.) JELIA 2002. LNCS (LNAI), vol. 2424, pp. 1–13. Springer, Heidelberg (2002)
Kinny, D.: VIP:A visual programming language for plan execution systems. In: 1st International Joint Conf. Autonomous Agents and Multi-agent Systems, pp. 721–728. ACM Press, New York (2002)
Roa, A.S.: AgentSpeak(L): BDI agents speak out in a logical computable language. In: Perram, J., Van de Velde, W. (eds.) MAAMAW 1996. LNCS (LNAI), vol. 1038, pp. 42–55. Springer, Heidelberg (1996)
Hindriks, K.V., de Boer, F.S., van der Hoek, W., Meyer, J.J.C.: Formal semantics for an abstract agent programming language. In: Rao, A., Singh, M.P., Wooldridge, M.J. (eds.) ATAL 1997. LNCS, vol. 1365, pp. 215–230. Springer, Heidelberg (1998)
Leite, J.A., Alferes, J.J., Pereira, L.M.: Minerva-A dynamic logic prorgamming agent architecture. In: Meyer, J.-J.C., Tambe, M. (eds.) ATAL 2001. LNCS (LNAI), vol. 2333, pp. 141–157. Springer, Heidelberg (2002)
De Giacomo, G., Lesperance, Y., Levesque, H.: Congolog, a concurrent programming language based on the situation calculus. Artificial Intelligence 1-2, 109–169 (2000)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Clark, K.L., McCabe, F.G. (2004). Go! for Multi-threaded Deliberative Agents. In: Leite, J., Omicini, A., Sterling, L., Torroni, P. (eds) Declarative Agent Languages and Technologies. DALT 2003. Lecture Notes in Computer Science(), vol 2990. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-25932-9_4
Download citation
DOI: https://doi.org/10.1007/978-3-540-25932-9_4
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-22124-1
Online ISBN: 978-3-540-25932-9
eBook Packages: Springer Book Archive