UW logo

UW Constraint-Based Systems

These pages hold the historical papers from the UW CSE constraints research group (2000 and earlier). For recent papers, see Alan Borning's recent publications page.

A constraint is a relation that should be satisfied -- for example, that a line remain horizontal, that a resistor in an electrical circuit simulation obey Ohm's Law, or that one column in a web page table be at least twice as wide as another. Constraints have been used in a variety of languages and systems, particularly in user interface toolkits, in planning and scheduling, and in simulation. Historically, UW constraints research has been in several areas, including the design and implementation of constraint solvers, applying constraints to user interface construction and to simulation, and the design and implementation of constraint programming languages.


May 2015: Here is a recently revived version of ThingLab, running in a Smalltalk-78 emulator in Javascript (source code).

July 2014: Cassowary is one of the solvers available in implementations of the Babelsberg object constraint language.

July 2011: The Cassowary constraint solver is now used as the layout engine in the Macintosh Lion OS.



We have designed a number of constraint satisfaction algorithms over the years, including DeltaBlue, SkyBlue, Indigo, Ultraviolet (is there a pattern here?), and Cassowary (I guess not). For researchers interested in experimenting with such algorithms, we recommend Cassowary; for certain applications, DeltaBlue may be useful as well.

The code for Cassowary and DeltaBlue is no longer supported, but we would still be pleased to hear about new applications of the solvers.