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

Proof:
 Fresh Variable Processor:
  loop length: 1
  terms:
   tail(cons(X))
  context: []
  substitution:
   Y -> tail(cons(X))
  Qed