Constraint hierarchies

Constraints allow programmers and users to state declaratively a relation that should be maintained, rather than requiring them to write procedures to maintain the relation themselves. They are thus useful in such applications as programming languages, user interface toolkits, and simulation packages. In many situations, it is desirable to be able to state bothrequired andpreferential constraints. The required constraints must hold. Since the other constraints are merely preferences, the system should try to satisfy them if possible, but no error condition arises if it cannot. Aconstraint hierarchy consists of a set of constraints, each labeled as either required or preferred at some strength. An arbitrary number of different strengths is allowed. In the discussion of a theory of constraint hierarchies, we present alternate ways of selecting among competing possible solutions, and prove a number of propositions about the relations among these alternatives. We then outline algorithms for satisfying constraint hierarchies, and ways in which we have used constraint hierarchies in a number of programming languages and systems.

[1]  Greg Nelson,et al.  Juno, a constraint-based graphics system , 1985, SIGGRAPH.

[2]  Alain Colmerauer,et al.  An introduction to Prolog III , 1989, CACM.

[3]  Brad A. Myers,et al.  The importance of pointer variables in constraint models , 1991, UIST '91.

[4]  Paul S. Barth An object-oriented approach to graphical interfaces , 1986, TOGS.

[5]  Roland H. C. Yap,et al.  The CLP( R ) language and system , 1992, TOPL.

[6]  Frances Paulisch,et al.  Using constraints to achieve stability in automatic graph layout algorithms , 1990, CHI '90.

[7]  Alan Borning,et al.  The Programming Language Aspects of ThingLab, a Constraint-Oriented Simulation Laboratory , 1981, TOPL.

[8]  Ehud Shapiro Concurrent Prolog: A Progress Report , 1986, Computer.

[9]  Bjørn N. Freeman-Benson,et al.  An incremental constraint solver , 1990, CACM.

[10]  Jean-Claude Latombe,et al.  Making Compromises Among Antagonist Constraints in a Planner , 1985, Artif. Intell..

[11]  James P. Ignizio,et al.  Generalized goal programming An overview , 1983, Comput. Oper. Res..

[12]  David Maier,et al.  The Filter Browser Defining Interfaces Graphically , 1987, ECOOP.

[13]  Robert M. Haralick,et al.  Structural Descriptions and Inexact Matching , 1981, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[14]  Bjørn N. Freeman-Benson,et al.  Integrating Constraints with an Object-Oriented Language , 1992, ECOOP.

[15]  Ivan E. Sutherland,et al.  Sketchpad a Man-Machine Graphical Communication System , 1899, Outstanding Dissertations in the Computer Sciences.

[16]  Satoshi Matsuoka,et al.  A general framework for Bi-directional translation between abstract and pictorial data , 1991, UIST '91.

[17]  Alan K. Mackworth Consistency in Networks of Relations , 1977, Artif. Intell..

[18]  Alan Borning Graphically Defining New Building Blocks in Thinglab , 1987, SGCH.

[19]  Jacques Cohen,et al.  Constraint logic programming languages , 1990, CACM.

[20]  Prakash Panangaden,et al.  The semantic foundations of concurrent constraint programming , 1991, POPL '91.

[21]  Roger B. Dannenberg,et al.  Garnet: comprehensive support for graphical, highly interactive user interfaces , 1990, Computer.

[22]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[23]  Satoru Kawai,et al.  A general framework for visualizing abstract objects and relations , 1991, TOGS.

[24]  Andreas Buja,et al.  Painting multiple views of complex objects , 1990, OOPSLA/ECOOP '90.

[25]  Christopher J. Van Wyk,et al.  A High-Level Language for Specifying Pictures , 1982, TOGS.

[26]  Ellis S. Cohen,et al.  Constraint-Based Tiled Windows , 1986, IEEE Computer Graphics and Applications.