Input TRS: 1: prod(xs) -> prodIter(xs,s(0())) 2: prodIter(xs,x) -> ifProd(isempty(xs),xs,x) 3: ifProd(true(),xs,x) -> x 4: ifProd(false(),xs,x) -> prodIter(tail(xs),times(x,head(xs))) 5: plus(0(),y) -> y 6: plus(s(x),y) -> s(plus(x,y)) 7: times(x,y) -> timesIter(x,y,0(),0()) 8: timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u) 9: ifTimes(true(),x,y,z,u) -> z 10: ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u)) 11: isempty(nil()) -> true() 12: isempty(cons(x,xs)) -> false() 13: head(nil()) -> error() 14: head(cons(x,xs)) -> x 15: tail(nil()) -> nil() 16: tail(cons(x,xs)) -> xs 17: ge(x,0()) -> true() 18: ge(0(),s(y)) -> false() 19: ge(s(x),s(y)) -> ge(x,y) 20: a() -> b() 21: a() -> c() Number of strict rules: 21 Direct Order(PosReal,>,Poly) ... failed. Freezing ... failed. Dependency Pairs: #1: #prodIter(xs,x) -> #ifProd(isempty(xs),xs,x) #2: #prodIter(xs,x) -> #isempty(xs) #3: #plus(s(x),y) -> #plus(x,y) #4: #times(x,y) -> #timesIter(x,y,0(),0()) #5: #ifTimes(false(),x,y,z,u) -> #timesIter(x,y,plus(y,z),s(u)) #6: #ifTimes(false(),x,y,z,u) -> #plus(y,z) #7: #ge(s(x),s(y)) -> #ge(x,y) #8: #prod(xs) -> #prodIter(xs,s(0())) #9: #timesIter(x,y,z,u) -> #ifTimes(ge(u,x),x,y,z,u) #10: #timesIter(x,y,z,u) -> #ge(u,x) #11: #ifProd(false(),xs,x) -> #prodIter(tail(xs),times(x,head(xs))) #12: #ifProd(false(),xs,x) -> #tail(xs) #13: #ifProd(false(),xs,x) -> #times(x,head(xs)) #14: #ifProd(false(),xs,x) -> #head(xs) Number of SCCs: 4, DPs: 6, edges: 6 SCC { #3 } Removing DPs: Order(PosReal,>,Sum)... succeeded. a() weight: 0 ifTimes(x1,x2,x3,x4,x5) weight: 0 isempty(x1) weight: 0 prod(x1) weight: 0 #prodIter(x1,x2) weight: 0 timesIter(x1,x2,x3,x4) weight: 0 s(x1) weight: (/ 1 2) + x1 b() weight: 0 #ifProd(x1,x2,x3) weight: 0 #prod(x1) weight: 0 #timesIter(x1,x2,x3,x4) weight: 0 #plus(x1,x2) weight: x1 #isempty(x1) weight: 0 false() weight: 0 #head(x1) weight: 0 #ge(x1,x2) weight: 0 c() weight: 0 ifProd(x1,x2,x3) weight: 0 prodIter(x1,x2) weight: 0 true() weight: 0 tail(x1) weight: 0 error() weight: 0 #times(x1,x2) weight: 0 0() weight: 0 ge(x1,x2) weight: 0 times(x1,x2) weight: 0 nil() weight: 0 #tail(x1) weight: 0 plus(x1,x2) weight: 0 head(x1) weight: 0 cons(x1,x2) weight: 0 #a() weight: 0 #ifTimes(x1,x2,x3,x4,x5) weight: 0 Usable rules: { } Removed DPs: #3 Number of SCCs: 3, DPs: 5, edges: 5 SCC { #7 } Removing DPs: Order(PosReal,>,Sum)... succeeded. a() weight: 0 ifTimes(x1,x2,x3,x4,x5) weight: 0 isempty(x1) weight: 0 prod(x1) weight: 0 #prodIter(x1,x2) weight: 0 timesIter(x1,x2,x3,x4) weight: 0 s(x1) weight: (/ 1 2) + x1 b() weight: 0 #ifProd(x1,x2,x3) weight: 0 #prod(x1) weight: 0 #timesIter(x1,x2,x3,x4) weight: 0 #plus(x1,x2) weight: 0 #isempty(x1) weight: 0 false() weight: 0 #head(x1) weight: 0 #ge(x1,x2) weight: x2 c() weight: 0 ifProd(x1,x2,x3) weight: 0 prodIter(x1,x2) weight: 0 true() weight: 0 tail(x1) weight: 0 error() weight: 0 #times(x1,x2) weight: 0 0() weight: 0 ge(x1,x2) weight: 0 times(x1,x2) weight: 0 nil() weight: 0 #tail(x1) weight: 0 plus(x1,x2) weight: 0 head(x1) weight: 0 cons(x1,x2) weight: 0 #a() weight: 0 #ifTimes(x1,x2,x3,x4,x5) weight: 0 Usable rules: { } Removed DPs: #7 Number of SCCs: 2, DPs: 4, edges: 4 SCC { #1 #11 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... succeeded. a() weight: 0 ifTimes(x1,x2,x3,x4,x5) weight: max{0, (/ 1 4) + x3, (/ 1 8) + x4} isempty(x1) weight: max{0, (- (/ 1 4)) + x1} prod(x1) weight: 0 #prodIter(x1,x2) weight: max{0, (/ 1 8) + x1, (- (/ 3 8)) + x2} timesIter(x1,x2,x3,x4) weight: max{0, (/ 1 4) + x2, (/ 1 8) + x3} s(x1) weight: (max (/ 1 8) 0) b() weight: 0 #ifProd(x1,x2,x3) weight: max{0, (- (/ 1 4)) + x1, (- (/ 1 4)) + x2, (- (/ 3 8)) + x3} #prod(x1) weight: 0 #timesIter(x1,x2,x3,x4) weight: 0 #plus(x1,x2) weight: 0 #isempty(x1) weight: 0 false() weight: (/ 5 8) #head(x1) weight: 0 #ge(x1,x2) weight: 0 c() weight: 0 ifProd(x1,x2,x3) weight: 0 prodIter(x1,x2) weight: 0 true() weight: 0 tail(x1) weight: max{0, (- (/ 5 8)) + x1} error() weight: 0 #times(x1,x2) weight: 0 0() weight: 0 ge(x1,x2) weight: max{0, (/ 1 8) + x1, (/ 3 8) + x2} times(x1,x2) weight: max{0, (/ 1 4) + x2} nil() weight: 0 #tail(x1) weight: 0 plus(x1,x2) weight: max{0, (/ 1 8) + x1, x2} head(x1) weight: max{0, (- (/ 3 8)) + x1} cons(x1,x2) weight: max{0, (/ 7 8) + x2 + x1} #a() weight: 0 #ifTimes(x1,x2,x3,x4,x5) weight: 0 Usable rules: { 5..16 } Removed DPs: #11 Number of SCCs: 1, DPs: 2, edges: 2 SCC { #5 #9 } 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... failed. MAYBE