Lambda the Ultimate

inactiveTopic Parallel Programming with Logic Languages
started 12/29/2002; 2:54:41 AM - last post 12/29/2002; 2:54:41 AM
Ehud Lamm - Parallel Programming with Logic Languages  blueArrow
12/29/2002; 2:54:41 AM (reads: 1117, responses: 0)
Parallel Programming with Logic Languages
Ciancarini, P. Parallel Programming with Logic Languages: a Survey. Comput. Lang., 17(4): 1992.

On the negative side,we note that the languages that have abandoned Prolog as a sequential component require a different style of programming. Moreover,stream-based communications are very badly suited for expressing many-to-one interactions. More important,we found that the metaprogramming techniques are commonly used in system programming with logic languages,but they are often inefficient for real applications. A metainterpreter slows execution by a factor of one order of magnitude for each level of interpretation. So these languages are not suitable for serious system applications.

Among the languages discussed in this survey are Aurora, Flat Concurrent Prolog, Parlog and DeltaProlog.

There are extensive studies of Concurrent Prolog and parallel logic programming in general. This is a fairly short (~32 pp.) survey.

The interaction between backtracking and concurrency is quite subtle. Consider this example (from the paper):

a(X) :- X>=0 | body1

a(X) :- X<=0 | body2

How is a(0) evaluated?

If these were Prolog clauses, if the chosen clause fails (i.e., a solution is not obtained) the other clause is later chosen by backtracking. Conversely, in parallel logic programming an arbitray clause may be chosen, and no backtracking is activated if a committed clause fails in the body.

Posted to Logic/Declerative by Ehud Lamm on 12/29/02; 3:03:45 AM