[net.lang.prolog] Rule-Based Algorithm

marcel@uiucdcs.UUCP (11/18/83)

#N:uiucdcs:29700011:000:3285
uiucdcs!marcel    Nov 17 11:13:00 1983

I'm not sure what the algorithm-izers are looking for; they seem to know more
about what they DON'T want (no criticism intended, one has to start somewhere).
What's people's opinion of systems like Prolog/KR (Japanese effort, published
in "New Generation Computing", first issue); or of QUTE (IJCAI 83), which
merges Prolog and Lisp (IJCAI 83 also contains another - similar - attempt)?

At this point I'm not convinced that what Russ Abbott labels the "coat-tail"
approach to Prolog algorithm is inherently evil. Granted, though, that there
may be better ways to do it (eg come up with a more general formalism, one that
includes an "implementation" of 1st-order logic as a subset, as the IJCAI 83
papers try to do). As far as I know the Edinburgh Prolog interpreters were
designed to activate left-to-right just so that algorithms could be coded
reasonably efficiently. But perhaps that ought to be viewed as a cop-out, ie as
an admission of the lack of a better idea?

In my opinion the "coat-tail" approach actually has a VERY strong point in its
favour, namely that at least the procedures/algorithms are RULE-BASED. This
against Richard O'Keefe: Dykstra, Wirth and Hoare do not necessarily have the
last word in algorithmic programming. I would very much rather write small
chunks of impure Prolog than have to wade through Pascal looking for a matching
END that closes a block having 10 nested loops! Of course, Prolog doesn't have
a patent on rule-based computing, and I would be even happier with a language
that is more algorithmic AND declarative AND rule-based. So perhaps I should
be using some novel form of production system.

As it happens, that's exactly what I AM doing -- designing a language that
borrows from both Prolog and production systems, to see if their marriage can
solve some problems in both. At this point I'm receiving some very negative
comments from some referees who consider that, even though there IS a uniform
logical basis to my language (admittedly equivalence rather than implication),
and though it contains Prolog as a subset, it also contains too much provision
for procedure to be given the respect that only REAL logic deserves ...

Interestingly enough, the Japanese seem to have adopted a different stance on
that. Though (obviously) not everything they do is very aesthetic, they are
manifesting (as I see it) a strong tendency toward pragmatics and (oh dear)
"user-convenience". Perhaps TOO much of "whatever works". At which point the
quote from Wirth on language simplicity (often consonant with logical purity)
is applicable. The only way to please everybody is to come up with a pure
formalism capable of supporting both logic interpretation and algorithms.
Otherwise your paper will be rejected by approximately half its referees, and
you'll never be seen in print except in Japan!

Perhaps -- perhaps not -- we will eventually come to admit that too many
ingredients spoil the language, and will settle for a few less general
languages whose programs communicate by Unix pipes? Until then I tend to
sympathise with the Japanese and their search for a programming tool that
supports algorithms, pattern-matching, back-tracking AND rule-based knowledge
representation.

					Marcel Schoppers
					U of Illinois @ Urbana-Champaign

marcel%Ucb-Vax@uiucdcs.UUCP (11/24/83)

I'm not sure what the algorithm-izers are looking for; they seem
to know more about what they don't want (no criticism intended,
one has to start somewhere). What's people's opinion of systems
like Prolog/KR (Japanese effort, published in "New Generation
Computing", first issue); or of QUTE (IJCAI 83), which merges
Prolog and Lisp (IJCAI 83 also contains another - similar -
attempt) ?  At this point I'm not convinced that what Russ Abbott
labels the "coat-tail" approach to Prolog algorithm is inherently
evil. Granted, though, that there may be better ways to do it (E.g.
come up with a more general formalism, one that includes an
"implementation" of 1st-order logic as a subset, as the IJCAI 83
papers try to do). As far as I know the Edinburgh Prolog interpreters
were designed to activate left-to-right just so that algorithms could
be coded reasonably efficiently. But perhaps that ought to be viewed
as a cop-out, I.e. as an admission of the lack of a better idea ?

In my opinion the "coat-tail" approach actually has a very strong
point in its favour, namely that at least the procedures/algorithms
are RULE-BASED. This against Richard O'Keefe: Dykstra, Wirth and
Hoare do not necessarily have the last word in algorithmic
programming.  I would very much rather write small chunks of impure
Prolog than have to wade through Pascal looking for a matching end
that closes a block having 10 nested loops ! Of course, Prolog
doesn't  have a patent on rule-based computing, and I would be
even happier  with a language that is more algorithmic AND
declarative AND rule-based. So perhaps I should be using some novel
form of production system.

As it happens, that's exactly what I am doing -- designing a language
that borrows from both Prolog and production systems, to see if their
marriage can solve some problems in both. At this point I'm receiving
some very negative comments from some referees who consider that,
even  though there is a uniform logical basis to my language
(admittedly equivalence rather than implication), and though it
contains  Prolog as a subset, it also contains too much provision
for procedure to be given the respect that only real logic deserves
...

Interestingly enough, the Japanese seem to have adopted a different
stance on that. Though (obviously) not everything they do is very
aesthetic, they are manifesting (as I see it) a strong tendency
toward pragmatics and (oh dear) "user-convenience". Perhaps too much
of "whatever works". At which point the quote from Wirth on language
simplicity (often consonant with logical purity) is applicable. The
only way to please everybody is to come up with a pure formalism
capable of supporting both logic interpretation and algorithms.
Otherwise your paper will be rejected by approximately half its
referees, and you'll never be seen in print except in Japan !

Perhaps -- perhaps not -- we will eventually come to admit that too
many ingredients spoil the language, and will settle for a few less
general languages whose programs communicate by Unix pipes ? Until
then I tend to sympathise with the Japanese and their search for a
programming tool that supports algorithms, pattern-matching, back
tracking AND rule-based knowledge representation.

-- Marcel Schoppers
   of Illinois @ Urbana-Champaign