Re: CLP(FD): what is necessary?



bart demoen <bmd@xxxxxxxxxxxxxx> writes:
On Thu, 13 Mar 2008 13:50:47 +0000, Ulrich Neumerkel wrote:

The achievements of Markus Triska's clpfd implementation in SWI
so far have been to provide the basic constraints in a clean
and robust fashion with highlights as:

* Correctness: Similar to SICStus Prolog open domains are possible
thus extending CLP(FD) towards CLP(Z).

While I appreciate what you meant to write, I disagree with naming
this "correctness" - didn't I send a bug report to Markus recently
that pointed out something not quite correct in the SWI clpfd package,
and that was not caught by any of your testing ? It was unrelated to
the FD versus Z issue.
Please do not name something correct if it isn't [no blame is intended
towards Markus].

What is correct in SICStus and SWI is the interface that permits
open domains - certainly not the implementation itself. If the
interface as such is incorrect, no implementation, no matter how
good, will ever be able to overcome these shortcomings.

Concerning the correctness of the implementation, I am certainly
dissatisfied with the current state offering inherently incomplete
testing as the only choice. Still I am very happy about the
feedback of attentive observers!

For similar reasons I am interested in a global constraint
interface that guarantees as many constraint-properties as possible.

* Favourable termination properties: All predicates and
constraints in SWI's library(clpfd) terminate.

I would only name this favourable, if you have a proof that some
predicates or constraints in X's library(clpfd) don't - for any other X.

Try X #> Y, Y #> X, X #> 0 in your favorite system. Termination
can only be observed as an overflow of the domain. In some sense
any propagation mechanism over integers terminates as it will continue
only if some bound has been reduced thus resulting eventually
in a resource overflow. I hope we agree that such cases should
not be considered terminating.

.