Input TRS: 1: a__terms(N) -> cons(recip(a__sqr(mark(N))),terms(s(N))) 2: a__sqr(0()) -> 0() 3: a__sqr(s(X)) -> s(a__add(a__sqr(mark(X)),a__dbl(mark(X)))) 4: a__dbl(0()) -> 0() 5: a__dbl(s(X)) -> s(s(a__dbl(mark(X)))) 6: a__add(0(),X) -> mark(X) 7: a__add(s(X),Y) -> s(a__add(mark(X),mark(Y))) 8: a__first(0(),X) -> nil() 9: a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z)) 10: a__half(0()) -> 0() 11: a__half(s(0())) -> 0() 12: a__half(s(s(X))) -> s(a__half(mark(X))) 13: a__half(dbl(X)) -> mark(X) 14: mark(terms(X)) -> a__terms(mark(X)) 15: mark(sqr(X)) -> a__sqr(mark(X)) 16: mark(add(X1,X2)) -> a__add(mark(X1),mark(X2)) 17: mark(dbl(X)) -> a__dbl(mark(X)) 18: mark(first(X1,X2)) -> a__first(mark(X1),mark(X2)) 19: mark(half(X)) -> a__half(mark(X)) 20: mark(cons(X1,X2)) -> cons(mark(X1),X2) 21: mark(recip(X)) -> recip(mark(X)) 22: mark(s(X)) -> s(mark(X)) 23: mark(0()) -> 0() 24: mark(nil()) -> nil() 25: a__terms(X) -> terms(X) 26: a__sqr(X) -> sqr(X) 27: a__add(X1,X2) -> add(X1,X2) 28: a__dbl(X) -> dbl(X) 29: a__first(X1,X2) -> first(X1,X2) 30: a__half(X) -> half(X) Number of strict rules: 30 Direct Order(PosReal,>,Poly) ... failed. Freezing ... failed. Dependency Pairs: #1: #a__add(0(),X) -> #mark(X) #2: #a__half(dbl(X)) -> #mark(X) #3: #a__first(s(X),cons(Y,Z)) -> #mark(Y) #4: #a__half(s(s(X))) -> #a__half(mark(X)) #5: #a__half(s(s(X))) -> #mark(X) #6: #mark(terms(X)) -> #a__terms(mark(X)) #7: #mark(terms(X)) -> #mark(X) #8: #mark(cons(X1,X2)) -> #mark(X1) #9: #a__add(s(X),Y) -> #a__add(mark(X),mark(Y)) #10: #a__add(s(X),Y) -> #mark(X) #11: #a__add(s(X),Y) -> #mark(Y) #12: #a__dbl(s(X)) -> #a__dbl(mark(X)) #13: #a__dbl(s(X)) -> #mark(X) #14: #mark(s(X)) -> #mark(X) #15: #mark(dbl(X)) -> #a__dbl(mark(X)) #16: #mark(dbl(X)) -> #mark(X) #17: #mark(half(X)) -> #a__half(mark(X)) #18: #mark(half(X)) -> #mark(X) #19: #mark(recip(X)) -> #mark(X) #20: #mark(add(X1,X2)) -> #a__add(mark(X1),mark(X2)) #21: #mark(add(X1,X2)) -> #mark(X1) #22: #mark(add(X1,X2)) -> #mark(X2) #23: #a__sqr(s(X)) -> #a__add(a__sqr(mark(X)),a__dbl(mark(X))) #24: #a__sqr(s(X)) -> #a__sqr(mark(X)) #25: #a__sqr(s(X)) -> #mark(X) #26: #a__sqr(s(X)) -> #a__dbl(mark(X)) #27: #a__sqr(s(X)) -> #mark(X) #28: #a__terms(N) -> #a__sqr(mark(N)) #29: #a__terms(N) -> #mark(N) #30: #mark(sqr(X)) -> #a__sqr(mark(X)) #31: #mark(sqr(X)) -> #mark(X) #32: #mark(first(X1,X2)) -> #a__first(mark(X1),mark(X2)) #33: #mark(first(X1,X2)) -> #mark(X1) #34: #mark(first(X1,X2)) -> #mark(X2) Number of SCCs: 1, DPs: 34, edges: 399 SCC { #1..34 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... succeeded. s(x1) weight: x1 #a__first(x1,x2) weight: max{(/ 1 8) + x2, (/ 3 16) + x1} recip(x1) weight: (/ 1 16) + x1 dbl(x1) weight: (/ 1 8) + x1 a__half(x1) weight: (/ 1 16) + x1 #a__add(x1,x2) weight: max{(/ 1 8) + x2, (/ 1 16) + x1} a__add(x1,x2) weight: max{(/ 1 16) + x2, x1} a__dbl(x1) weight: (/ 1 8) + x1 #a__half(x1) weight: (/ 1 8) + x1 a__sqr(x1) weight: (/ 1 4) + x1 half(x1) weight: (/ 1 16) + x1 #a__terms(x1) weight: (/ 3 8) + x1 #mark(x1) weight: (/ 1 16) + x1 0() weight: (/ 1 16) nil() weight: (/ 1 8) #a__dbl(x1) weight: (/ 1 8) + x1 mark(x1) weight: x1 first(x1,x2) weight: max{(/ 1 16) + x2, (/ 1 8) + x1} a__first(x1,x2) weight: max{(/ 1 16) + x2, (/ 1 8) + x1} cons(x1,x2) weight: max{0, (/ 3 16) + x1} add(x1,x2) weight: max{(/ 1 16) + x2, x1} sqr(x1) weight: (/ 1 4) + x1 a__terms(x1) weight: (/ 1 2) + x1 #a__sqr(x1) weight: (/ 5 16) + x1 terms(x1) weight: (/ 1 2) + x1 Usable rules: { 1..30 } Removed DPs: #1..3 #5..8 #11 #13 #15 #16 #18 #19 #22 #25..29 #31 #33 #34 Number of SCCs: 3, DPs: 10, edges: 24 SCC { #12 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. s(x1) status: [x1] precedence above: a__half half nil mark first a__first cons #a__first(x1,x2) status: [x2] precedence above: recip(x1) status: [] precedence above: dbl(x1) status: [x1] precedence above: s a__half a__dbl half nil mark first a__first cons a__half(x1) status: [x1] precedence above: half #a__add(x1,x2) status: [x2] precedence above: a__add(x1,x2) status: [x1,x2] precedence above: s a__half half nil mark first a__first cons add a__dbl(x1) status: [x1] precedence above: s dbl a__half half nil mark first a__first cons #a__half(x1) status: [] precedence above: a__sqr(x1) status: [x1] precedence above: s dbl a__half a__add a__dbl half 0 nil mark first a__first cons add sqr half(x1) status: [x1] precedence above: a__half #a__terms(x1) status: [] precedence above: #mark(x1) status: [] precedence above: 0() status: [] precedence above: nil() status: [] precedence above: #a__dbl(x1) status: [x1] precedence above: mark(x1) status: x1 first(x1,x2) status: [] precedence above: nil a__first cons a__first(x1,x2) status: [] precedence above: nil first cons cons(x1,x2) status: [] precedence above: nil first a__first add(x1,x2) status: [x1,x2] precedence above: s a__half a__add half nil mark first a__first cons sqr(x1) status: [x1] precedence above: s dbl a__half a__add a__dbl a__sqr half 0 nil mark first a__first cons add a__terms(x1) status: [] precedence above: recip nil first a__first cons terms #a__sqr(x1) status: [] precedence above: terms(x1) status: [] precedence above: recip nil first a__first cons a__terms Usable rules: { 1..30 } Removed DPs: #12 Number of SCCs: 2, DPs: 9, edges: 23 SCC { #4 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. s(x1) status: [x1] precedence above: a__half half nil mark first a__first cons #a__first(x1,x2) status: [x2] precedence above: recip(x1) status: [] precedence above: dbl(x1) status: [x1] precedence above: s a__half a__dbl half nil mark first a__first cons a__half(x1) status: [x1] precedence above: half #a__add(x1,x2) status: [x2] precedence above: a__add(x1,x2) status: [x1,x2] precedence above: s a__half half nil mark first a__first cons add a__dbl(x1) status: [x1] precedence above: s dbl a__half half nil mark first a__first cons #a__half(x1) status: [x1] precedence above: a__sqr(x1) status: [x1] precedence above: s dbl a__half a__add a__dbl half 0 nil mark first a__first cons add sqr half(x1) status: [x1] precedence above: a__half #a__terms(x1) status: [] precedence above: #mark(x1) status: [] precedence above: 0() status: [] precedence above: nil() status: [] precedence above: #a__dbl(x1) status: [x1] precedence above: mark(x1) status: x1 first(x1,x2) status: [] precedence above: nil a__first cons a__first(x1,x2) status: [] precedence above: nil first cons cons(x1,x2) status: [] precedence above: nil first a__first add(x1,x2) status: [x1,x2] precedence above: s a__half a__add half nil mark first a__first cons sqr(x1) status: [x1] precedence above: s dbl a__half a__add a__dbl a__sqr half 0 nil mark first a__first cons add a__terms(x1) status: [] precedence above: recip nil first a__first cons terms #a__sqr(x1) status: [] precedence above: terms(x1) status: [] precedence above: recip nil first a__first cons a__terms Usable rules: { 1..30 } Removed DPs: #4 Number of SCCs: 1, DPs: 8, edges: 22 SCC { #9 #10 #14 #20 #21 #23 #24 #30 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. s(x1) status: [x1] precedence above: a__half #a__add half #mark nil mark first a__first cons #a__first(x1,x2) status: [x2] precedence above: recip(x1) status: [] precedence above: dbl(x1) status: [x1] precedence above: s a__half #a__add a__dbl half #mark nil mark first a__first cons a__half(x1) status: [x1] precedence above: half #a__add(x1,x2) status: [x1] precedence above: #mark a__add(x1,x2) status: [x1,x2] precedence above: s a__half #a__add half #mark nil mark first a__first cons add a__dbl(x1) status: [x1] precedence above: s dbl a__half #a__add half #mark nil mark first a__first cons #a__half(x1) status: [x1] precedence above: a__sqr(x1) status: [x1] precedence above: s dbl a__half #a__add a__add a__dbl half #mark nil mark first a__first cons add sqr #a__sqr half(x1) status: [x1] precedence above: a__half #a__terms(x1) status: [] precedence above: #mark(x1) status: [x1] precedence above: #a__add 0() status: [] precedence above: nil() status: [] precedence above: #a__dbl(x1) status: [x1] precedence above: mark(x1) status: x1 first(x1,x2) status: [] precedence above: nil a__first cons a__first(x1,x2) status: [] precedence above: nil first cons cons(x1,x2) status: [] precedence above: nil first a__first add(x1,x2) status: [x1,x2] precedence above: s a__half #a__add a__add half #mark nil mark first a__first cons sqr(x1) status: [x1] precedence above: s dbl a__half #a__add a__add a__dbl a__sqr half #mark nil mark first a__first cons add #a__sqr a__terms(x1) status: [] precedence above: recip nil first a__first cons terms #a__sqr(x1) status: [x1] precedence above: s dbl a__half #a__add a__add a__dbl a__sqr half #mark nil mark first a__first cons add sqr terms(x1) status: [] precedence above: recip nil first a__first cons a__terms Usable rules: { 1..30 } Removed DPs: #9 #10 #14 #20 #21 #23 #24 #30 Number of SCCs: 0, DPs: 0, edges: 0 YES