The version of G4 that we finished with was not adequate for some
difficult graphs.

The problem I think was as follows.

Suppose we have reached point A and from there we try B, but B fails.
So we try again from A, finding a new possibility, say C.  At this
point the points list of visited points includes A and C but not B.
But the point B that we tried earlier can perhaps be reached from C, and we
will explore B all over again.

To prevent this we need to keep track of all the visited points.  To
do this, a_path1 and some_path need to return the visited points as an
extra result.  And when we choose an alternative next point, in the
recursive call of same_path, we delete all the points visited from the
set "next".

There are a few other changes to preconditions resulting from checking
confidence conditions.

The results from running the tests in TG4.rsl are as follows:


[t1_12] (<.1,11,12.>,2,2)
[t1_29] (<.1,2,3,4,5,6,7,17,18,28,29.>,10,10)
[t1_39] (<.1,2,3,4,5,6,16,17,27,28,38,39.>,11,11)
[t1_49] (<.1,2,3,4,5,15,16,26,27,37,38,48,49.>,12,12)
[t0_99] (<.0,10,11,21,22,32,33,43,44,54,55,65,66,76,77,87,88,98,99.>,18,18)
[t99_0] (<.99,89,88,78,77,67,66,56,55,45,44,34,33,23,22,12,11,1,0.>,18,18)
[t1_0_99] (<.0,10,11,21,22,23,24,25,26,27,28,38,48,58,68,78,88,98,99.>,18,18)
[t1_99_0] (<.99,89,88,78,77,67,66,56,55,45,44,34,33,32,31,21,11,1,0.>,18,18)
[t2_0_99] (<.0,10,11,21,22,23,24,25,26,27,28,38,39,49,59,69,79,89,99.>,18,80)
[t2_99_0] (<.99,89,79,69,59,49,39,38,37,36,35,34,33,32,31,21,11,1,0.>,18,18)
[t3_99_0] (<.99,89,79,69,59,49,39,29,19,9,8,7,6,5,4,3,2,1,0.>,18,18)
[t3_0_99] (<.0,1,2,3,4,5,6,7,8,9,19,29,39,49,59,69,79,89,99.>,18,27)
[t4_99_0] (<.99,89,79,69,59,49,39,29,19,9,8,7,6,5,4,3,2,1,0.>,18,18)
[t4_0_99] (<.0,1,2,3,4,5,6,16,26,36,46,56,66,76,77,87,88,78,68,58,48,38,28,18,8,9,19,29,39,49,59,69,79,89,99.>,34,38)
[no_path] (<..>,-1,100)

(This is with the C++ translator.  Some of the paths with the SML
translator are slightly different.)

The first component is the path, the second the number of steps in the
path, and the third the number of steps tried.  So [t2_99_0], for
example, involves considerable back-tracking.  A memory of 80 is
needed to find the path in this case.  A memory of 100 (all the
points) is needed to discover there is no path.
