# Interval contractor

In mathematics, an interval contractor (or contractor for short) [1] associated to a set X is an operator C which associates to a box [x] in Rn another box C([x]) of Rn such that the two following properties are always satisfied

A contractor associated to a constraint (such as an equation or an inequality) is a contractor associated to the set X of all x which satisfy the constraint. Contractors make it possible to improve the efficiency of branch-and-bound algorithms classically used in interval analysis.

## Properties of contractors

A contractor C is monotonic if we have ${\displaystyle [x]\subset [y]\Rightarrow C([x])\subset C([y])}$

It is minimal if for all boxes [x], we have ${\displaystyle C([x])=[[x]\cap X]}$, where [A] is the interval hull of the set A, i.e., the smallest box enclosing A.

The contractor C is thin if for all points x, ${\displaystyle C(\{x\})=\{x\}\cap X}$ where {x} denotes the degenerated box enclosing x as a single point.

The contractor C is idempotent if for all boxes [x], we have ${\displaystyle C\circ C([x])=C([x]).}$

The contractor C is convergent if for all sequences [x](k) of boxes containing x, we have ${\displaystyle [x](k)\rightarrow x\Rightarrow C([x](k))\rightarrow \{x\}\cap X.}$

## Illustration

Figure 1 represents the set X painted grey and some boxes. Some of them of degenerated, i.e., they correspond to singletons. Figure 2 represents these boxes after contraction. Note that no point of X has been removed by the contractor. The contractor is minimal for the cyan box but is pessimistic for the green one. All degenerated blue boxes are contracted to the empty box. The magenta box and the red box cannot be contracted.

Figure 1: Boxes before contraction
Figure 2: Boxes after contraction

## Contractor algebra

Some operations can be performed on contractors to build more complex contractors. [2] The intersection, the union, the composition and the repetition are defined as follows.

${\displaystyle (C_{1}\cap C_{2})([x])=C_{1}([x])\cap C_{2}([x])}$
${\displaystyle (C_{1}\cup C_{2})([x])=[C_{1}([x])\cup C_{2}([x])]}$
${\displaystyle (C_{1}\circ C_{2})([x])=C_{1}(C_{2}([x]))}$
${\displaystyle C^{\infty }([x])=C\circ C\circ C\circ \cdots \circ C([x])}$

## Building contractors

There exist different ways to build contractors associated to equations and inequalities, say, f(x) in [y]. Most of them are based on interval arithmetic. One of the most efficient and most simple is the forward/backward contractor (also called as HC4-revise). [3] [4]

The principle is to evaluate f(x) using interval arithmetic (this is the forward step). The resulting interval is intersected with [y]. A backward evaluation of f(x) is then performed in order to contract the intervals for the xi (this is the backward step). We now illustrate the principle on a simple example.

Consider the constraint ${\displaystyle (x_{1}+x_{2})\cdot x_{3}\in [1,2].}$ We can evaluate the function f(x) by introducing the two intermediate variables a and b, as follows

${\displaystyle a=x_{1}+x_{2}}$
${\displaystyle b=a\cdot x_{3}}$

The two previous constraints are called forward constraints. We get the backward constraints by taking each forward constraint in the reverse order and isolating each variable on the right hand side. We get

${\displaystyle x_{3}={\frac {b}{a}}}$
${\displaystyle a={\frac {b}{x_{3}}}}$
${\displaystyle x_{1}=a-x_{2}}$
${\displaystyle x_{2}=a-x_{1}}$

The resulting forward/backward contractor ${\displaystyle C([x_{1}],[x_{2}],[x_{3}])}$ is obtained by evaluating the forward and the backward constraints using interval analysis.

${\displaystyle [a]=[x_{1}]+[x_{2}]}$
${\displaystyle [b]=[a]\cdot [x_{3}]}$
${\displaystyle [b]=[b]\cap [1,2]}$
${\displaystyle [x_{3}]=[x_{3}]\ \cap \ {\frac {[b]}{[a]}}}$
${\displaystyle [a]=[a]\cap {\frac {[b]}{[x_{3}]}}}$
${\displaystyle [x_{1}]=[x_{1}]\ \cap \ \ [a]-[x_{2}]}$
${\displaystyle [x_{2}]=[x_{2}]\ \cap \ \ [a]-[x_{1}]}$

## References

1. {{#invoke:citation/CS1|citation |CitationClass=book }}
2. {{#invoke:Citation/CS1|citation |CitationClass=journal }}
3. {{#invoke:citation/CS1|citation |CitationClass=book }}
4. {{#invoke:citation/CS1|citation |CitationClass=book }}