# CtcBox: $$\mathcal{C}_{box}$$¶

The $$\mathcal{C}_{box}$$ is contracting IntervalVector around a support box of $$\mathbb{R}^n$$. This contractor is based on the inverse of a canonical injection between the provided box and $$\mathbb{R}^n$$.

## Definition¶

Important

$\iota^{-1}_\mathbf{b} : \mathbb{R}^n \hookrightarrow \mathbf{b} : x \mapsto x \longrightarrow \mathcal{C}_{box}\big([\mathbf{b}]\big)$
c = CtcBox(b)
c.contract(x)

CtcBox c(b);
c.contract(x);


Optimality

This contractor is optimal as it is based on intersection between boxes which is optimal and does not add any pessimism.

## Example¶

Let consider a box $$\mathbf{b} = ((1, 2), (3, 4))$$ around which we want to contract boxes.

b = IntervalVector([[1, 2], [3, 4]])
ctc_box = CtcBox(b)

x1 = IntervalVector([[0, 3], [2, 5]])
x2 = IntervalVector([[1.5, 3.5], [3.5, 6.5]])

ctc_box.contract(x1)
ctc_box.contract(x2)

IntervalVector b{{1, 2}, {3, 4}};
CtcBox ctc_box(b);

IntervalVector x1{{0, 3}, {2, 5}};
IntervalVector x2{{1.5, 3.5}, {3.5, 6.5}};

ctc_box.contract(x1);
ctc_box.contract(x2);