(VAR n x y ) (RULES app(nil,y) -> y app(add(n,x),y) -> add(n,app(x,y)) reverse(nil) -> nil reverse(add(n,x)) -> app(reverse(x),add(n,nil)) shuffle(nil) -> nil shuffle(add(n,x)) -> add(n,shuffle(reverse(x))) )