Systematic use of constraints in programming has started in the eighties. Constraint programming has been successfully applied in numerous domains. Current research in this area deals with various foundational issues, with implementation aspects and with new applications of constraint programming. A constraint thus restricts the possible values that variables can take, it represents some partial information about the variables of interest. Now, one may move the square or the circle and he or she is still able to maintain the relation between these two objects.
Constraints arise naturally in most areas of human endeavor.
The three angles of a triangle sum to 180 degrees, the sum of the currents floating into a node must equal zero, the position of the scroller in the window scrollbar must reflect the visible part of the underlying document, these are some examples of constraints which appear in the real world. Thus, constraints are a natural medium for people to express problems in many fields. Constraint programming is the study of computational systems based on constraints. Work in this area can be tracked back to research in Artificial Intelligence and Computer Graphics in the sixties and seventies. Only in the last decade, however, has there emerged a growing realization that these ideas provide the basis for a powerful approach to programming, modeling and problem solving and that different efforts to exploit these ideas can be unified under a common conceptual and practical framework, constraint programming .