From Newsgroup: comp.lang.prolog
Took me all day to get
---------- BEGIN 6 ---------
rd FROM MID
FROM = 3
MID = 5
its 1 step away from CITY 7
PROGRAM
=========
go FROM TO
:-
rd FROM TO
go FROM TO
:-
rd FROM MID
go MID TO
DATA
====
rd 1 3
rd 2 4
rd 3 5
rd 4 6
rd 5 7
TRACE
======
------ 1 0/0 -----
query :- go 1 7
------------
FROM ENV 1
---------- BEGIN 1 ---------
go 1 7
FROM = 1
TO = 7
FROMENV:1 BACKENV:1 ENV:1
------ 2 0/0 -----
go FROM TO :- rd FROM TO
------------
FROM ENV 2
---------- BEGIN 2 ---------
rd FROM TO
FROM = 1
TO = 7
****** 1 ******
FROM = 1 TO = 7
****************
****** 2 ******
FROM = 1 TO = 7
****************
PROGRAM 2
------ 3 1/1 -----
go FROM TO :- rd FROM MID go MID TO
------------
FROM ENV 3
---------- BEGIN 3 ---------
rd FROM MID
FROM = 1
MID = 3
FROM ENV 4
---------- BEGIN 4 ---------
go MID TO
MID = 3
TO = 7
FROM = 3
TO = 7
FROMENV:4 BACKENV:4 ENV:4
------ 5 0/0 -----
go FROM TO :- rd FROM TO
------------
FROM ENV 5
---------- BEGIN 5 ---------
rd FROM TO
FROM = 3
TO = 7
****** 4 ******
FROM = 3 TO = 7
****************
****** 5 ******
FROM = 3 TO = 7
****************
PROGRAM 2
------ 6 1/1 -----
go FROM TO :- rd FROM MID go MID TO
------------
FROM ENV 6
---------- BEGIN 6 ---------
rd FROM MID
FROM = 3
MID = 5
FROM ENV 7
---------- BEGIN 7 ---------
go MID TO
TO = 7
MID = FROM
TO = 7
FROMENV:7 BACKENV:7 ENV:7
------ 8 0/0 -----
go FROM TO :- rd FROM TO
------------
FROM ENV 8
---------- BEGIN 8 ---------
rd FROM TO
FROM = 1
TO = 3
****** 7 ******
FROM = 1 TO = 7 MID = FROM
****************
****** 8 ******
FROM = 1 TO = 3
****************
****** 5 ******
FROM = 3 TO = 7
****************
****** 6 ******
FROM = 1 TO = 7 MID = 5
****************
****** 2 ******
FROM = 1 TO = 7
****************
****** 3 ******
FROM = 1 TO = 7 MID = 3
****************
YES
--- Synchronet 3.20a-Linux NewsLink 1.114