2.5. Reformulating global constraints as a conjunction

Many global constraints can be reformulated as a conjunction of global or reified constraints. The slot Reformulation provides for some global constraints such reformulations (see for instance the reformulation slots respectively associated with the πšŒπš˜πš•πš˜πšžπš›πšŽπš_πšŒπšžπš–πšžπš•πšŠπšπš’πšŸπšŽ or the πšπš›πšŽπšŽ constraints). When it exists, the corresponding code is available in the β€œ.pl file” attached to a constraint. The initial concrete motivation for providing reformulations was triggered by the fact that it is usually an easy way to have a first implementation of a constraint, which is a feature we want to have in the context of the catalogue. However many reformulations (e.g.,Β πšŠπš•πš•πšπš’πšπšπšŽπš›πšŽπš—πš, πš—πšŸπšŠπš•πšžπšŽ, πšπš›πšŽπšŽ) involve a quadratic (or even more) number of variables and/or constraints, which does not scale in practice when one wants to handle constraints with thousands of variables. This is why many filtering algorithms compute again and again common quantities that would require too much memory if stored explicitly.