(VAR N X XS ) (RULES from(X) -> cons(X, from(s(X))) head(cons(X, XS)) -> X 2nd(cons(X, XS)) -> head(XS) take(0, XS) -> nil take(s(N), cons(X, XS)) -> cons(X, take(N, XS)) sel(0, cons(X, XS)) -> X sel(s(N), cons(X, XS)) -> sel(N, XS) )