(VAR X Y) (RULES primes -> sieve(from(s(s(0)))) from(X) -> cons(X) head(cons(X)) -> X tail(cons(X)) -> Y if(true) -> X if(false) -> Y filter(s(s(X)),cons(Y)) -> if(divides(s(s(X)),Y)) sieve(cons(X)) -> cons(X) )