Much of AI research is about problem-solving strategies, and several techniques have been crystalized. One such technique is constraint satisfaction or reasoning based on relations. Constraint-based reasoning is used to solve a wide field of problems, and recently constraint techniques have been incorporated into logic programming languages, yielding a whole new field of research and application: constraint logic programming. Constraint satisfaction techniques have become part of almost all introductory books on AI. This monograph is about constraint satisfaction. It differs from others in that it presents all approaches under a common, generalizing view: dynamic constraints. This new way of viewing constraints provides new insights about the different approaches, and forms a very practical basis for teaching constraint-based reasoning. A uniform view of the constraint world is also a good basis for constraint research. This text is not intended to be a self-contained textbook on constraint-based reasoning, but rather a coherent text on an interesting view of the field.