[comp.lang.prolog] PROLOG Digest V5 #13

PROLOG-REQUEST@SUSHI.STANFORD.EDU.UUCP (03/11/87)

PROLOG Digest           Wednesday, 11 Mar 1987     Volume 5 : Issue 13

Today's Topics:
          Query - Moss Benchmark Programs & Graphics Calls,
                   Implementation - Turbo Opinions,
                Announcement - Incomplete Information
----------------------------------------------------------------------

Date: Tue, 3 Mar 87 09:51:39 PST
From: Chuck Restivo <restivo@sushi.stanford.edu>
Subject: Benchmark Programs

I am looking for Chris Moss' set of files testing Edinburgh syntax,
assert, metacall and cut - please mail them and they'll be installed
in the Library.

-- Chuck

------------------------------

Date: 5 Mar 87 22:02:57 GMT
From: Dave Chassin <rpics!chassin@seismo.css.gov>  
Subject: Graphics Calls for C-Prolog on Sun 2

I am lookup for a modification to C-Prolog on a Sun 2 that would allow
me to make ACM Core graphics calls using prolog predicates. The
C-Prolog I am referring to is the one (and only) written at University
of Edinburgh. If anyone has heard of such an extension, please let me
know.

-- David Chassin

------------------------------

Date: 9 Mar 87 14:40:37 GMT
From: mcvax!ukc!its63b!csrdi@seismo.css.gov  
Subject: How do you like Turbo-Prolog?

Maybe I'm just spoiled rotten from living where Prolog was first
implemented, but having used three generations of Prolog interpreters I
honestly can't say that Turbo is what I think of as Prolog. When I think
Prolog, I think 'Edinburgh Syntax' - which is, after all, the de facto
standard. The notion of type checking, call it what you will, just
doesn't seeem to me to be part of Prolog.

The article forwarded by Mike Newton seem to ascribe some of these
modifications to  Fernando Pereira. If he was reponsible for these, I
must admit to some surprise since he was involved in the early
implementations of DEC-10 Prolog, and really should have known better....

-- Rick Innis 

------------------------------

Date: 8 Mar 87 07:06:47 GMT
From: J. Peter Alfke <alfke@csvax.caltech.edu>  
Subject: How do you like Turbo-Prolog? - (nf)

