Introduction

## 11.1 Introduction

- Using the Library

The Repair library provides two simple, fundamental features which are the basis for the development of repair algorithms and non-monotonic search methods in ECLiPSe:

- The maintenance of tentative values for the problem variables. These tentative values may together form a partial or even inconsistent tentative assignment. Modifications to, or extensions of this assignment may be applied until a correct solution is found.
- The monitoring of constraints (the so called repair constraints) for being either satisfied or violated under the current tentative assignment. Search algorithms can then access the set of constraints that are violated at any point in the search, and perform repairs by changing the tentative assignment of the problem variables.

This functionality allows the implementation of classical local search methods within a CLP environment (see Tutorial on Search Methods). However, the central aim of the Repair library is to provide a framework for the integration of repair-based search with the consistency techniques available in ECLiPSe, such as the domains and constraints of the FD library.

A more detailed description of the theory and methods that are the basis of the Repair library is available [5].

### 11.1.1 Using the Library

To use the repair library you need to load it using

>     :- lib(repair).

Normally, you will also want to load one more of the ’fd’, ’ic’, ’fd_sets’ or ’conjunto’ solvers. This is because of the notion of tenability, i.e. whether a tentative value is in a domain is checked by communicating with a different solver that keeps that domain.