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