LPS aims to fill the gap between logical and imperative computer languages. Its logical nature is reflected by  viewing computation as performing actions to make goals of the logical form if antecedent then consequent true. Its imperative nature is reflected by using goals to generate commands to make consequents true whenever antecedents become true.

LPS also includes beliefs of the form conclusion if conditions. In addition to their purely logical interpretation, beliefs also have an imperative interpretation as procedures, which decompose the problem of determining whether a conclusion is true or of making a conclusion true, to the sub-problem 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 is implemented in Prolog and running on SWI Prolog’s SWISH. To try it, click here, go to the Examples menu, and click on LPS Examples or on First steps with LPS.

To download the software, go to 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.

Delicious Twitter Digg this StumbleUpon Facebook