Academic activities often result in products that can be shared and freely used, consisting mainly of software technologies — programming languages and frameworks, software infrastructures — but also including methodologies for the engineering of complex computational systems.
Below, the current list of products actively supported, ordered alphabetically.



#alchemist() is a simulation framework offering both high performance and flexibility. Alchemist tries to get the best from ABMs and stochastic simulators and build an hybrid



Arg2P (short for Arg–tuProlog) is a logic-based agreement framework enabling defeasible reasoning in intelligent systems



ALOO is a general-purpose concurrent programming language based on objects and agents as first-class abstractions. It is a Concurrent OOP language where concurrency aspects (parallelisms, asynchronous programming, etc) are modeled in terms of agent-oriented abstractions. Or, it can be conceived as an Agent-Oriented Programming language not based on logic programming - like state-of-the-art AOP languages - but on OOP. The language comes with a platform (compiler, runtime) and an Eclipse-based IDE.
ALOO is the most recent evolution of the simpAL project.


#cartago() is an infrastructure for the development and execution of artifact-based computational environments for Multi-Agent Systems.
#cartago() is based on the #aea() (Agents and Artifacts) meta-model model, which introduces the artifact abstraction as a first-class building block to model and engineer those objects, resources, tools, that can be dynamically constructed, shared and co-used by agents  to perform their activities, both individual and social.



#hm() is a prototype agent-based platform for the construction of Socio-Technical Smart Spaces and Smart Environments, starting from the control of an intelligent home to a wider Smart Living scenario, where home users are situated in space and time in the surrounding environment.
The house is seen as an intelligent environment made of independent devices that participate to an agent society: following the Butlers vision and architecture, Home Manager aims both to enable a rich interaction experience for the user in the interaction with the smart house, and to anticipate his/her needs based both on the user's habits and policies, while respecting the general system policies which capture the global goals and constraints.
The implementation is Java-based, developed on top of the TuCSoN agent infrastructure, and deployable also on low-cost devices such as Raspberry PI2. 



#moklong() (#mok() for short) is a model for knowledge self-organisation, exploiting the biochemical metaphor for its basic abstractions, and biochemical coordination as its coordination model.


MS-BioNet (MultiScale-Biochemical NETwork) is a computational framework for modelling and simulating large networks of compartments hosting a chemical solution and communicating through an enhanced model of chemical reaction addressing molecule transfer. 


P@J is a framework for enhancing interoperability between Java and Prolog, based on the #tuprolog() open-source Prolog engine for Java.
P@J achieves smoother language interoperability through two stacked layers:

  • an API layer for automated mapping of Java types into Prolog types (and viceversa) and seamless exploitation of the Generic Collections Framework;
  • an annotation layer, that aims at truly extending Java programming with the ability of specifying Prolog–based declarative implementations of Java methods, relying on Java annotations.

Space: P@J
Contact: Mirko Viroli



#respect() is a logic-based coordination language both to define the behaviour of tuple centres and to coordinate software agents. #respect() assumes a tuple-based coordination model, where communication is based on logic tuples, and the behaviour of the coordination media in response to communication events is not fixed once and for all by the coordination model, but can be defined and tailored according to system's global requirements. According to this conceptual framework, #respect() has a twofold role: 

  • as a specification language - #respect() makes it possible to filter communication events and associate them to reactions by means of first-order logic tuples.
  • as a reaction language - #respect() supports the notion of reaction as a computational activity to be executed locally to a tuple centre in response to communication events, by providing for both a logic-based syntax for the definition of reactions, and a model for their execution.



#simpa() is a framework extending the basic Java environment with an agent-oriented abstraction layer for programming complex (concurrent in particular) applications.

#simpa() is based on the #aea() (Agents and Artifacts) programming model, which introduces high-level metaphors taken from human society, namely agents - analogous to humans, as executors of activities and activities — and artifacts — analogous of the objects, resources, tools that are dynamically constructed, used, manipulated by humans to support / realise their individual and social activities.


