On Thu, 6 Apr 2006, Claus Reinke wrote:

Curry does not have a constraint solver of its own. It simply delegates all constraints to the FD solver of SICStus Prolog.

or that of SWI Prolog (which prompted my attempt to install Curry).

which was implemented by..    hi, again!-)  (*)

The SWI-Prolog FD library is just a prototype implementation... looking for someone to replace it with a state-of-the-art implementation.

The all_different constraint subsumes the rules that you describe, depending on the consistency algorithm used. FD solvers implement general but efficient algorithms that are much more complex than a few simple rules.

I haven't yet been able to get Curry to work on my windows machine,
but it seems to do a straightforward translation of these constraints to Prolog > +FD solver, close to the one I've attached (an easy way to "use" external
constraint solvers from Haskell;-).
:)

the docs you pointed to state that all_different, in declarative view, simply translates into mutual inequalities between the list members, and although I don't fully understand the sources, they seem to confirm that not much more is going on.

The SWI-Prolog prototype library does nothing more than the declarative meaning, that's why it's a prototype.

State-of-the-art all_different implementations are a lot more complicated (often based on graph algorithms) to do very strong propagation.

Here is a paper about solving Sudoku with constraint (logic )
programming comparing a number of all_different algorithms and additional tricks:
http://www.computational-logic.org/iccl/master/lectures/winter05/fcp/fcp/sudoku.pdf

Cheers,

Tom

--
Tom Schrijvers

Department of Computer Science
K.U. Leuven
Celestijnenlaan 200A
B-3001 Heverlee
Belgium

tel: +32 16 327544
e-mail: [EMAIL PROTECTED]
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to