In article <7000002@iaoobelix.UUCP> wagner@iaoobelix.UUCP writes:
>Roughly speaking, TurboProlog is Pascal with Prolog syntax.
>(Sorry, I couldn't resist (:-)) I'd prefer a *real* Prolog.

Look, whenever I mention to anyone that I'm using Turbo-Prolog, I get
snickers and a reply just like yours.  No one ever gives any real
evidence as to WHY Turbo-Prolog is not "real" Prolog.

I'm using Turbo for my homework projects in a compiler class; I find
it's environment far far more pleasant than using C-Prolog on an
overloaded VAX.  I'm writing a compiler, and so far my difficulties
are about 80% with the Prolog language itself and 20% with differences
between Turbo and standard Prolog.

The major difference between Turbo and regular Prolog:
  *  No user-definable operators
  *  No grammar-rules (but this is just a syntactic transformation)
  *  Type-checking

Most of the abuse Turbo gets is based on the last one.  It puts me in
mind of Fortran or C hackers looking at Pascal and saying "oh, gross,
you have to *declare* variables and *keep track of types*".  The
type-checking doesn't seem to limit the power of the language, and
there are good things to be said for spelling out your data-structures
at the beginning of the program.

So please ... can someone who has honestly sat down and USED Turbo-Prolog
tell me precisely why it's not really Prolog at all.  I've been using it
for a while now and it looks just like Prolog to me ...

--Peter Alfke

------------------------------

Date: 8 Mar 87 08:19:30 GMT
From: Mike Newton <newton@csvax.caltech.edu>  
Subject: How do you like Turbo-Prolog? - (nf)

[This is a review of Turbo Prolog sent out in response to Peter
Alfke's recent comments on net.lang.prolog.  The review was originally
sent to the AI-DIGEST many months ago, but I believe that
net.lang.prolog would also be a good place for it!]

[Also, in response to Peter's comments about the speed of the VAX --
C-Prolog runs on all of our SUNS, at (*real*) speeds (see notes below)
that are much better than Turbo's]

[ Caveats to remember when reading this review: I have *not* read all
of the manual, nor used it on many programs.  Views expressed are from
the perspective of someone who has done the code generation and
evaluatable predicates for a high speed (~900 KLips on one processor
of a IBM 3090) prolog compiler.  I have no affiliation with Borland,
and only a (*very*) indirect affiliation with IBM -- MON]

From a local software store we purchased Turbo Prolog over the weekend.
It came as a cellophane wrapped book with a couple of floppies.  It cost
$69.95, list of $99.

The enviromnent was very nice.  There was a window for the editor, goals
debugging information and messages.  This seemed well done, and responded
reasonably well (I am not used to IBM-PC's.)

The unfortunate part was the Pascal-ization of the language.  Everything
had to be typed (they called it domains).  As far as I could tell, lists
had to be composed soley of other lists or elements all of one type.  One
had to define the possible terms (giving the functor) that could be
arguments to a predicate.  It seemed impossible to write generic predicates
for dealing with arbitrary types of terms.

 Ex:  to have a term that could be a 'symbol' (atom) or an integer
      one had to do this:
 
               domains
                        aori = a(atom) or i(integer)
      It was not possible to just use an atom or an integer as a subterm...

Typing each subterm of a term is not my idea of Prolog.

After about an hour we got the 'standard' timing example of naive
reverse running (Some people have used other, non-environment-creating
samples.  This is an unfair comparison).  It did 496 unifications in
aproximately 11/100 of a second.  This amounts to a speed of a little
under 5 Klips.  Considering that they do not need to do 'real'
unification (since everything is pre-typed, and thus can be reduced to
a simple test), this speed is not particularly impressive.

Also, and most seriously (thanks to Fernando Pereira) there are two
more *MAJOR* problems: the logical variable doesn't really exist: it
is a runtime error to do variable-to-variable unifications as in

                p(X,X).

                ?- p(X,Y), p(X,a).

And, it is not possible to assert clauses with variables.

In summary, I would say that there advertising is at best a
misrepresentation.  They are not selling a 'Prolog' system!  (If I
owned a TM on the word 'Prolog', I would be tempted to sue them!)

-- Mike

------------------------------

Date: Fri, 6 Mar 87 14:13:26 EST
From: Tim Finin <tim@linc.cis.upenn.edu> 
Subject: Updating Databases With Incomplete Information

                              COLLOQUIUM
                   Computer and Information Science
                      University of Pennsylvania

            UPDATING DATABASES WITH INCOMPLETE INFORMATION

                          Marianne Winslett

           Stanford University Computer Science Department

Suppose one wishes to construct, use, and maintain a database of facts
about the real world, even though the state of that world is only
partially known.  In the artificial intelligence domain, this problem
arises when an agent has a base set of beliefs that reflect partial
knowledge about the world, and then tries to incorporate new, possibly
contradictory knowledge into this set of beliefs.  In the database
domain, one facet of this situation is the well-known null values
problem.  We choose to represent such a database as a logical theory,
and view the models of the theory as representing possible states of
the world that are consistent with all known information.

How can new information be incorporated into the database?  For
example, given the new information that ``b or c is true,'' how can
one get rid of all outdated information about b and c, add the new
information, and yet in the process not disturb any other information
in the database?  In current-day database management systems, the
difficult and tedious burden of determining exactly what to add and
remove from the database is placed on the user.  The goal of our
research was to relieve users of that burden, by equipping the
database management system with update algorithms that can
automatically determine what to add and remove from the database.

Under our approach, new information about the state of the world is
input to the database management system as a well-formed formula that
the state of the world is now known to satisfy.  We have constructed
database update algorithms to interpret this update formula and
incorporate the new information represented by the formula into the
database without further assistance from the user.  In this talk we
will show how to embed the incomplete database and the incoming
information in the language of mathematical logic, explain the
semantics of our update operators, and discuss the algorithms that
implement these operators.

------------------------------

End of PROLOG Digest
********************