Savile Row

Taking its name from the famous street in London, Savile Row is our constraint model tailor. Savile Row takes as input constraint models in the solver-independent modelling language Essence’. These models may be produced automatically by our tool Conjure, or written directly by the user. Savile Row translates (tailors) a given model into input suitable for a particular constraint solver, such as our own solver Minion.

During the translation process, Savile Row applies some reformulations to improve the model. One interesting example is common subexpression elimination (CSE). If the same (or equivalent) expression appears in different parts of a model, CSE replaces the expression with a single variable everywhere it appears. In this way it connects together different expressions in the model. This often improves constraint propagation, and even when it does not do that it can improve the efficiency of a solver by reducing the number of constraints to propagate.

For further information, see the Savile Row page: