Russ Abbott wrote:
In
http://cs.calstatela.edu/~wiki/index.php/Courses/CS_460/Fall_2005/Concurrent_logic_programming_in_Oz
<http://cs.calstatela.edu/%7Ewiki/index.php/Courses/CS_460/Fall_2005/Concurrent_logic_programming_in_Oz>
, I attempt to give a brief description of concurrent logic
programming in Oz. The first (and main) part is explicitly
procedural. Its procedurality bothered me enough to prompt an attempt
to offer a declarative interpretation. This seems somewhat unusual in
that it offers a declarative version of logic programming in terms of
a procedural version rather than the other way around.
If anyone has any comments, I'd be very interested.
-- Russ
Dear Russ,
Here is some extra information that can be useful for you when
completing this section.
First of all, 'concurrent logic programming' does not do any
backtracking! It is the kind
of logic programming done by the committed-choice languages (see section
5.8.1 in
the CTM book, page 394). It is very different from Prolog, which is
based on backtracking.
Prolog-style logic programming is exactly what is given by the Solve
operation of
chapter 9. The Solve operation is a kind of first-class Prolog top
level: it generates
a lazy list of solutions exactly in the order that Prolog generates
them. Section 9.7
of CTM explains how to translate Prolog programs to Oz. (Solve is
defined in
chapter 12, but you don't need to understand computation spaces to
understand
that Solve returns a lazy list of solutions in the order of depth-first
search!)
So there are two styles of logic programming that are currently popular:
- concurrent logic programming (no backtracking, committed-choice,
concurrent)
- Prolog-style logic programming (global backtracking search, sequential)
As a final comment, constraint programming works very differently from
these two
styles. It is a kind of third style. It tries to avoid search by
pruning solutions, whereas
the Prolog style does generate and test. The pruning is done in a
concurrent way, by
propagators that each observes the store and tries to do its own pruning
independently
of the others.
I hope this clarifies some things!
Peter
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users