• Creating A PATH in miniPROLOG

    From Graham Cooper@grahamcooper7@gmail.com to comp.lang.prolog on Wed May 17 05:19:16 2023
    From Newsgroup: comp.lang.prolog

    www.miniPROLOG.com

    Here is the map, try to go from 1 to 11

    rd 1 2
    rd 2 3
    rd 3 4
    rd 4 5
    rd 5 6
    rd 3 10
    rd 10 11

    ANSWER AT END




    query :- go 1 11 PATH
    -----------
    ---------- BEGIN 2 ---------
    GOAL go 1 11 PATH
    F = 1
    T = 11
    PATH = P
    TARGET go F T P

    ****** 2 ******
    F = 1 T = 11 PATH = P
    ****************
    BIND8 go 1 11 PATH 2
    SET PATH = P

    RULE 1
    FROM = 1
    TO = 11
    P == 1
    PATH == P ==> 1
    MATCH1 go FROM TO FROM ---- go F T P
    F = 1
    T = 11
    P = 1
    RESET PATH = P
    MATCH2 go FROM TO FROM ---- go 1 11 1

    ****** 2 ******
    F = 1 T = 11 PATH = P FROM = 1 TO = 11 P = 1
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 3 ---------
    FROM = 1
    TO = 11
    GOAL rd 1 11
    NOT FOUND

    ****** 2 ******
    F = 1 T = 11 PATH = P FROM = 1 TO = 11 P = 1
    ****************

    RULE 2

    ****** 2 ******
    F = 1 T = 11 PATH = P
    ****************
    BIND8 go 1 11 PATH 2
    RESETTING PATH = P
    SET PATH = P
    SET PATH = P
    FROM = 1
    TO = 11
    P == 1
    PATH == P ==> 1
    FROM = 1
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    F = 1
    T = 11
    FROM-->1
    PTH-->PTH
    P = [ p 1 PTH ]
    RESET PATH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 1 11 [ p 1 PTH ]

    ****** 2 ******
    F = 1 T = 11 PATH = P FROM = 1 TO = 11 P = [ p 1 PTH ] ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 4 ---------
    FROM = 1
    GOAL rd 1 MID
    MID = 2
    PATH == P ==> [ p 1 PTH ]
    TARGET rd 1 2

    ****** 4 ******
    F = 1 T = 11 PATH = [ p 1 PTH ] FROM = 1 TO = 11 P = [ p 1 PTH ] MID = 2
    ****************
    ---------- BEGIN 5 ---------
    MID = 2
    TO = 11
    GOAL go 2 11 PTH
    F = 2
    T = 11
    PTH = P
    TARGET go F T P

    ****** 5 ******
    F = 2 T = 11 PTH = P
    ****************
    BIND8 go 2 11 PTH 5
    RESETTING PATH = P
    SET PTH = P
    PARAMETER P = [ p 1 PTH ]
    SET PATH = P
    PARAMETER P = [ p 1 PTH ]

    RULE 1
    FROM = 2
    TO = 11
    P == 2
    PTH == P ==> 2
    PATH == P ==> 2
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 PTH ]
    F = 2
    T = 11
    PTH-->2
    P = [ p 1 2 ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 2 11 [ p 1 2 ]

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P = [ p 1 2 ] FROM = 2 TO = 11 ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 6 ---------
    FROM = 2
    TO = 11
    GOAL rd 2 11
    NOT FOUND

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P = [ p 1 2 ] FROM = 2 TO = 11 ****************

    RULE 2

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P =
    ****************
    BIND8 go 2 11 PTH 5
    RESETTING PATH = P
    RESETTING PTH = P
    SET PTH = P
    PARAMETER P = [ p 1 PTH ]
    SET PATH = P
    PARAMETER P = [ p 1 PTH ]
    SET PTH = P
    PARAMETER P = [ p 1 PTH ]
    FROM = 2
    TO = 11
    P == 2
    PTH == P ==> 2
    PATH == P ==> 2
    FROM = 2
    TO = 11
    P = [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 PTH ]
    F = 2
    T = 11
    FROM-->2
    PTH-->[ p 2 PTH ]
    P = [ p 1 [ p 2 PTH ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 2 11 [ p 1 [ p 2 PTH ] ]

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P = [ p 1 [ p 2 PTH ] ] FROM = 2 TO = 11
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 7 ---------
    FROM = 2
    GOAL rd 2 MID
    MID = 3
    PTH == P ==> [ p 1 [ p 2 PTH ] ]
    PATH == P ==> [ p 1 [ p 2 PTH ] ]
    TARGET rd 2 3

    ****** 7 ******
    F = 2 T = 11 PTH = [ p 1 [ p 2 PTH ] ] PATH = [ p 1 [ p 2 PTH ] ] P = [ p 1 [ p 2 PTH ] ] FROM = 2 TO = 11 MID = 3
    ****************
    ---------- BEGIN 8 ---------
    MID = 3
    TO = 11
    PTH = [ p 1 [ p 2 PTH ] ]
    GOAL go 3 11 [ p 1 [ p 2 PTH ] ]
    F = 3
    T = 11
    P = [ p 1 [ p 2 PTH ] ]
    TARGET go F T P

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 PTH ] ]
    ****************
    BIND8 go 3 11 [ p 1 [ p 2 PTH ] ] 8
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 PTH ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 PTH ] ]

    RULE 1
    FROM = 3
    TO = 11
    P == 3
    PATH == P ==> 3
    PTH == P ==> 3
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 PTH ] ]
    F = 3
    T = 11
    PTH-->3
    P = [ p 1 [ p 2 3 ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 3 11 [ p 1 [ p 2 3 ] ]

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 3 ] ] PATH = P PTH = P FROM = 3 TO = 11
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 9 ---------
    FROM = 3
    TO = 11
    GOAL rd 3 11
    NOT FOUND

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 3 ] ] PATH = P PTH = P FROM = 3 TO = 11
    ****************

    RULE 2

    ****** 8 ******
    F = 3 T = 11 P = PATH = P PTH = P
    ****************
    BIND8 go 3 11 [ p 1 [ p 2 PTH ] ] 8
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 PTH ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 PTH ] ]
    FROM = 3
    TO = 11
    P == 3
    PATH == P ==> 3
    PTH == P ==> 3
    FROM = 3
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 [ p 2 PTH ] ]
    F = 3
    T = 11
    FROM-->3
    PTH-->[ p 3 PTH ]
    P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 3 11 [ p 1 [ p 2 [ p 3 PTH ] ] ]

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ] PATH = P PTH = P FROM = 3 TO = 11
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 10 ---------
    FROM = 3
    GOAL rd 3 MID
    MID = 4
    PATH == P ==> [ p 1 [ p 2 [ p 3 PTH ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 PTH ] ] ]
    TARGET rd 3 4

    ****** 10 ******
    F = 3 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ] PATH = [ p 1 [ p 2 [ p 3 PTH ] ] ] PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ] FROM = 3 TO = 11 MID = 4
    ****************
    ---------- BEGIN 11 ---------
    MID = 4
    TO = 11
    PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    GOAL go 4 11 [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 4
    T = 11
    P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    TARGET go F T P

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    ****************
    BIND8 go 4 11 [ p 1 [ p 2 [ p 3 PTH ] ] ] 11
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]

    RULE 1
    FROM = 4
    TO = 11
    P == 4
    PATH == P ==> 4
    PTH == P ==> 4
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 4
    T = 11
    PTH-->4
    P = [ p 1 [ p 2 [ p 3 4 ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 4 11 [ p 1 [ p 2 [ p 3 4 ] ] ]

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 4 ] ] ] PATH = P PTH = P FROM = 4 TO = 11
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 12 ---------
    FROM = 4
    TO = 11
    GOAL rd 4 11
    NOT FOUND

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 4 ] ] ] PATH = P PTH = P FROM = 4 TO = 11
    ****************

    RULE 2

    ****** 11 ******
    F = 4 T = 11 P = PATH = P PTH = P
    ****************
    BIND8 go 4 11 [ p 1 [ p 2 [ p 3 PTH ] ] ] 11
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    FROM = 4
    TO = 11
    P == 4
    PATH == P ==> 4
    PTH == P ==> 4
    FROM = 4
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 4
    T = 11
    FROM-->4
    PTH-->[ p 4 PTH ]
    P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 4 11 [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] PATH = P PTH = P FROM = 4 TO = 11
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 13 ---------
    FROM = 4
    GOAL rd 4 MID
    MID = 5
    PATH == P ==> [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    TARGET rd 4 5

    ****** 13 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] PATH = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] PTH = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] FROM = 4 TO = 11 MID = 5
    ****************
    ---------- BEGIN 14 ---------
    MID = 5
    TO = 11
    PTH = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    GOAL go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    F = 5
    T = 11
    P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    TARGET go F T P

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    ****************
    BIND8 go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] 14
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]

    RULE 1
    FROM = 5
    TO = 11
    P == 5
    PATH == P ==> 5
    PTH == P ==> 5
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    F = 5
    T = 11
    PTH-->5
    P = [ p 1 [ p 2 [ p 3 [ p 4 5 ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 5 ] ] ] ]

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 5 ] ] ] ] PATH = P PTH = P FROM = 5 TO = 11
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 15 ---------
    FROM = 5
    TO = 11
    GOAL rd 5 11
    NOT FOUND

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 5 ] ] ] ] PATH = P PTH = P FROM = 5 TO = 11
    ****************

    RULE 2

    ****** 14 ******
    F = 5 T = 11 P = PATH = P PTH = P
    ****************
    BIND8 go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] 14
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    FROM = 5
    TO = 11
    P == 5
    PATH == P ==> 5
    PTH == P ==> 5
    FROM = 5
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    F = 5
    T = 11
    FROM-->5
    PTH-->[ p 5 PTH ]
    P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] PATH = P PTH = P FROM = 5 TO = 11
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 16 ---------
    FROM = 5
    GOAL rd 5 MID
    MID = 6
    PATH == P ==> [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    TARGET rd 5 6

    ****** 16 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] PATH = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] PTH = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] FROM = 5 TO = 11 MID = 6
    ****************
    ---------- BEGIN 17 ---------
    MID = 6
    TO = 11
    PTH = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    GOAL go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    F = 6
    T = 11
    P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    TARGET go F T P

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] ****************
    BIND8 go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] 17
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]

    RULE 1
    FROM = 6
    TO = 11
    P == 6
    PATH == P ==> 6
    PTH == P ==> 6
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    F = 6
    T = 11
    PTH-->6
    P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 6 ] ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 6 ] ] ] ] ]

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 6 ] ] ] ] ] PATH = P PTH = P FROM = 6 TO = 11
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 18 ---------
    FROM = 6
    TO = 11
    GOAL rd 6 11
    NOT FOUND

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 6 ] ] ] ] ] PATH = P PTH = P FROM = 6 TO = 11
    ****************

    RULE 2

    ****** 17 ******
    F = 6 T = 11 P = PATH = P PTH = P
    ****************
    BIND8 go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] 17
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    FROM = 6
    TO = 11
    P == 6
    PATH == P ==> 6
    PTH == P ==> 6
    FROM = 6
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    F = 6
    T = 11
    FROM-->6
    PTH-->[ p 6 PTH ]
    P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 [ p 6 PTH ] ] ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 [ p 6 PTH ] ] ] ] ] ]

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 [ p 6 PTH ] ] ] ] ] ] PATH = P PTH = P FROM = 6 TO = 11
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 19 ---------
    FROM = 6
    GOAL rd 6 MID
    NOT FOUND

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 [ p 6 PTH ] ] ] ] ] ] PATH = P PTH = P FROM = 6 TO = 11
    ****************
    NOT FOUND
    BACKTRACK

    BACKTRACK ENV: 14 PREVPOP: 16
    backtrack params P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    backtrack reset PATH = P
    backtrack reset PTH = P
    NOT FOUND

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] PATH = P PTH = P FROM = 5 TO = 11
    ****************
    NOT FOUND
    BACKTRACK

    BACKTRACK ENV: 11 PREVPOP: 13
    backtrack params P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    backtrack reset PATH = P
    backtrack reset PTH = P
    NOT FOUND

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] PATH = P PTH = P FROM = 4 TO = 11
    ****************
    NOT FOUND
    BACKTRACK

    BACKTRACK ENV: 8 PREVPOP: 10
    backtrack params P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    backtrack reset PATH = P
    backtrack reset PTH = P
    MID = 10
    PATH == P ==> [ p 1 [ p 2 [ p 3 PTH ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 PTH ] ] ]
    TARGET rd 3 10

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ] PATH = [ p 1 [ p 2 [ p 3 PTH ] ] ] PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ] FROM = 3 TO = 11 MID = 10
    ****************
    ---------- BEGIN 20 ---------
    MID = 10
    TO = 11
    PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    GOAL go 10 11 [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 10
    T = 11
    P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    TARGET go F T P

    ****** 20 ******
    F = 10 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    ****************
    BIND8 go 10 11 [ p 1 [ p 2 [ p 3 PTH ] ] ] 20
    FETCH2 P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]

    RULE 1
    FROM = 10
    TO = 11
    P == 10
    PATH == P ==> 10
    PTH == P ==> 10
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 10
    T = 11
    PTH-->10
    P = [ p 1 [ p 2 [ p 3 10 ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 10 11 [ p 1 [ p 2 [ p 3 10 ] ] ]

    ****** 20 ******
    F = 10 T = 11 P = [ p 1 [ p 2 [ p 3 10 ] ] ] PATH = P PTH = P FROM = 10 TO = 11
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 21 ---------
    FROM = 10
    TO = 11
    GOAL rd 10 11
    PATH == P ==> [ p 1 [ p 2 [ p 3 10 ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 10 ] ] ]
    TARGET rd 10 11

    ****** 21 ******
    F = 10 T = 11 P = [ p 1 [ p 2 [ p 3 10 ] ] ] PATH = [ p 1 [ p 2 [ p 3 10 ] ] ] PTH = [ p 1 [ p 2 [ p 3 10 ] ] ] FROM = 10 TO = 11
    ****************

    ****** 20 ******
    F = 10 T = 11 P = [ p 1 [ p 2 [ p 3 10 ] ] ] PATH = P PTH = P FROM = 10 TO = 11
    ****************

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ] PATH = [ p 1 [ p 2 [ p 3 PTH ] ] ] PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ] FROM = 3 TO = 11 MID = 10
    ****************

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P = [ p 1 [ p 2 PTH ] ] FROM = 2 TO = 11
    ****************

    ****** 2 ******
    F = 1 T = 11 PATH = P FROM = 1 TO = 11 P = [ p 1 PTH ] ****************


    YES

    PATH = [ p 1 [ p 2 [ p 3 10 ] ] ]

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Graham Cooper@gr4h4m.cooper@gmail.com to comp.lang.prolog on Fri Sep 8 22:21:09 2023
    From Newsgroup: comp.lang.prolog

    On Wednesday, May 17, 2023 at 10:19:17 PM UTC+10, Graham Cooper wrote:
    www.miniPROLOG.com

    Here is the map, try to go from 1 to 11

    rd 1 2
    rd 2 3
    rd 3 4
    rd 4 5
    rd 5 6
    rd 3 10
    rd 10 11

    ANSWER AT END




    query :- go 1 11 PATH
    -----------
    ---------- BEGIN 2 ---------
    GOAL go 1 11 PATH
    F = 1
    T = 11
    PATH = P
    TARGET go F T P

    ****** 2 ******
    F = 1 T = 11 PATH = P
    ****************
    BIND8 go 1 11 PATH 2
    SET PATH = P

    RULE 1
    FROM = 1
    TO = 11
    P == 1
    PATH == P ==> 1
    MATCH1 go FROM TO FROM ---- go F T P
    F = 1
    T = 11
    P = 1
    RESET PATH = P
    MATCH2 go FROM TO FROM ---- go 1 11 1

    ****** 2 ******
    F = 1 T = 11 PATH = P FROM = 1 TO = 11 P = 1
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 3 ---------
    FROM = 1
    TO = 11
    GOAL rd 1 11
    NOT FOUND

    ****** 2 ******
    F = 1 T = 11 PATH = P FROM = 1 TO = 11 P = 1
    ****************

    RULE 2

    ****** 2 ******
    F = 1 T = 11 PATH = P
    ****************
    BIND8 go 1 11 PATH 2
    RESETTING PATH = P
    SET PATH = P
    SET PATH = P
    FROM = 1
    TO = 11
    P == 1
    PATH == P ==> 1
    FROM = 1
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    F = 1
    T = 11
    FROM-->1
    PTH-->PTH
    P = [ p 1 PTH ]
    RESET PATH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 1 11 [ p 1 PTH ]

    ****** 2 ******
    F = 1 T = 11 PATH = P FROM = 1 TO = 11 P = [ p 1 PTH ]
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 4 ---------
    FROM = 1
    GOAL rd 1 MID
    MID = 2
    PATH == P ==> [ p 1 PTH ]
    TARGET rd 1 2

    ****** 4 ******
    F = 1 T = 11 PATH = [ p 1 PTH ] FROM = 1 TO = 11 P = [ p 1 PTH ] MID = 2 ****************
    ---------- BEGIN 5 ---------
    MID = 2
    TO = 11
    GOAL go 2 11 PTH
    F = 2
    T = 11
    PTH = P
    TARGET go F T P

    ****** 5 ******
    F = 2 T = 11 PTH = P
    ****************
    BIND8 go 2 11 PTH 5
    RESETTING PATH = P
    SET PTH = P
    PARAMETER P = [ p 1 PTH ]
    SET PATH = P
    PARAMETER P = [ p 1 PTH ]

    RULE 1
    FROM = 2
    TO = 11
    P == 2
    PTH == P ==> 2
    PATH == P ==> 2
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 PTH ]
    F = 2
    T = 11
    PTH-->2
    P = [ p 1 2 ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 2 11 [ p 1 2 ]

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P = [ p 1 2 ] FROM = 2 TO = 11 ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 6 ---------
    FROM = 2
    TO = 11
    GOAL rd 2 11
    NOT FOUND

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P = [ p 1 2 ] FROM = 2 TO = 11 ****************

    RULE 2

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P =
    ****************
    BIND8 go 2 11 PTH 5
    RESETTING PATH = P
    RESETTING PTH = P
    SET PTH = P
    PARAMETER P = [ p 1 PTH ]
    SET PATH = P
    PARAMETER P = [ p 1 PTH ]
    SET PTH = P
    PARAMETER P = [ p 1 PTH ]
    FROM = 2
    TO = 11
    P == 2
    PTH == P ==> 2
    PATH == P ==> 2
    FROM = 2
    TO = 11
    P = [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 PTH ]
    F = 2
    T = 11
    FROM-->2
    PTH-->[ p 2 PTH ]
    P = [ p 1 [ p 2 PTH ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 2 11 [ p 1 [ p 2 PTH ] ]

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P = [ p 1 [ p 2 PTH ] ] FROM = 2 TO = 11 ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 7 ---------
    FROM = 2
    GOAL rd 2 MID
    MID = 3
    PTH == P ==> [ p 1 [ p 2 PTH ] ]
    PATH == P ==> [ p 1 [ p 2 PTH ] ]
    TARGET rd 2 3

    ****** 7 ******
    F = 2 T = 11 PTH = [ p 1 [ p 2 PTH ] ] PATH = [ p 1 [ p 2 PTH ] ] P = [ p 1 [ p 2 PTH ] ] FROM = 2 TO = 11 MID = 3
    ****************
    ---------- BEGIN 8 ---------
    MID = 3
    TO = 11
    PTH = [ p 1 [ p 2 PTH ] ]
    GOAL go 3 11 [ p 1 [ p 2 PTH ] ]
    F = 3
    T = 11
    P = [ p 1 [ p 2 PTH ] ]
    TARGET go F T P

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 PTH ] ]
    ****************
    BIND8 go 3 11 [ p 1 [ p 2 PTH ] ] 8
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 PTH ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 PTH ] ]

    RULE 1
    FROM = 3
    TO = 11
    P == 3
    PATH == P ==> 3
    PTH == P ==> 3
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 PTH ] ]
    F = 3
    T = 11
    PTH-->3
    P = [ p 1 [ p 2 3 ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 3 11 [ p 1 [ p 2 3 ] ]

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 3 ] ] PATH = P PTH = P FROM = 3 TO = 11 ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 9 ---------
    FROM = 3
    TO = 11
    GOAL rd 3 11
    NOT FOUND

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 3 ] ] PATH = P PTH = P FROM = 3 TO = 11 ****************

    RULE 2

    ****** 8 ******
    F = 3 T = 11 P = PATH = P PTH = P
    ****************
    BIND8 go 3 11 [ p 1 [ p 2 PTH ] ] 8
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 PTH ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 PTH ] ]
    FROM = 3
    TO = 11
    P == 3
    PATH == P ==> 3
    PTH == P ==> 3
    FROM = 3
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 [ p 2 PTH ] ]
    F = 3
    T = 11
    FROM-->3
    PTH-->[ p 3 PTH ]
    P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 3 11 [ p 1 [ p 2 [ p 3 PTH ] ] ]

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ] PATH = P PTH = P FROM = 3 TO = 11
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 10 ---------
    FROM = 3
    GOAL rd 3 MID
    MID = 4
    PATH == P ==> [ p 1 [ p 2 [ p 3 PTH ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 PTH ] ] ]
    TARGET rd 3 4

    ****** 10 ******
    F = 3 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ] PATH = [ p 1 [ p 2 [ p 3 PTH ] ] ] PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ] FROM = 3 TO = 11 MID = 4
    ****************
    ---------- BEGIN 11 ---------
    MID = 4
    TO = 11
    PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    GOAL go 4 11 [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 4
    T = 11
    P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    TARGET go F T P

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    ****************
    BIND8 go 4 11 [ p 1 [ p 2 [ p 3 PTH ] ] ] 11
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]

    RULE 1
    FROM = 4
    TO = 11
    P == 4
    PATH == P ==> 4
    PTH == P ==> 4
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 4
    T = 11
    PTH-->4
    P = [ p 1 [ p 2 [ p 3 4 ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 4 11 [ p 1 [ p 2 [ p 3 4 ] ] ]

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 4 ] ] ] PATH = P PTH = P FROM = 4 TO = 11 ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 12 ---------
    FROM = 4
    TO = 11
    GOAL rd 4 11
    NOT FOUND

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 4 ] ] ] PATH = P PTH = P FROM = 4 TO = 11 ****************

    RULE 2

    ****** 11 ******
    F = 4 T = 11 P = PATH = P PTH = P
    ****************
    BIND8 go 4 11 [ p 1 [ p 2 [ p 3 PTH ] ] ] 11
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    FROM = 4
    TO = 11
    P == 4
    PATH == P ==> 4
    PTH == P ==> 4
    FROM = 4
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 4
    T = 11
    FROM-->4
    PTH-->[ p 4 PTH ]
    P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 4 11 [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] PATH = P PTH = P FROM = 4 TO = 11
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 13 ---------
    FROM = 4
    GOAL rd 4 MID
    MID = 5
    PATH == P ==> [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    TARGET rd 4 5

    ****** 13 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] PATH = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] PTH = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] FROM = 4 TO = 11 MID = 5
    ****************
    ---------- BEGIN 14 ---------
    MID = 5
    TO = 11
    PTH = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    GOAL go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    F = 5
    T = 11
    P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    TARGET go F T P

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    ****************
    BIND8 go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] 14
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]

    RULE 1
    FROM = 5
    TO = 11
    P == 5
    PATH == P ==> 5
    PTH == P ==> 5
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    F = 5
    T = 11
    PTH-->5
    P = [ p 1 [ p 2 [ p 3 [ p 4 5 ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 5 ] ] ] ]

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 5 ] ] ] ] PATH = P PTH = P FROM = 5 TO = 11
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 15 ---------
    FROM = 5
    TO = 11
    GOAL rd 5 11
    NOT FOUND

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 5 ] ] ] ] PATH = P PTH = P FROM = 5 TO = 11
    ****************

    RULE 2

    ****** 14 ******
    F = 5 T = 11 P = PATH = P PTH = P
    ****************
    BIND8 go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] 14
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    FROM = 5
    TO = 11
    P == 5
    PATH == P ==> 5
    PTH == P ==> 5
    FROM = 5
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    F = 5
    T = 11
    FROM-->5
    PTH-->[ p 5 PTH ]
    P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 5 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] PATH = P PTH = P FROM = 5 TO = 11
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 16 ---------
    FROM = 5
    GOAL rd 5 MID
    MID = 6
    PATH == P ==> [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    TARGET rd 5 6

    ****** 16 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] PATH = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] PTH = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] FROM = 5 TO = 11 MID = 6
    ****************
    ---------- BEGIN 17 ---------
    MID = 6
    TO = 11
    PTH = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    GOAL go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    F = 6
    T = 11
    P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    TARGET go F T P

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] ****************
    BIND8 go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] 17
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]

    RULE 1
    FROM = 6
    TO = 11
    P == 6
    PATH == P ==> 6
    PTH == P ==> 6
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    F = 6
    T = 11
    PTH-->6
    P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 6 ] ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 6 ] ] ] ] ]

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 6 ] ] ] ] ] PATH = P PTH = P FROM = 6 TO = 11
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 18 ---------
    FROM = 6
    TO = 11
    GOAL rd 6 11
    NOT FOUND

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 6 ] ] ] ] ] PATH = P PTH = P FROM = 6 TO = 11
    ****************

    RULE 2

    ****** 17 ******
    F = 6 T = 11 P = PATH = P PTH = P
    ****************
    BIND8 go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] 17
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    FROM = 6
    TO = 11
    P == 6
    PATH == P ==> 6
    PTH == P ==> 6
    FROM = 6
    TO = 11
    P = [ p FROM PTH ]
    PATH == P ==> [ p FROM PTH ]
    PTH == P ==> [ p FROM PTH ]
    MATCH1 go FROM TO [ p FROM PTH ] ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    F = 6
    T = 11
    FROM-->6
    PTH-->[ p 6 PTH ]
    P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 [ p 6 PTH ] ] ] ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO [ p FROM PTH ] ---- go 6 11 [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 [ p 6 PTH ] ] ] ] ] ]

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 [ p 6 PTH ] ] ] ] ] ] PATH = P PTH = P FROM = 6 TO = 11
    ****************
    -----------
    go FROM TO [ p FROM PTH ] :- rd FROM MID go MID TO PTH
    -----------
    ---------- BEGIN 19 ---------
    FROM = 6
    GOAL rd 6 MID
    NOT FOUND

    ****** 17 ******
    F = 6 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 [ p 6 PTH ] ] ] ] ] ] PATH = P PTH = P FROM = 6 TO = 11
    ****************
    NOT FOUND
    BACKTRACK

    BACKTRACK ENV: 14 PREVPOP: 16
    backtrack params P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ]
    backtrack reset PATH = P
    backtrack reset PTH = P
    NOT FOUND

    ****** 14 ******
    F = 5 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 [ p 5 PTH ] ] ] ] ] PATH = P PTH = P FROM = 5 TO = 11
    ****************
    NOT FOUND
    BACKTRACK

    BACKTRACK ENV: 11 PREVPOP: 13
    backtrack params P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ]
    backtrack reset PATH = P
    backtrack reset PTH = P
    NOT FOUND

    ****** 11 ******
    F = 4 T = 11 P = [ p 1 [ p 2 [ p 3 [ p 4 PTH ] ] ] ] PATH = P PTH = P FROM = 4 TO = 11
    ****************
    NOT FOUND
    BACKTRACK

    BACKTRACK ENV: 8 PREVPOP: 10
    backtrack params P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    backtrack reset PATH = P
    backtrack reset PTH = P
    MID = 10
    PATH == P ==> [ p 1 [ p 2 [ p 3 PTH ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 PTH ] ] ]
    TARGET rd 3 10

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ] PATH = [ p 1 [ p 2 [ p 3 PTH ] ] ] PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ] FROM = 3 TO = 11 MID = 10
    ****************
    ---------- BEGIN 20 ---------
    MID = 10
    TO = 11
    PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    GOAL go 10 11 [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 10
    T = 11
    P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    TARGET go F T P

    ****** 20 ******
    F = 10 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    ****************
    BIND8 go 10 11 [ p 1 [ p 2 [ p 3 PTH ] ] ] 20
    FETCH2 P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    RESETTING PATH = P
    RESETTING PTH = P
    SET PATH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    SET PTH = P
    PARAMETER P = [ p 1 [ p 2 [ p 3 PTH ] ] ]

    RULE 1
    FROM = 10
    TO = 11
    P == 10
    PATH == P ==> 10
    PTH == P ==> 10
    MATCH1 go FROM TO FROM ---- go F T P
    FETCH P = [ p 1 [ p 2 [ p 3 PTH ] ] ]
    F = 10
    T = 11
    PTH-->10
    P = [ p 1 [ p 2 [ p 3 10 ] ] ]
    RESET PATH = P
    RESET PTH = P
    MATCH2 go FROM TO FROM ---- go 10 11 [ p 1 [ p 2 [ p 3 10 ] ] ]

    ****** 20 ******
    F = 10 T = 11 P = [ p 1 [ p 2 [ p 3 10 ] ] ] PATH = P PTH = P FROM = 10 TO = 11
    ****************
    -----------
    go FROM TO FROM :- rd FROM TO
    -----------
    ---------- BEGIN 21 ---------
    FROM = 10
    TO = 11
    GOAL rd 10 11
    PATH == P ==> [ p 1 [ p 2 [ p 3 10 ] ] ]
    PTH == P ==> [ p 1 [ p 2 [ p 3 10 ] ] ]
    TARGET rd 10 11

    ****** 21 ******
    F = 10 T = 11 P = [ p 1 [ p 2 [ p 3 10 ] ] ] PATH = [ p 1 [ p 2 [ p 3 10 ] ] ] PTH = [ p 1 [ p 2 [ p 3 10 ] ] ] FROM = 10 TO = 11
    ****************

    ****** 20 ******
    F = 10 T = 11 P = [ p 1 [ p 2 [ p 3 10 ] ] ] PATH = P PTH = P FROM = 10 TO = 11
    ****************

    ****** 8 ******
    F = 3 T = 11 P = [ p 1 [ p 2 [ p 3 PTH ] ] ] PATH = [ p 1 [ p 2 [ p 3 PTH ] ] ] PTH = [ p 1 [ p 2 [ p 3 PTH ] ] ] FROM = 3 TO = 11 MID = 10
    ****************

    ****** 5 ******
    F = 2 T = 11 PTH = P PATH = P P = [ p 1 [ p 2 PTH ] ] FROM = 2 TO = 11 ****************

    ****** 2 ******
    F = 1 T = 11 PATH = P FROM = 1 TO = 11 P = [ p 1 PTH ]
    ****************


    YES

    PATH = [ p 1 [ p 2 [ p 3 10 ] ] ]
    --- Synchronet 3.20a-Linux NewsLink 1.114