This result (SOCS-SI, SOCS Social Infrastructure) is a Java-Prolog software component which can be used to verify compliance of agent interaction to protocols written in a logic-based formalism (Social Integrity Constraints).
In open societies of agents, where agents are autonomous and heterogeneous, it is not realistic to assume that agents will always act so as to comply to interaction protocols. Thus, the need for a social infrastructure like this arises for being able to observe and check for agent compliance to interaction protocols.
SOCS-SI implements the SCIFF proof procedure (result 14298 of this project) by exploiting the Constraint Handling Rules library of SICStus Prolog and equip it with a Java-based user interface for loading protocol specifications, interacting with the environment by receiving socially relevant events generated by society members and also capable of showing generated expectations, their fulfilment or violation.
The SOCS-SI software application is composed by a set of modules. All the components except one (the SCIFF proof-procedure) are implemented in the Java language.
The core of SOCS-SI is composed by three main modules, namely:
- Event Recorder: fetches events from different sources and stores them inside the History Manager.
- History Manager: receives events from the Event Recorder and composes them into an event history.
- Social Compliance Verifier: fetches events from the History Manager and passes them to the CHR implementation of the SCIFF proof-procedure in order to check the compliance of the history to the specification.
In our model, agents communicate by exchanging messages, which are then translated into events. The Event Recorder fetches events and records them into the History Manager, where they become available to the proof procedure. As soon as the proof procedure is ready to process a new event, it fetches one from the History Manager.
The event is processed and the results of the computation are returned to the GUI. The proof-procedure then continues its computation by fetching another event if there is any available, otherwise it suspends, waiting for new events. A fourth module, named Init&Control Module provides for initialisation of all the components in the proper order. It receives as initial input a defined by the user, which will be used by the CHR implementation of the SCIFF proof-procedure in order to check the compliance of agents to the protocol specification.
For the implementation of the SCIFF proof procedure, SICStus Prolog has been chosen, for the following reasons:
- The Prolog language offers built-in facilities for the implementation of dynamic data structures and (customizable) search strategies;
- SICStus Prolog allows for state-of-the-art CLP; in particular, the CLPB, CLPFD and
CHR libraries have been exploited;
- SICStus Prolog features a bidirectional Java- Prolog interface (Jasper), which has been necessary to interface the proof-procedure with the other modules of the social demonstrator.
As the IFF proof-procedure, SCIFF specifies the proof tree, leaving the search strategy to be defined at implementation level. The implementation is based on a depth-first strategy. This choice, enabling us to tailor the implementation for the built-in computational features of Prolog, allows for a simple and efficient implementation of the proof. The Prolog-CHR module implements the transitions of the proof procedure. CHR is a rewriting system for implementing new constraints. It is based on forward rules that rewrite constraints into other constraints. By implementing the data structures of the SCIFF proof procedure as CHR constraints, SCIFF transitions can be implemented as CHR rules.