Content deleted Content added
No edit summary |
Fresheneesz (talk | contribs) linking guard |
||
Line 1:
'''Concurrent constraint logic programming''' is a version of [[constraint logic programming]] aimed primarily at programming [[concurrent process]]es rather than (or in addition to) solving [[constraint satisfaction problem]]s. Goals in constraint logic programming are evaluated concurrently; a concurrent process is therefore programmed as the evaluation of a goal by the [[Interpreter (computing)|interpreter]].
Syntactically, concurrent constraints logic programs are similar to non-concurrent programs, the only exception being that clauses include
[[Constraint handling rules]] can be seen as a form of concurrent constraint logic programming, but are used for programming a constraint simplifier or solver rather than concurrent processes.
Line 9:
In constraint logic programming, the goals in the current goal are evaluated sequentially, usually proceeding in a [[LIFO]] order in which newer goals are evaluated first. The concurrent version of logic programming allows for evaluating goals in [[Parallel computing|parallel]]: every goal is evaluated by a process, and processes run concurrently. These processes interact via the constraint store: a process can add a constraint to the constraint store while another one checks whether a constraint is entailed by the store.
Adding a constraint to the store is done like in regular constraint logic programming. Checking entailment of a constraint is done via
The main difference between non-concurrent and concurrent constraint logic programming is that the first is aimed at search, while the second is aimed at implementing concurrent processes. This difference affects whether choices can be undone, whether processes are allowed not to terminate, and how goals and clause heads and equated.
|