(VAR X Y Z ) (RULES sel(s(X), cons(Y)) -> sel(X, Z) from(X) -> cons(X) first(0, Z) -> nil first(s(X), cons(Y)) -> cons(Y) sel(0, cons(X)) -> X )