This manual reports some of the errors the user can get using SCIFF.
Example:
! Representation error in user:'t>=u+c'/3
! CLPFD integer overflow
! goal: 't>=u+c'(_2536,_2473,1)
This derives from the way SICStus represents domains in CLP(FD). You can reproduce the error with the following query at the SICStus prompt:
?- X #> Y, Y #> X, X #> 0.
The previous query should logically fail, but in SICStus it first proves that since X must be at least 1, Y must be at least 2, so X should be at least 3, ... until you get an integer overflow.
One solution is to ask SICStus to fail in case of CLPFD overflow, instead of reporting an error. This can be done with the goal
This can be quite slow; in general it is advisable to give a domain to all CLPFD variables.
Another possibility is to use a different constraint solver.
The r_solver
should not suffer from this problem.
This is due to SICStus; you can force SICStus to show all constraints with the following goal:
! Type error in argument 2 of = /2 ! 'a real number' expected, but 10 found ! goal: _135=10
This error can occur if the r_solver
is used.
See the documentation for the solvers.