The constraint instantiation represents a set of unary constraints corresponding to variable assignments. There are three main interests in introducing it. First, when modeling, rather often we need to instantiate a subset of variables (for example, for taking some hints/clues into consideration, or for breaking some symmetries). It is simpler, more natural and informative to post a constraint instantiation than a set of unary constraints intension. Second, instantiations can be used to represent partial search instantiations that can be directly injected into XCSP3 instances. Third, instantiations allow us to represent solutions, as explained in another section, having this way the output of the format made compatible with the input.
The constraint instantiation ensures that the ith variable x of list is assigned the ith value of values. Every variable can only occur once in list.
instantiation> <list> (intVar wspace)+ </list> <values> (intVal wspace)+ </values> </instantiation>
In our example below, we have a first constraint that enforces x=12, y=4 and z=30, and a second constraint involving an array w of 6 variables such that w=1, w=0, w=2, w=1, w=3, w=1.
<instantiation> <list> x y z </list> <values> 12 4 30 </values> </instantiation> <instantiation> <list> w </list> <values> 1 0 2 1 3 1 </values> </instantiation>