[ Jocelyn Ireson-Paine's Home Page ]


System Limit Programming, or SLP for short, is a completely wonderful way of building object-oriented programs. It's motivated by the many defects of conventional object-oriented programming, and based on category theory and sheaves — especially on some theoretical results published by Joseph Goguen in his work on General Systems Theory. His papers characterise the notion of ``object'', ``component'', and ``system'' in terms so general that they apply to any system at all, whether physical, economic, social or whatever. I'm using the everyday meaning of the word ``object'' here — the scope of this work goes far beyond objects in the sense of object-oriented programming. In mathematical terms, objects are sheaves, and the behaviour of a system is the limit of the behaviours of its components.

Mechanising this notion — an idea which arose from the need to build simulations in my AI teaching, gives us SLP, a completely declarative way of building object-oriented programs. To describe a system using SLP, you need to specify three things:

If these specifications are written in a suitable notation, an SLP-based tool can generate from it a program that simulates the entire system. SLP's theoretical foundations guarantee that if the programmer specified the objects and interactions correctly, then the result will also be correct.

The list above shows that SLP programs can be extremely modular. In essence, a program consists of little chunks of logic. Each chunk describes a particular object or interaction, and hence can be understood without knowledge of any other chunk. SLP's notion of modularisation goes further than this and allows the programmer to construct (for example) system ``skeletons'' which can be stored in files and later fetched back, filled in with the missing components, and run. In Model Master, for example, such a skeleton could act like a template describing the interaction between a set of companies and their customers and suppliers. The programmer could store this, and reuse it later, filled in with details of particular companies and markets.

Work in progress

I'm using SLP to build Web pages. Who else can say they use category theory for this!

I'm experimenting with SLP for building my AI courseware. Amongst other things, this involves the development of specification methods for abnormal behaviour of objects in simulations. [More details to be added]

It seems also that SLP can be used as a way of constructing agents, where the ``objects'' are behaviours, rather in the sense of Rodney Brooks' subsumption architecture. Some of the inheritance morphisms then correspond to subsumption. Using this notion, we can derive something rather like Nilsson's teleo-reactive agents, but can also integrate with planners and other not-necessarily reactive agents. Categorical methods will one day give us a general framework and language for unifying agent construction.

As a member of KB7, I'm also participating in the development of various SLP-based programming tools, including Model Master, Web-O-Matic, and an object-oriented logic-programming system.

Some intellectual history

Taking a view over the past century, it would be fair to say that SLP originated with General Systems Theory (GST). Very briefly, one might say that this started with the notion of feedback. Conceived to explain the behaviour of metabolic systems, the notion of feedback was soon seen to apply to other kinds of system, such as economic, electronic, and mechanical. This lead to a search for other universally-applicable properties and styles of description, from which originated the disciplines of cybernetics and General Systems Theory. To avoid misinterpretation, I stress that SLP itself has nothing to do with feedback, which is mentioned only because it is where GST began.

Goguen's work on sheaves started in GST, as an investigation into the question of what is an object — in the everyday sense of the word, not just that of OOP — and of what it means for objects to be composed into systems. He shows, using ``sheaf semantics'', how any object's behaviour can be described using a particular mathematical formalism, similar to what physicists call a phase space trajectory. The interactions between objects can be described in the same way. Given this information, together with a specification of the shape of a system — what objects it contains, and which interactions they share — it is then possible to calculate a description of the entire system's behaviour. He has applied these ideas to explaining inheritance, deadlock, and other phenomena in systems of concurrent interacting objects. His formalism is so general that it applies not only to software, but also to electronic systems, systems of interacting differential equations, and many other non-computational systems.

To know how, we need another branch of mathematics, ``category theory''. For the non category-theorist, a category is a mathematical structure, in the same way that a group, set, or vector space is. There are operations for constructing new categories and parts of categories, from old. Categories can be studied as mathematical structures in their own right, but one can also use them as ``containers'' or ``workspaces'' which hold other mathematical or computational structures, such as logics, or — as here — object and system descriptions.

[More to be added. The defects of OOP, and the idea of methodless programming.]


J. A. Goguen, Sheaf semantics for concurrent interacting objects, Math. Struct. in Comp. Science, vol. 2, pp. 159-91, 1992.
This is the most recent paper on sheaf semantics, and contains the latest version of his definitions.

13th January 1998.

[ Jocelyn Ireson-Paine's Home Page ]