## 7.5 Hybridisation Support

### 7.5.1 Repair and Local Search: *repair*

The *repair* library allows a *tentative* value to be
associated with any variable [28].
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 chapter 13.

### 7.5.2 Hybrid: *ic_probing_for_scheduling*

For scheduling applications where the cost is dependent on each start
time, a combination of solvers can be very powerful.
For example, we can use finite domain
propagation to reason on
resources and linear constraint solving to reason on cost [7].
The *probing_for_scheduling* library supports such a combination,
via a similar user interface to the *cumulative* constraint mentioned
above in section 7.2.3.
For more details see chapter 17.