When we consider the aspects of an application that involve constraints, there are a number of important points to keep in mind.
-
We need a complete and exhaustive statement of all the constraints, as a minimal part of the problem description.
-
We need a way to identify the "soft" constraints (that is, those constraints that we would like to satisfy but that we may relax or drop altogether if the problem proves intractable).
-
We must clearly separate the constraints themselves from any strategies we might adopt to solve the problem. This principle of separating the constraints from the strategies is part of the general rule of constraint programming that emphasizes making the problem representation independent of the solution search.