

DCFL – A parallelized constraint solving library for Haskell - dhaivatpandya
http://poincare.github.io/DCFL/

======
skimpycompiler
What does communication-free mean? No usage of network? There's a global state
that is updated by the workers?

~~~
dhaivatpandya
Communication Free Learning is actually a recently proposed algorithm to
resolve constraints. The research paper it originated from is here:
[http://arxiv.org/pdf/1103.3240.pdf](http://arxiv.org/pdf/1103.3240.pdf)

The "Communication Free" part of it means that we can update variables' values
in parallel without having to communicate the updated variable values between
the processes updating the variables.

~~~
deepnet
Abstract [non pdf]

Decentralized Constraint Satisfaction by K. R. Duffy, C. Bordenave, D. J.
Leith

[http://arxiv.org/abs/1103.3240](http://arxiv.org/abs/1103.3240)

------
tunesmith
Kind of a bizarre side question, would constraint solving be the right tool to
use to "solve" things like the kittens/catnip game (a civclicker variant)?
Like, at any given moment, given a goal and available resources, tell you the
"best" way to allocate your resources.

~~~
dhaivatpandya
This is an interesting question. Although I am not deeply familiar with either
of the games you mention, it seems that they are inherently time-based. There
are also some random elements to CivClicker (e.g. traders that come through).
Given these rules, I don't think a simple constraint solver would be
sufficient to "solve" the game, but it might be a part of a more complicated
solution.

However, there are lots of games that essentially only involve solving
constraints. A simple example is Sudoku.

------
imh
FYI this page looks really bad on firefox with a narrow window. It gets
jumbled around and the dark blue background on the left takes over the whole
page.

------
Apanatshka
Given that type inference can be expressed in the form of constraints, could
this be used to speed up type inference on huge programs?

~~~
dhaivatpandya
It could be, but the primary issue with the Communication Free Learning
algorithm is the fact that it is very hard to tell when a given constraint set
has no feasible solution by directly trying to solve it. That's because
Communication Free Learning is a probabilistic algorithm that is meant to
converge to a solution over time. But, if after say 10k iterations we still
haven't found a solution, that could mean that there isn't one or that we just
haven't stumbled on it yet.

However, it is possible to apply the algorithm in situations where we know
that there is a solution, at least with a pretty high degree of confidence.

