This page is primarily the place of reference for every scientific publication concerning the tuProlog engine. Besides, it also contains any other document useful to a broader comprehension of the tuProlog technology.

API JavaDoc

The API JavaDoc documentation for tuProlog 2.1 is available online.

Papers

These are the scientific articles published on the topic of tuProlog technology.

Giulio Piancastelli, Alex Benini, Andrea Omicini, Alessandro Ricci
The Architecture and Design of a Malleable Object-Oriented Prolog Engine
23th ACM Symposium on Applied Computing (SAC 2008), 16-20 March, Fortaleza, Ceará, Brazil.
Abstract: The implementation of Prolog systems has a long history, from the first interpreter written in 1972 to de facto standard model of the Warren Abstract Machine. Although many architectural variations have been proposed, object-oriented design was left mostly unexplored, favoring other factors such as execution time and memory storage optimizations. However, today complex software systems are typically built as aggregates of heterogeneous components, where logic programming may effectively help facing key issues such as intelligence of components and management of interaction. In this scenario, implementation of logic languages could just aim at reasonable ? rather than maximum ? efficiency, requiring instead configurable and flexible architectures to allow for extensions and tailoring for different application domains. tuProlog is an object-oriented Prolog engine which has been designed to feature a malleable architecture at its core, and to exhibit the typical properties of basic components for complex dynamic systems and intelligent infrastructures?such as easy deployability, lightness, and configurability. In this paper, we first describe tuProlog's malleable architecture, composed by a set of managers controlling sensible parts of the system, and operating around a minimal interpreter shaped as a Finite State Machine. Then, we support the malleability claim by discussing two possible architectural extension of the engine.
Links: Slides for the presentation held at SAC 2008

Enrico Denti, Andrea Omicini, Alessandro Ricci
Multi-paradigm Java-Prolog Integration in tuProlog
Science of Computer Programming 57(2), Elsevier Science B.V., August 2005.
Abstract: tuProlog is a Java-based Prolog engine explicitly designed to be minimal, dynamically configurable, and support full and clean Prolog/Java integration. In this paper, we discuss the tuProlog approach to Prolog/Java multi-paradigm integration. After tuProlog motivations and requirements, we present some examples of bidirectional Prolog/Java integration and discuss the model and architecture of the tuProlog system. Then, we focus on the specific issue of the access to Java resources from tuProlog, discuss the essentials of its implementation, and compare it extensively with many other relevant related approaches and systems.

Enrico Denti, Andrea Omicini, Alessandro Ricci
tuProlog: A Light-weight Prolog for Internet Applications and Infrastructures
Practical Aspects of Declarative Languages, 3rd International Symposium (PADL 2001), Las Vegas, NV, USA, 11-12 March 2001. Proceedings. LNCS 1990, Springer-Verlag, 2001.
Abstract: Intelligence and interaction are two key-issues in the engineering of today complex systems, like Internet-based ones. To make logic languages accomplish their vocation of sound enabling technologies for intelligent components, we first need their implementations to strictly meet some engineering properties such as deployability, configurability, and scalability. Then, we should provide them with a wide range of interaction capabilities, according to standards and common practices. This would make logic-based systems also viable tools to build deployable, configurable, dynamic, and possibly intelligent infrastructures. In this paper, we present tuProlog, a light-weight Java-based system allowing configurable and scalable Prolog components to be built and integrated into standard Internet applications according to a multiplicity of different interaction patterns, like JavaBeans, RMI, CORBA, and TCP/IP. Even more, tuProlog offers basic coordination capabilities in terms of logic tuple spaces, which allow complex Internet-based architectures to be designed and governed. This makes it possible to use tuProlog as the core enabling technology for Internet infrastructures ? as in the case of the TuCSoN and LuCe infrastructures for the coordination of Internet-based multi-agent systems.

Guides and Tutorials

These are other useful documents (besides official instruction manuals included in the distributions) available on a range of tuProlog related topics, from broad contextualization to tiny details and examples of running an engine.

Alessandro Ricci
tuProlog - A Java-based Prolog System for Pervasive Intelligence
Abstract: How to use, extend, and put in context the tuProlog engine.
Links: Table of contents, PDF

Giulio Piancastelli, Andrea Omicini
tuProlog 2.0: One Step Beyond
ALP Newsletter Digest 20(1), Association for Logic Programming, February-March 2007
Abstract: LP Systems Spotlight
Links: PDF

Student Thesis

The following are the thesis developed by students who contributed a great deal to shape and code the tuProlog engine. Thesis are in Italian unless otherwise noted.

Alex Benini
Estensione di un motore Prolog per la programmazione a vincoli
December 2006