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

PROLOG-REQUEST@SCORE.STANFORD.EDU (Chuck Restivo, The Moderator) (01/17/87)

PROLOG Digest            Monday, 19 Jan 1987        Volume 5 : Issue 3

Today's Topics:
                      Programming - Bug Stories,
          Announcement - Math Logic Seminar & Thesis Defense
----------------------------------------------------------------------

Date: Mon, 12 Jan 87 10:53 EST
From: Stephen G. Rowley <SGR@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Collecting favorite bug stories

Once, as a consultant, I was developing a demonstration of expert
system programming techniques for a client.  The program was the usual
monkey-and-bananas example of planning systems.  Since I had visions
of adding more animals to that world, such as carnivores, I made both
the monkey and the bananas edible.  The monkey's reasoning went like
this:

[1] I'm hungry.
[2] I have to write a plan that ends up in my becoming non-hungry.
[3] In order to become non-hungry, I have to eat something.
[4] What's edible?  The monkey is, and the bananas are.
[5] In order to eat one of those foods, I have to first get co-located with it.
[6] Which food is easier to get co-located with?  I (the monkey) am at the same
    place as the monkey, so that makes step [5] trivial, and hence I will
    prefer to eat the monkey instead of the bananas.

The monkey then disappeared in a shocking act of auto-cannibalism.

I've remembered the bug for several years because it's a wonderful
illustration of what makes some AI systems hard to write, namely, that
humans know too much.  There's always a crucial fact you take for
granted and forget to tell your system.  It later crops up like this,
usually at the most embarassing moment possible.  (For example, you're
demonstrating a blocks-world planner to your boss, and he mis-clicks
the mouse and tells it to put a block on top of itself.  Your system
doesn't know that's unreasonable, and goes quietly crazy.  That
happened to me, too.)

The solution, of course, is to insert a constraint that forbids any
plans involving entities that eat themselves.  You can have a lot of
fun explaining to people how you "discovered" the necessity of that
rule.

Here's an example, in apocryphal Prolog (i.e., I wrote it in some
other language):

is_heuristic_plan_for(Plan, Initial_situation, ~hungry(Initial_situation)) :-
   good_to_eat(Food),
   different_objects(Food, monkey), %% this clause added to prevent
   auto-cannibalism
   at(Food, Place, Initial_situation),
   is_plan_for(At_Plan, Initial_situation, at(monkey, Place, At_plan)),
   Plan = [handle Food eat [handle Food take At_plan]].

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

Date: Fri, 16 Jan 87 20:28 EST
From: Tim Finin <Tim@cis.upenn.edu>
Subject: Mid-Atlantic Math Logic Seminar

                  MID-ATLANTIC MATHEMATICAL LOGIC SEMINAR
                     PHILADELPHIA, FEBRUARY 21-22, 1987

This meeting will be held at the University of Pennsylvania, Alumni Room,
Towne Building. Please use ground level entrance on the west side just off
Smith Walk,between 33rd and 34th Streets, south of Walnut Street.

SATURDAY, FEBRUARY 21
12 noon        Coffee and snacks
1:00 - 2:00    Dana S. Scott, Carnegie-Mellon University
                   HOW DESIRABLE IS THE REALIZABILITY UNIVERSE?
2:10 - 3:10    Albert R. Meyer, Massachusetts Institute of Technology
                   FIXED POINT AND LOOPING COMBINATORS IN POLYMORPHIC LAMBDA
                   CALCULUS
3:40 - 4:40    Peter J. Freyd, University of Pennsylvania
                   CATEGORIES AND POLYMORPHIC LAMBDA CALCULUS
4:50 - 5:50    John C. Mitchell, A.T.&T. Bell Laboratories
                   KRIPKE STRUCTURES AND TYPED LAMBDA CALCULUS

SUNDAY, FEBRUARY 22
 8:30          Coffee and doughnuts
 9:00 - 10:00  Speaker T.B.A., Cornell University
                   RECURSIVE TYPES IN THE NUPRL PROOF DEVELOPMENT SYSTEM
10:10 - 11:10  Garrel Pottinger, Odyssey Research Associates, Inc.
                   STRONG NORMALIZATION FOR TERMS OF THE COQUAND-HUET THEORY
                   OF CONSTRUCTIONS
11:25 - 12:25  Gaisi Takeuti, University of Illinois at Urbana-Champaign
                   BOUNDED ARITHMETIC AND A WEAK CONSISTENCY
12:35 -  1:35  Scott Weinstein, University of Pennsylvania
                   SOME RECENT RESULTS IN THE THEORY OF MACHINE INDUCTIVE
                   INFERENCE

ACCOMMODATIONS
A block of 10 rooms has been set aside at the Sheraton Inn University City,
Chestnut and 36th Streets (215/387-8000) for the participants of the "Logic
Meeting", Saturday night, February 21. The price per room is $64 if you make
your reservation by February 7. Private accommodations will be available for
up to 10 people with sleeping bags. Please call at least 3 days in advance
215/898-8475 or 215/545-5443.

-- Andre Scedrov

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

Date: Thu, 15 Jan 87 12:09:15 PST
From: Evan Tick <evan@umunhum.stanford.edu>
Subject: thesis defense

                     STUDIES IN PROLOG ARCHITECTURES

                             Evan Tick, Ph.D.
                        Stanford University, 1987

                        Tuesday, January 20 1987
                            12:15 PM, AEL 109

This dissertation addresses the problem of how logic programs can be made to
execute at high speeds.  Prolog, chosen as a representative logic
programming language, differs from procedural languages in that it is
applicative, nondeterminate and uses pattern matching as its primary
operation.   Program performance is directly related to memory performance
because high speed processors are ultimately limited by memory bandwidth and
architectures that require less bandwidth have greater potential for high
performance.

A derivation of a family of canonical Prolog architectures is given
from the first principles of ideal machine architectures.  The Warren
Abstract Machine (WAM) architecture is shown to be a member of this
family.  Measurements of the Prolog Canonical Interpretive Form
indicate upper memory-performance bounds afforded by ideal attributes.
Analysis of high-level architecture statistics indicate the cost of
attributes such as nondeterminacy and point to efficient memory
designs.

High speed uniprocessor performance is necessary, even within a
multiprocessor, because not all types of parallelism exist or can be
exploited in all applications.  Within a shared memory multiprocessor,
local processor memories are necessary to reduce bandwidth and allow
undegraded execution of sequential code.  Two-level hierarchies for
both sequential and parallel Prolog architectures are modeled.  Local
memories are measured with trace driven simulations.  Main memories
are measured with queueing models.  For sequential Prolog, various
hierarchies are analyzed with the WAM architecture.  For parallel
Prolog, various shared memory multiprocessors are analyzed with the
Restricted AND-Parallelism (RAP) architecture of Hermenegildo.  Local
memory consistency protocols for RAP are designed and measured.

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

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