iCCalc  and  mcLUCA

About /  Download /  Tutorial


iCCalc is an open-source Prolog program for various kinds of reasoning tasks using the action language C+. (For details of C+, see the paper Nonmonotonic Causal Theories by Giunchiglia, Lee, Lifschitz, McCain and Turner.) C+ is a formalism for reasoning about the effects of actions on systems which evolve over time. C+ has very natural support for concurrent actions, various forms of default including default persistence, non-determinism, and other features of domains common in the literature on knowledge representation.

We have made a number of additions to the C+ language, in order to enable a more convenient representation of deontic properties, multiple agents, policies, and interactions which are temporally distant. These additions are described in the papers:

Further additions to the language, in papers shortly to be published, provide support for policies; these are different from norms, as the examples we provide will illustrate.

C+ was originally implemented using the 'Causal Calculator' CCalc. We have reimplemented it, adding support for all the language extensions referred to above, as well as a number of other features such as the visualization of labelled transition systems, a more powerful syntax for action description definitions, and the ability to be used in all main dialects of Prolog. Our new implementation is called iCCalc, and can be downloaded here.


mcLUCA is a model-checker for properties of action and agency over transition systems specified in C+. The properties are expressed in the 'Logic of Unwitting Collective Agency'. This logic, known as LUCA, is described in the papers:

LUCA enables the expression of a number of different concepts of individual and collective agency, depending on the degree to which an agent contributes to bringing about some change. The implementation is also in Prolog and uses iCCalc. For information on mcLUCA and downloading it, email the authors.


iCCalc and mcLUCA were written by Marek Sergot and Robert Craven, in the Department of Computing, Imperial College London.