• add [ s [s 0] ] - [ s [s 0] ] .................... debugging HARD

    From Graham Cooper@grahamcooper7@gmail.com to comp.lang.prolog on Sun Apr 30 10:30:02 2023
    From Newsgroup: comp.lang.prolog

    add is super simple only 2 rules

    add( X 0 ) = X

    add( X Y+1 ) = Z+1
    <-
    add( X Y ) = Z






    add2 [ s | [ s | [ s | [ s | 0 ] ] ] ] [ s | [ s | [ s | [ s | 0 ] ] ] ]

    ENGINE 0 1 add2 [ s | [ s | [ s | [ s | 0 ] ] ] ] [ s | [ s | [ s | [ s | 0 ] ] ] ]
    add2 [ s | [ s | [ s | [ s | 0 ] ] ] ] [ s | [ s | [ s | [ s | 0 ] ] ] ]
    add2 X [ s | Y ] [ s | Z ]

    ANS2 9
    a2:9
    add2 -- add2
    [ s | [ s | [ s | [ s | 0 ] ] ] ] -- X
    -- [ s | Y ]
    [ s | [ s | [ s | [ s | 0 ] ] ] ] -- [ s | Z ]
    Z = [ s | [ s | [ s | 0 ] ] ]
    ENGINE 9 1 add2 X Y Z
    FUN:0 - 9
    TAIL:1 - 1
    add2 X Y Z
    add2 X [ s | Y ] [ s | Z ]

    ANS2 9
    a2:9
    add2 -- add2
    X -- X
    Y -- [ s | Y ]
    Z -- [ s | Z ]
    FOUND RECURSIVE POINT

    r*9*1---

    ___________________

    STACK1
    X=[ s | [ s | [ s | [ s | 0 ] ] ] ] Z=[ s | [ s | [ s | 0 ] ] ] Y=[ s | Y ] __________________
    UPTO1
    9 1
    FORWARD
    RECURSION 0
    add2 X Y Z
    LAST ANSWER 0
    X = [ s | [ s | [ s | [ s | 0 ] ] ] ]
    Y = [ s | Y ]
    Z = [ s | [ s | [ s | 0 ] ] ]
    SAVE VARS 0
    add2 [ s | [ s | [ s | [ s | 0 ] ] ] ] [ s | Y ] [ s | [ s | [ s | 0 ] ] ]
    add2 X [ s | Y ] [ s | Z ]

    ANSWER: 9
    RETRIEVE VARS 1

    [ s | [ s | [ s | [ s | 0 ] ] ] ] >> X
    Y = Y
    Y = Y
    Z = [ s | [ s | 0 ] ]
    GOBACK
    BLANKVARS
    X=[ s | [ s | [ s | [ s | 0 ] ] ] ] Y=Y Z=[ s | [ s | 0 ] ]
    __________________
    UPTO1
    9 1
    FORWARD
    RECURSION 0
    add2 X Y Z
    LAST ANSWER 0
    X = [ s | [ s | [ s | [ s | 0 ] ] ] ]
    Y = Y
    Z = [ s | [ s | 0 ] ]
    SAVE VARS 0
    add2 [ s | [ s | [ s | [ s | 0 ] ] ] ] Y [ s | [ s | 0 ] ]
    add2 X [ s | Y ] [ s | Z ]

    ANSWER: 9
    RETRIEVE VARS 1
    X=[ s | [ s | [ s | [ s | 0 ] ] ] ] Z=[ s | [ s | [ s | 0 ] ] ] Y=[ s | Y ]
    [ s | [ s | [ s | [ s | 0 ] ] ] ] >> X
    Y << [ s | Y ]
    Z = [ s | 0 ]
    GOBACK
    BLANKVARS
    X=[ s | [ s | [ s | [ s | 0 ] ] ] ] Z=[ s | 0 ] Y=[ s | Y ]
    __________________
    UPTO1
    9 1
    FORWARD
    RECURSION 0
    add2 X Y Z
    LAST ANSWER 0
    X = [ s | [ s | [ s | [ s | 0 ] ] ] ]
    Y = [ s | Y ]
    Z = [ s | 0 ]
    SAVE VARS 0
    add2 [ s | [ s | [ s | [ s | 0 ] ] ] ] [ s | Y ] [ s | 0 ]
    add2 X [ s | Y ] [ s | Z ]

    ANSWER: 9
    RETRIEVE VARS 1
    X=[ s | [ s | [ s | [ s | 0 ] ] ] ] Y=Y Z=[ s | [ s | 0 ] ]
    [ s | [ s | [ s | [ s | 0 ] ] ] ] >> X
    Y = Y
    Y = Y
    Z = 0
    GOBACK
    BLANKVARS
    X=[ s | [ s | [ s | [ s | 0 ] ] ] ] Y=Y Z=0
    __________________
    UPTO1
    9 1
    FORWARD
    RECURSION 0
    add2 X Y Z
    LAST ANSWER 0
    X = [ s | [ s | [ s | [ s | 0 ] ] ] ]
    Y = Y
    Z = 0
    SAVE VARS 0
    add2 [ s | [ s | [ s | [ s | 0 ] ] ] ] Y 0

    NO ANSWER
    X=[ s | [ s | [ s | [ s | 0 ] ] ] ] Y=Y Z=0
    RETRIEVEVARS3 -1


    NO

    --- Synchronet 3.20a-Linux NewsLink 1.114