The repair library allows a tentative value to be associated with any variable [22]. This tentative value may violate constraints on the variable, in which case the constraint is recorded in a list of violated constraints. The repair library also supports propagation invariants [18]. Using invariants, if a variable’s tentative value is changed, the consequences of this change can be propagated to any variables whose tentative values depend on the changed one. The use of tentative values in search is illustrated in the ECLiPSe “Tutorial on Search Methods”.