LPS aims to close the gap between logical and imperative computer languages. The logic of LPS is model generation – performing actions to make goals of the logical form if antecedent then consequent true. Model generation serves as a global imperative – generating commands to make consequents true whenever antecedents become true.

LPS also includes beliefs of the logical form conclusion if conditions. Beliefs also have an imperative interpretation as procedures, which decompose problems of determining whether a conclusion is true or of making a conclusion true, to the sub-problems of determining or making the conditions true.

This combination of goals and beliefs not only unifies many different computing paradigms, but it also serves as a scaled-down model of human thinking. The representation of goals in LPS is supported by their similarity to production systems, which are one of the most widely accepted computational models of human thinking [8]. The representation of beliefs as logic programs in LPS is supported both by psychological studies of human reasoning, such as [7], and by normative models, such as [6]. It is also the basis of a recent textbook on computational thinking with Prolog [5].

There is now an online, open-source prototype of LPS, developed as part of the project CLOUT (Computational Logic for Use in Teaching), funded by Imperial College London, to support the teaching of computing and logic in schools.

The prototype has recently been  extended by the startup company Logical Contracts to facilitate the representation and execution legal contracts. Beliefs in LPS support the represention of constitutive rules, for defining legal concepts. Goals support the representation of regulatory rules, for expressing obligations and prohibitions. The event calculus ontology of LPS facilitates natural language representations of contracts.

The prototype is implemented in Prolog and running on SWI Prolog’s SWISH [9]. To try it, click here, go to the Examples menu, and click on LPS Examples, First steps with LPS or Fintech examples.


The open source of the extended prototype will be available for download in the first quarter of 2018. In the meanwhile, the open source for the CLOUT prototype is available at the LPS bitbucket site.

There is also a much simpler LPS game for teaching logic and computing to children. You can download the game from here.


For more information about LPS, go to the LPS bitbucket site or see [1,2,3,4].


1. Kowalski, R. and Sadri, F. (2015) Reactive Computing as Model Generation.
New Generation Computing, 33, 1, 33-67.

2. Kowalski, R. and Sadri, F. (2016) Programming in Logic without Logic Programming.
TPLP, 16, 269-295.

3. Kowalski, R. and Sadri, F. (2016) Introduction to LPS.

4. Kowalski, R. (2011) Computational Logic and Human Thinking – How to be Artificially Intelligent.
Cambridge University Press.

5. Levesque, H. J. (2012). Thinking as Computation: A First Course. MIT Press.

6. Pereira, L. M., & Saptawijaya, A. (2016). Programming Machine Ethics (Vol. 26). Springer.

7. Stenning, K., & Van Lambalgen, M. (2012). Human reasoning and cognitive science. MIT Press.

8. Thagard, P. (1996). Mind: Introduction to cognitive science (Vol. 4). Cambridge, MA: MIT press.

9. Jan Wielemaker, Fabrizio Riguzzi, Robert Kowalski, Torbjorn Lager, Fariba Sadri, Miguel Calejo. (2018). Using SWISH to realise interactive web based tutorials for logic based languages (submitted for publication)

Delicious Twitter Digg this StumbleUpon Facebook