(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
        
)