[net.lang.prolog] PROLOG Digest V4 #33

PROLOG-REQUEST@SU-SCORE.ARPA (Chuck Restivo, The Moderator) (08/06/86)

PROLOG Digest           Wednesday, 6 Aug 1986      Volume 4 : Issue 33

Today's Topics:
                       Puzzle - Farmer Problem,
                           Query - Compiler
----------------------------------------------------------------------

Date: 4 Aug 86 18:02:14 GMT
From: Mario O. Bourgoin
Subject: How should I do this?

Hello,

I  am trying   to write  a solution  program    for the Farmer
problem. Simply stated:

A farmer wants to move himself, a silver fox, a fat  goose and
some jucy grain across a river. Unfortunately, his  boat is so
tiny he  can only  take one of his things  across on any trip.
Worse   yet, an unattended  fox will   eat  a  goose, and   an
unattended goose  will eat the grain,  so the  farmer must not
leave the fox alone with the goose or the goose alone with the
grain.  What is he to do?

So far, I have stated the problem in the way outlined below. Can
someone help we to get this working? It figures out the first
alternative of moving the goose across but then starts looping
on what to do for the next move.

same(yes,1,1).
same(yes,2,2).
same(no,1,2).
same(no,2,1).

legal(state(F,X,G,A)) :-
        (same(no,X,G);same(yes,F,X)),
        (same(no,G,A);same(yes,F,G)).

linked(state(F1,X1,G1,A1),state(F2,X2,G2,A2)) :-
        same(no,F1,F2),
        (same(yes,X1,X2);(same(yes,F1,X1),same(yes,G1,G2),same
(yes,A1,A2))),
        (same(yes,G1,A2);(same(yes,F1,G1),same(yes,X1,X2),same
(yes,A1,A2))),
        (same(yes,A1,A2);(same(yes,F1,A1),same(yes,G1,G2),same
(yes,X1,X2))).

path(State1,State2) :-
        legal(State1),legal(State2),
        (linked(State1,State2);(path(State1,State3),path(State3,
State2))).

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

Date: Tue 5 Aug 86 10:15:59-CDT
From: Dave Plummer <ATP.PLUMMER@R20.UTEXAS.EDU>
Subject: Stand-alone compiler

Can anyone tell me anything about the Prolog stand-alone
compiler described in version 3 of the Edinburgh Prolog
manual?  In particular:

a] Where can I get a copy ?

b] Will it compile programs written under version 3.3 of
   Edinburgh Prolog?

c] Will it solve the following problem... My program is
   too big for the 'incore' compiler, in that when I call
   'compile(ListOfAll50Files).' with ListOfAll50Files suitably
   instantiated the compiler gives the message '? heap full'
   before finishing up.  Will the stand-alone compiler exhibit
   the same symptoms ?

Thanks you.

-- Dave

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

Date: Tue 5 Aug 86 10:35:58-PDT
From: Fernando Pereira <PEREIRA@SRI-CANDIDE.ARPA>
Subject: Re: Stand-alone compiler

That's puzzling, I don't remember there ever being a note on the
stand-alone bootstrap compiler that is used to build DEC-10/20 Prolog.
Anyway, the compiler (which I have) is not really usable for user
programs, it only works for specially prepared stand-alone programs
(like the Prolog system itself). I'm afraid your ``heap full'' problem
is the result of the limited address space of the DEC-10/20 machines
(256K words). The only solution I see for your problem is to use a
Prolog on a machine with a larger address space (VAX, Sun,...).

Sorry for the bad news...

-- Fernando

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

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