ThingLab is a system that provides an object-oriented environment for building simulations. Within this environment, part-whole and inheritance hierarchies are used to describe the structure of a simulation, while constraints are employed as a way of describing the relations among its parts.


One of the principal goals of this research has been to design and implement a language that helps the user describe complex simulations easily. Constraints are a particularly important tool for dealing with complexity, because they allow the user to specify independently all the relations to be maintained, leaving it up to the system to plan exactly how the constraints are to be satisfied.


ThingLab is implemented in the Smalltalk-76 programming language, and runs on a personal computer. Among the things that have been simulated using the system are constrained geometric objects, a bridge under load, electrical circuits, documents with constraints on their layout and content, and a graphical calculator.