(VAR X Y Z ) (RULES sel(s(X), cons(Y)) -> sel(X, Z) sel1(s(X), cons(Y)) -> sel1(X, Z) first1(s(X), cons(Y)) -> cons1(quote, first1(X, Z)) quote -> sel1(X, Z) quote1 -> first1(X, Z) sel(0, cons(X)) -> X first(0, Z) -> nil first(s(X), cons(Y)) -> cons(Y) from(X) -> cons(X) sel1(0, cons(X)) -> quote first1(0, Z) -> nil1 quote -> 01 quote1 -> cons1(quote, quote1) quote1 -> nil1 quote -> s1(quote) unquote(01) -> 0 unquote(s1(X)) -> s(unquote(X)) unquote1(nil1) -> nil unquote1(cons1(X, Z)) -> fcons(unquote(X), unquote1(Z)) fcons(X, Z) -> cons(X) )