simpAL is a general-purpose programming language and platform for developing concurrent and distributed applications. simpAL is based on the #aea() (Agents and Artifacts) programming model, which introduces high-level metaphors taken from human society, namely agents — analogous to humans, as executors of activities and activities — and artifacts — analogous of the objects, resources, tools that are dynamically constructed, used, manipulated by humans to support / realise their individual and social activities. Unlike #simpa(), simpAL is not a Java extension, but a fully independent language and platform.



#soda() (Societies in Open and Distributed Agent spaces) is a methodology for the analysis and design of complex agent-based systems. #soda() is not concerned with intra-agent issues: designing a multi-agent system with #soda() leads to defining agents in terms of their required observable behaviour and their role in the multi-agent system.
Instead, #soda() concentrated on inter-agent issues, like the engineering of societies and infrastructures for multi-agent systems.
Recently a new and extended version of the methodology has been proposed, which takes into account both the Agents and Aartifacts (#aea()) meta-model, and a mechanism to manage the complexity of system description.



Developed in collaboration with the Trauma Center and the Emergency Department of the "Bufalini" Hospital in Cesena, Italy, #traumatracker() is a project in which agent technologies are exploited to realise Personal Medical Digital Assistant Agents (PMDA) supporting a Trauma Team in trauma management operations. This project aims at exploring the fruitful integration of software personal agents with wearable/eyewear computing, based on mobile and wearable devices such as smart-glasses.

The key functionality of #traumatracker() is to keep track of relevant events occurring during the management of a trauma, for two basic purposes. The first one is about tracking, i.e. to have an accurate documentation of the trauma, to automate the creation (and management) of reports and to enable offlne data analysis. The second one is a first kind of assistance, in terms of the real-time generation of warnings and suggestions to be perceived through the smartglasses, by analysing and reasoning upon the tracked events and data. The system has been designed and developed using cognitive agent technologies based on the Belief-Desire-Intention (BDI) architecture, as supported by the JaCaMo agent platform.



#tucson() (Tuple Centres over the Network) is a model (and related infrastructure and technology) for the coordination of Internet agents.

#tucson() exploits a notion of local tuple-based interaction space, called tuple centre, which is a tuple space enhanced with the notion of behaviour specification.
By programming its behaviour in response to communication events, a tuple centre can embody coordination laws.
Several issues critical to Internet applications, such as heterogeneity and dynamicity of the Internet nodes, can then be charged upon tuple centres, and transparently to agents, which can then be designed independently of the different node architectures, according to a straightforward interaction protocol.

The #tucson() coordination language provides agents with a twofold perception of the #tucson() interaction space, as either as a global space made up of uniquely denoted coordination media, or a collection of local spaces associated to Internet nodes.
This suits both roles of Internet agents, that is, as either network-aware entities or (network-unaware) local agents.



#tuprolog() is a Java-based light-weight Prolog for Internet applications and infrastructures. For this purpose, #tuprolog() is designed to feature some interesting qualities: it is easily deployable, just requiring the presence of a Java VM and an invocation upon a single JAR file; its core is both minimal, taking the form of a tiny Java object containing only the most essential properties of a Prolog engine, and configurable, thanks to the loading and unloading of predicates, functors and operators embedded in libraries; the integration between Prolog and Java is as wide, deep, clean as possible; finally, interoperability is developed along the two main lines of Internet standard patterns and coordination models.



Products / Pages

A&A  |  Alchemist  |  Arg2P  |  ALOO  |  CArtAgO  |  Gaia  |  Home Manager  |  LPaaS  |  MS-BioNET  |  MoK  |  P@J  |  PSyKE  |  ReSpecT  |  simpA  |  simpAL  |  SODA  |  TraumaTracker  |  TuCSoN  |  tuProlog / 2P-Kt

Partita IVA: 01131710376 — Copyright © 2008–2023 APICe@DISI – PRIVACY