In ibex we consider in addition to variables other types of unknowns, namely: interval constants, parameters and symbolic constants. As an example, consider the following equation:
x=sin(pi/3),
where x and pi are two uncertain values whose domains are respectively (-oo,oo) and [3.141592,3.141593]. In terms of constraint modeling, x and pi do not have a different status since they are both a symbol with an attached domain.
But clearly, they must not be treated in the same way. The symbol pi is not a variable, that is, something we are looking for feasible values. It is rather as a constant, excpet that the attached value is not exactly known. We shall talk about an interval constant.
In ibex, variables, interval constants, parameters and symbolic constants are called entities. Variables are one particular type of entities.
As said above, all entities have the same status with regard to the constraints semantic: an entity is basically a leaf of the syntactical tree which is subject to uncertainty.
The point is that contractors and pavers must be able to distinguish which type of uncertainty is involved in a constraint, so that an appropriate treatment can be done. In the case of an interval constant such as [3.141592,3.141593], the best action is probably to do nothing (neither contract nor bisect it).
Of course, there may exist a specific contractor for the constraint C_p(x,y):
or for a whole class of quantified constraints. But a typical situation is that only a contractor for
(i.e., with 3 variables and no quantifier) is avalaible. If you want anyway to run a paver with this contractor to solve the initial problem, then you expect the entity p to be treated differently:
Contraction is not of prior importance, because a parameter is an entity for which values are somehow of ``no interest''. Indeed, consider a solution couple (x,y). In the way that the problem is stated, we are not really interested in the actual value of x^2+y^2. We just want to be sure that this value belongs to [5,10]. Of course, if the system also provides this value we are even more happy. But, this is not expected in the first place. If we do want to know what x^2+y^2 actually worths, it means that we are addressing the problem of solving x^2+y^2=p, where p is a variable like the others.
This distinction is crucial when the solver is looking for inner boxes. \ An inner box is a compact representation of a continuum of solutions. By not considering the dimensions of parameters in this representation, we get more chance to identify a box as an inner box.
If p is a parameter, every couple (x,y) in [6,9]x[0,1] is a solution since for such couples we have 5<= x^2+y^2<=10. Then [6,9]x[0,1] can be detected as an inner box, and no further search need to be done in this box.
Inversely, if p is a variable, it is not possible to find an inner box [x]x[y]x[p] except if [p] has a null diameter. Therefore, the same solution set than before will be represented by a large number of small border boxes, which is time consuming.
A typical example of interval constant : [3.141592,3.141593]
A interval constant is a real value that "should be fixed" but which is not because of a small uncertainty. Interval constants are mathematicaly equivalent to exist-param (they play the same role regarding a solution of the AE-system), but they are handled differently in practice. The three main distinctions are :
A symbolic constant is an interval constant that can be accessed by an identifier. The distinction between symbolic constants and interval constants only last for the syntaxical definition of a system. In particular, as soon as a system is being solved, each occurrence of the same symbolic constant is nothing but an independent interval constant (it is neither a variable nor a parameter).
1.5.5