Input TRS: 1: a__zeros() -> cons(0(),zeros()) 2: a__and(tt(),X) -> mark(X) 3: a__length(nil()) -> 0() 4: a__length(cons(N,L)) -> s(a__length(mark(L))) 5: mark(zeros()) -> a__zeros() 6: mark(and(X1,X2)) -> a__and(mark(X1),X2) 7: mark(length(X)) -> a__length(mark(X)) 8: mark(cons(X1,X2)) -> cons(mark(X1),X2) 9: mark(0()) -> 0() 10: mark(tt()) -> tt() 11: mark(nil()) -> nil() 12: mark(s(X)) -> s(mark(X)) 13: a__zeros() -> zeros() 14: a__and(X1,X2) -> and(X1,X2) 15: a__length(X) -> length(X) Number of strict rules: 15 Direct Order(PosReal,>,Poly) ... removes: 15 3 7 14 6 2 s(x1) weight: x1 and(x1,x2) weight: (/ 41801 4) + x1 + x2 zeros() weight: 0 0() weight: 0 nil() weight: 0 mark(x1) weight: 2 * x1 cons(x1,x2) weight: x1 + 2 * x2 tt() weight: 0 a__and(x1,x2) weight: (/ 167203 8) + x1 + 2 * x2 length(x1) weight: (/ 1 4) + x1 a__zeros() weight: 0 a__length(x1) weight: (/ 3 8) + x1 Number of strict rules: 9 Direct Order(PosReal,>,Poly) ... failed. Freezing ... failed. Dependency Pairs: #1: #mark(s(X)) -> #mark(X) #2: #mark(zeros()) -> #a__zeros() #3: #mark(cons(X1,X2)) -> #mark(X1) #4: #a__length(cons(N,L)) -> #a__length(mark(L)) #5: #a__length(cons(N,L)) -> #mark(L) Number of SCCs: 2, DPs: 3, edges: 5 SCC { #4 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... QWPOpS(PosReal,>,MaxSum)... Order(PosReal,>,Sum-Sum; PosReal,≥,Sum-Sum)... Order(PosReal,>,Sum-Sum; NegReal,≥,Sum)... Order(PosReal,>,MaxSum-Sum; NegReal,≥,Sum)... failed. Removing edges: failed. Finding a loop... found. #a__length(cons(N,zeros())) -#4-> #a__length(mark(zeros())) --->* #a__length(cons(0(),zeros())) Looping with: [ N := 0(); ] NO