Input TRS: 1: a__primes() -> a__sieve(a__from(s(s(0())))) 2: a__from(X) -> cons(mark(X),from(s(X))) 3: a__head(cons(X,Y)) -> mark(X) 4: a__tail(cons(X,Y)) -> mark(Y) 5: a__if(true(),X,Y) -> mark(X) 6: a__if(false(),X,Y) -> mark(Y) 7: a__filter(s(s(X)),cons(Y,Z)) -> a__if(divides(s(s(mark(X))),mark(Y)),filter(s(s(X)),Z),cons(Y,filter(X,sieve(Y)))) 8: a__sieve(cons(X,Y)) -> cons(mark(X),filter(X,sieve(Y))) 9: mark(primes()) -> a__primes() 10: mark(sieve(X)) -> a__sieve(mark(X)) 11: mark(from(X)) -> a__from(mark(X)) 12: mark(head(X)) -> a__head(mark(X)) 13: mark(tail(X)) -> a__tail(mark(X)) 14: mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3) 15: mark(filter(X1,X2)) -> a__filter(mark(X1),mark(X2)) 16: mark(s(X)) -> s(mark(X)) 17: mark(0()) -> 0() 18: mark(cons(X1,X2)) -> cons(mark(X1),X2) 19: mark(true()) -> true() 20: mark(false()) -> false() 21: mark(divides(X1,X2)) -> divides(mark(X1),mark(X2)) 22: a__primes() -> primes() 23: a__sieve(X) -> sieve(X) 24: a__from(X) -> from(X) 25: a__head(X) -> head(X) 26: a__tail(X) -> tail(X) 27: a__if(X1,X2,X3) -> if(X1,X2,X3) 28: a__filter(X1,X2) -> filter(X1,X2) Number of strict rules: 28 Direct Order(PosReal,>,Poly) ... failed. Freezing ... failed. Dependency Pairs: #1: #a__from(X) -> #mark(X) #2: #a__if(false(),X,Y) -> #mark(Y) #3: #mark(tail(X)) -> #a__tail(mark(X)) #4: #mark(tail(X)) -> #mark(X) #5: #mark(primes()) -> #a__primes() #6: #mark(from(X)) -> #a__from(mark(X)) #7: #mark(from(X)) -> #mark(X) #8: #mark(head(X)) -> #a__head(mark(X)) #9: #mark(head(X)) -> #mark(X) #10: #mark(if(X1,X2,X3)) -> #a__if(mark(X1),X2,X3) #11: #mark(if(X1,X2,X3)) -> #mark(X1) #12: #a__filter(s(s(X)),cons(Y,Z)) -> #a__if(divides(s(s(mark(X))),mark(Y)),filter(s(s(X)),Z),cons(Y,filter(X,sieve(Y)))) #13: #a__filter(s(s(X)),cons(Y,Z)) -> #mark(X) #14: #a__filter(s(s(X)),cons(Y,Z)) -> #mark(Y) #15: #mark(sieve(X)) -> #a__sieve(mark(X)) #16: #mark(sieve(X)) -> #mark(X) #17: #a__if(true(),X,Y) -> #mark(X) #18: #mark(divides(X1,X2)) -> #mark(X1) #19: #mark(divides(X1,X2)) -> #mark(X2) #20: #mark(s(X)) -> #mark(X) #21: #a__head(cons(X,Y)) -> #mark(X) #22: #a__primes() -> #a__sieve(a__from(s(s(0())))) #23: #a__primes() -> #a__from(s(s(0()))) #24: #a__sieve(cons(X,Y)) -> #mark(X) #25: #mark(filter(X1,X2)) -> #a__filter(mark(X1),mark(X2)) #26: #mark(filter(X1,X2)) -> #mark(X1) #27: #mark(filter(X1,X2)) -> #mark(X2) #28: #a__tail(cons(X,Y)) -> #mark(Y) #29: #mark(cons(X1,X2)) -> #mark(X1) Number of SCCs: 1, DPs: 28, edges: 354 SCC { #1..11 #13..29 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... succeeded. s(x1) weight: x1 #a__head(x1) weight: (/ 3 8) + x1 #a__from(x1) weight: (/ 3 8) + x1 a__from(x1) weight: (/ 1 4) + x1 false() weight: (/ 1 8) #a__filter(x1,x2) weight: max{(/ 1 8) + x2, (/ 1 4) + x1} a__sieve(x1) weight: (/ 1 4) + x1 true() weight: (/ 1 8) tail(x1) weight: (/ 1 4) + x1 #mark(x1) weight: (/ 1 4) + x1 0() weight: (/ 1 8) if(x1,x2,x3) weight: max{x3, x2, x1} #a__primes() weight: (/ 7 8) from(x1) weight: (/ 1 4) + x1 mark(x1) weight: x1 sieve(x1) weight: (/ 1 4) + x1 #a__if(x1,x2,x3) weight: max{0, (/ 1 4) + x3, (/ 1 4) + x2} head(x1) weight: (/ 1 4) + x1 cons(x1,x2) weight: max{x2, (/ 1 4) + x1} a__primes() weight: (/ 3 4) filter(x1,x2) weight: max{x2, x1} primes() weight: (/ 3 4) #a__sieve(x1) weight: (/ 3 8) + x1 divides(x1,x2) weight: max{(/ 1 8) + x2, x1} a__tail(x1) weight: (/ 1 4) + x1 a__filter(x1,x2) weight: max{x2, x1} #a__tail(x1) weight: (/ 3 8) + x1 a__if(x1,x2,x3) weight: max{x3, x2, x1} a__head(x1) weight: (/ 1 4) + x1 Usable rules: { 1..28 } Removed DPs: #1 #3..9 #14..16 #19 #21..24 #28 #29 Number of SCCs: 1, DPs: 10, edges: 59 SCC { #2 #10 #11 #13 #17 #18 #20 #25..27 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... succeeded. s(x1) weight: x1 #a__head(x1) weight: (/ 3 8) + x1 #a__from(x1) weight: (/ 3 8) + x1 a__from(x1) weight: (/ 3 8) + x1 false() weight: (/ 1 8) #a__filter(x1,x2) weight: max{(/ 1 8) + x2, (/ 3 8) + x1} a__sieve(x1) weight: (/ 3 8) + x1 true() weight: (/ 1 8) tail(x1) weight: (/ 1 4) + x1 #mark(x1) weight: (/ 1 4) + x1 0() weight: (/ 1 8) if(x1,x2,x3) weight: max{x3, x2, (/ 1 8) + x1} #a__primes() weight: (/ 7 8) from(x1) weight: (/ 3 8) + x1 mark(x1) weight: x1 sieve(x1) weight: (/ 3 8) + x1 #a__if(x1,x2,x3) weight: max{0, (/ 1 4) + x3, (/ 1 4) + x2} head(x1) weight: (/ 1 4) + x1 cons(x1,x2) weight: max{x2, (/ 3 8) + x1} a__primes() weight: (/ 7 8) filter(x1,x2) weight: max{x2, (/ 1 2) + x1} primes() weight: (/ 7 8) #a__sieve(x1) weight: (/ 3 8) + x1 divides(x1,x2) weight: max{(/ 1 4) + x2, (/ 1 8) + x1} a__tail(x1) weight: (/ 1 4) + x1 a__filter(x1,x2) weight: max{x2, (/ 1 2) + x1} #a__tail(x1) weight: (/ 3 8) + x1 a__if(x1,x2,x3) weight: max{x3, x2, (/ 1 8) + x1} a__head(x1) weight: (/ 1 4) + x1 Usable rules: { 1..28 } Removed DPs: #11 #13 #18 #25 #26 Number of SCCs: 1, DPs: 5, edges: 14 SCC { #2 #10 #17 #20 #27 } Removing DPs: Order(PosReal,>,Sum)... succeeded. s(x1) weight: (/ 1 8) + x1 #a__head(x1) weight: 0 #a__from(x1) weight: (/ 1 8) a__from(x1) weight: (/ 1 4) false() weight: 0 #a__filter(x1,x2) weight: 0 a__sieve(x1) weight: (/ 1 8) + x1 true() weight: 0 tail(x1) weight: (/ 3 8) #mark(x1) weight: x1 0() weight: 0 if(x1,x2,x3) weight: (/ 1 2) + x1 + x2 + x3 #a__primes() weight: 0 from(x1) weight: (/ 3 8) mark(x1) weight: (/ 1 8) sieve(x1) weight: (/ 1 4) #a__if(x1,x2,x3) weight: (/ 1 8) + x2 + x3 head(x1) weight: (/ 3 8) + x1 cons(x1,x2) weight: (/ 3 8) a__primes() weight: 0 filter(x1,x2) weight: (/ 3 8) + x2 primes() weight: 0 #a__sieve(x1) weight: 0 divides(x1,x2) weight: (/ 1 4) a__tail(x1) weight: (/ 1 4) a__filter(x1,x2) weight: (/ 1 4) #a__tail(x1) weight: (/ 1 8) a__if(x1,x2,x3) weight: (/ 3 8) a__head(x1) weight: (/ 1 4) Usable rules: { } Removed DPs: #2 #10 #17 #20 #27 Number of SCCs: 0, DPs: 0, edges: 0 YES