Input TRS: 1: a__and(tt(),T) -> mark(T) 2: a__isNatIList(IL) -> a__isNatList(IL) 3: a__isNat(0()) -> tt() 4: a__isNat(s(N)) -> a__isNat(N) 5: a__isNat(length(L)) -> a__isNatList(L) 6: a__isNatIList(zeros()) -> tt() 7: a__isNatIList(cons(N,IL)) -> a__and(a__isNat(N),a__isNatIList(IL)) 8: a__isNatList(nil()) -> tt() 9: a__isNatList(cons(N,L)) -> a__and(a__isNat(N),a__isNatList(L)) 10: a__isNatList(take(N,IL)) -> a__and(a__isNat(N),a__isNatIList(IL)) 11: a__zeros() -> cons(0(),zeros()) 12: a__take(0(),IL) -> a__uTake1(a__isNatIList(IL)) 13: a__uTake1(tt()) -> nil() 14: a__take(s(M),cons(N,IL)) -> a__uTake2(a__and(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))),M,N,IL) 15: a__uTake2(tt(),M,N,IL) -> cons(mark(N),take(M,IL)) 16: a__length(cons(N,L)) -> a__uLength(a__and(a__isNat(N),a__isNatList(L)),L) 17: a__uLength(tt(),L) -> s(a__length(mark(L))) 18: mark(and(X1,X2)) -> a__and(mark(X1),mark(X2)) 19: mark(isNatIList(X)) -> a__isNatIList(X) 20: mark(isNatList(X)) -> a__isNatList(X) 21: mark(isNat(X)) -> a__isNat(X) 22: mark(length(X)) -> a__length(mark(X)) 23: mark(zeros()) -> a__zeros() 24: mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) 25: mark(uTake1(X)) -> a__uTake1(mark(X)) 26: mark(uTake2(X1,X2,X3,X4)) -> a__uTake2(mark(X1),X2,X3,X4) 27: mark(uLength(X1,X2)) -> a__uLength(mark(X1),X2) 28: mark(tt()) -> tt() 29: mark(0()) -> 0() 30: mark(s(X)) -> s(mark(X)) 31: mark(cons(X1,X2)) -> cons(mark(X1),X2) 32: mark(nil()) -> nil() 33: a__and(X1,X2) -> and(X1,X2) 34: a__isNatIList(X) -> isNatIList(X) 35: a__isNatList(X) -> isNatList(X) 36: a__isNat(X) -> isNat(X) 37: a__length(X) -> length(X) 38: a__zeros() -> zeros() 39: a__take(X1,X2) -> take(X1,X2) 40: a__uTake1(X) -> uTake1(X) 41: a__uTake2(X1,X2,X3,X4) -> uTake2(X1,X2,X3,X4) 42: a__uLength(X1,X2) -> uLength(X1,X2) Number of strict rules: 42 Direct Order(PosReal,>,Poly) ... failed. Freezing ... failed. Dependency Pairs: #1: #a__isNatIList(IL) -> #a__isNatList(IL) #2: #a__isNatList(cons(N,L)) -> #a__and(a__isNat(N),a__isNatList(L)) #3: #a__isNatList(cons(N,L)) -> #a__isNat(N) #4: #a__isNatList(cons(N,L)) -> #a__isNatList(L) #5: #mark(take(X1,X2)) -> #a__take(mark(X1),mark(X2)) #6: #mark(take(X1,X2)) -> #mark(X1) #7: #mark(take(X1,X2)) -> #mark(X2) #8: #mark(zeros()) -> #a__zeros() #9: #a__take(0(),IL) -> #a__uTake1(a__isNatIList(IL)) #10: #a__take(0(),IL) -> #a__isNatIList(IL) #11: #mark(cons(X1,X2)) -> #mark(X1) #12: #a__take(s(M),cons(N,IL)) -> #a__uTake2(a__and(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))),M,N,IL) #13: #a__take(s(M),cons(N,IL)) -> #a__and(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))) #14: #a__take(s(M),cons(N,IL)) -> #a__isNat(M) #15: #a__take(s(M),cons(N,IL)) -> #a__and(a__isNat(N),a__isNatIList(IL)) #16: #a__take(s(M),cons(N,IL)) -> #a__isNat(N) #17: #a__take(s(M),cons(N,IL)) -> #a__isNatIList(IL) #18: #mark(s(X)) -> #mark(X) #19: #mark(uTake1(X)) -> #a__uTake1(mark(X)) #20: #mark(uTake1(X)) -> #mark(X) #21: #mark(isNatList(X)) -> #a__isNatList(X) #22: #a__isNatIList(cons(N,IL)) -> #a__and(a__isNat(N),a__isNatIList(IL)) #23: #a__isNatIList(cons(N,IL)) -> #a__isNat(N) #24: #a__isNatIList(cons(N,IL)) -> #a__isNatIList(IL) #25: #a__isNatList(take(N,IL)) -> #a__and(a__isNat(N),a__isNatIList(IL)) #26: #a__isNatList(take(N,IL)) -> #a__isNat(N) #27: #a__isNatList(take(N,IL)) -> #a__isNatIList(IL) #28: #a__isNat(length(L)) -> #a__isNatList(L) #29: #mark(length(X)) -> #a__length(mark(X)) #30: #mark(length(X)) -> #mark(X) #31: #mark(uLength(X1,X2)) -> #a__uLength(mark(X1),X2) #32: #mark(uLength(X1,X2)) -> #mark(X1) #33: #a__uLength(tt(),L) -> #a__length(mark(L)) #34: #a__uLength(tt(),L) -> #mark(L) #35: #mark(isNatIList(X)) -> #a__isNatIList(X) #36: #mark(uTake2(X1,X2,X3,X4)) -> #a__uTake2(mark(X1),X2,X3,X4) #37: #mark(uTake2(X1,X2,X3,X4)) -> #mark(X1) #38: #mark(isNat(X)) -> #a__isNat(X) #39: #a__length(cons(N,L)) -> #a__uLength(a__and(a__isNat(N),a__isNatList(L)),L) #40: #a__length(cons(N,L)) -> #a__and(a__isNat(N),a__isNatList(L)) #41: #a__length(cons(N,L)) -> #a__isNat(N) #42: #a__length(cons(N,L)) -> #a__isNatList(L) #43: #a__and(tt(),T) -> #mark(T) #44: #a__uTake2(tt(),M,N,IL) -> #mark(N) #45: #a__isNat(s(N)) -> #a__isNat(N) #46: #mark(and(X1,X2)) -> #a__and(mark(X1),mark(X2)) #47: #mark(and(X1,X2)) -> #mark(X1) #48: #mark(and(X1,X2)) -> #mark(X2) Number of SCCs: 1, DPs: 45, edges: 328 SCC { #1..7 #10..18 #20..48 } Removing DPs: Order(PosReal,>,Sum)... succeeded. #a__uLength(x1,x2) weight: x2 #a__uTake2(x1,x2,x3,x4) weight: (/ 1 4) + x3 + x4 isNatList(x1) weight: 0 s(x1) weight: x1 a__isNatIList(x1) weight: 0 #a__isNat(x1) weight: 0 take(x1,x2) weight: (/ 3 4) + x1 + x2 and(x1,x2) weight: x1 + x2 isNatIList(x1) weight: 0 zeros() weight: 0 #a__take(x1,x2) weight: (/ 1 2) + x2 uTake2(x1,x2,x3,x4) weight: (/ 3 4) + x1 + x2 + x3 + x4 a__isNatList(x1) weight: 0 #a__isNatIList(x1) weight: 0 uLength(x1,x2) weight: x1 + x2 #mark(x1) weight: x1 #a__uTake1(x1) weight: 0 0() weight: 0 a__uTake2(x1,x2,x3,x4) weight: (/ 3 4) + x1 + x2 + x3 + x4 #a__and(x1,x2) weight: x2 #a__zeros() weight: 0 nil() weight: 0 mark(x1) weight: x1 #a__length(x1) weight: x1 isNat(x1) weight: 0 a__uLength(x1,x2) weight: x1 + x2 a__uTake1(x1) weight: (/ 1 4) + x1 #a__isNatList(x1) weight: 0 cons(x1,x2) weight: x1 + x2 a__take(x1,x2) weight: (/ 3 4) + x1 + x2 tt() weight: 0 uTake1(x1) weight: (/ 1 4) + x1 a__isNat(x1) weight: 0 a__and(x1,x2) weight: x1 + x2 length(x1) weight: x1 a__zeros() weight: 0 a__length(x1) weight: x1 Usable rules: { 1..42 } Removed DPs: #5..7 #10 #12..17 #20 #36 #37 #44 Number of SCCs: 1, DPs: 31, edges: 167 SCC { #1..4 #11 #18 #21..35 #38..43 #45..48 } Removing DPs: Order(PosReal,>,Sum)... succeeded. #a__uLength(x1,x2) weight: (/ 1 4) + x2 #a__uTake2(x1,x2,x3,x4) weight: (/ 1 4) isNatList(x1) weight: 0 s(x1) weight: x1 a__isNatIList(x1) weight: 0 #a__isNat(x1) weight: 0 take(x1,x2) weight: (/ 1 4) + x2 and(x1,x2) weight: x1 + x2 isNatIList(x1) weight: 0 zeros() weight: 0 #a__take(x1,x2) weight: (/ 1 2) uTake2(x1,x2,x3,x4) weight: (/ 1 4) + x1 + x3 + x4 a__isNatList(x1) weight: 0 #a__isNatIList(x1) weight: 0 uLength(x1,x2) weight: (/ 1 2) + x1 + x2 #mark(x1) weight: x1 #a__uTake1(x1) weight: 0 0() weight: 0 a__uTake2(x1,x2,x3,x4) weight: (/ 1 4) + x1 + x3 + x4 #a__and(x1,x2) weight: x2 #a__zeros() weight: 0 nil() weight: 0 mark(x1) weight: x1 #a__length(x1) weight: (/ 1 4) + x1 isNat(x1) weight: 0 a__uLength(x1,x2) weight: (/ 1 2) + x1 + x2 a__uTake1(x1) weight: (/ 1 4) + x1 #a__isNatList(x1) weight: 0 cons(x1,x2) weight: x1 + x2 a__take(x1,x2) weight: (/ 1 4) + x2 tt() weight: 0 uTake1(x1) weight: (/ 1 4) + x1 a__isNat(x1) weight: 0 a__and(x1,x2) weight: x1 + x2 length(x1) weight: (/ 1 2) + x1 a__zeros() weight: 0 a__length(x1) weight: (/ 1 2) + x1 Usable rules: { 1..42 } Removed DPs: #29..32 #34 #40..42 Number of SCCs: 2, DPs: 23, edges: 92 SCC { #33 #39 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... QWPOpS(PosReal,>,MaxSum)... Order(PosReal,>,Sum-Sum; PosReal,≥,Sum-Sum)... succeeded. #a__uLength(x1,x2) weight: x2_1 + x2_2 + x1_2; 0 #a__uTake2(x1,x2,x3,x4) weight: 0; 0 isNatList(x1) weight: (/ 1 4); x1_2 s(x1) weight: (/ 1 2) + x1_1; x1_2 a__isNatIList(x1) weight: (/ 1 4); (/ 1 2) + x1_2 #a__isNat(x1) weight: 0; 0 take(x1,x2) weight: (/ 1 4) + x2_1 + x1_1; (/ 1 2) + x2_2 and(x1,x2) weight: x2_1; x2_2 isNatIList(x1) weight: (/ 1 4); (/ 1 2) + x1_2 zeros() weight: 0; 0 #a__take(x1,x2) weight: 0; 0 uTake2(x1,x2,x3,x4) weight: (/ 3 4) + x4_1 + x4_2 + x2_1; (/ 1 2) + x4_2 a__isNatList(x1) weight: (/ 1 4); x1_2 #a__isNatIList(x1) weight: 0; 0 uLength(x1,x2) weight: (/ 1 4) + x2_1 + x1_1 + x1_2; (/ 1 4) + x2_2 #mark(x1) weight: 0; 0 #a__uTake1(x1) weight: 0; 0 0() weight: (/ 1 4); (/ 1 4) a__uTake2(x1,x2,x3,x4) weight: (/ 3 4) + x4_1 + x4_2 + x2_1; (/ 1 2) + x4_2 #a__and(x1,x2) weight: 0; 0 #a__zeros() weight: 0; 0 nil() weight: 0; (/ 1 2) mark(x1) weight: x1_1; x1_2 #a__length(x1) weight: (/ 1 4) + x1_1 + x1_2; 0 isNat(x1) weight: x1_1; (/ 1 4) + x1_2 a__uLength(x1,x2) weight: (/ 1 4) + x2_1 + x1_1 + x1_2; (/ 1 4) + x2_2 a__uTake1(x1) weight: (/ 1 4); (/ 1 4) + x1_1 #a__isNatList(x1) weight: 0; 0 cons(x1,x2) weight: x2_1 + x2_2; x2_2 a__take(x1,x2) weight: (/ 1 4) + x2_1 + x1_1; (/ 1 2) + x2_2 tt() weight: (/ 1 4); (/ 1 2) uTake1(x1) weight: (/ 1 4); (/ 1 4) + x1_1 a__isNat(x1) weight: x1_1; (/ 1 4) + x1_2 a__and(x1,x2) weight: x2_1; x2_2 length(x1) weight: (/ 1 2) + x1_1; (/ 1 4) + x1_2 a__zeros() weight: 0; 0 a__length(x1) weight: (/ 1 2) + x1_1; (/ 1 4) + x1_2 Usable rules: { 1..42 } Removed DPs: #33 #39 Number of SCCs: 1, DPs: 21, edges: 90 SCC { #1..4 #11 #18 #21..28 #35 #38 #43 #45..48 } Removing DPs: Order(PosReal,>,Sum)... succeeded. #a__uLength(x1,x2) weight: (/ 1 4) #a__uTake2(x1,x2,x3,x4) weight: (/ 1 4) isNatList(x1) weight: (/ 1 4) + x1 s(x1) weight: x1 a__isNatIList(x1) weight: (/ 1 2) + x1 #a__isNat(x1) weight: x1 take(x1,x2) weight: (/ 3 4) + x1 + x2 and(x1,x2) weight: x1 + x2 isNatIList(x1) weight: (/ 1 2) + x1 zeros() weight: 0 #a__take(x1,x2) weight: (/ 1 2) uTake2(x1,x2,x3,x4) weight: (/ 3 4) + x2 + x3 + x4 a__isNatList(x1) weight: (/ 1 4) + x1 #a__isNatIList(x1) weight: (/ 3 4) + x1 uLength(x1,x2) weight: (/ 3 4) + x2 #mark(x1) weight: (/ 1 4) + x1 #a__uTake1(x1) weight: 0 0() weight: 0 a__uTake2(x1,x2,x3,x4) weight: (/ 3 4) + x2 + x3 + x4 #a__and(x1,x2) weight: (/ 1 4) + x2 #a__zeros() weight: 0 nil() weight: 0 mark(x1) weight: x1 #a__length(x1) weight: (/ 1 4) isNat(x1) weight: x1 a__uLength(x1,x2) weight: (/ 3 4) + x2 a__uTake1(x1) weight: (/ 1 4) + x1 #a__isNatList(x1) weight: (/ 1 2) + x1 cons(x1,x2) weight: x1 + x2 a__take(x1,x2) weight: (/ 3 4) + x1 + x2 tt() weight: 0 uTake1(x1) weight: (/ 1 4) + x1 a__isNat(x1) weight: x1 a__and(x1,x2) weight: x1 + x2 length(x1) weight: (/ 3 4) + x1 a__zeros() weight: 0 a__length(x1) weight: (/ 3 4) + x1 Usable rules: { 1..42 } Removed DPs: #1 #3 #23 #25..28 #38 Number of SCCs: 2, DPs: 13, edges: 47 SCC { #45 } Removing DPs: Order(PosReal,>,Sum)... succeeded. #a__uLength(x1,x2) weight: (/ 1 16) #a__uTake2(x1,x2,x3,x4) weight: (/ 1 16) isNatList(x1) weight: (/ 1 8) s(x1) weight: (/ 1 16) + x1 a__isNatIList(x1) weight: (/ 5 16) + x1 #a__isNat(x1) weight: x1 take(x1,x2) weight: (/ 1 16) + x1 + x2 and(x1,x2) weight: (/ 1 4) isNatIList(x1) weight: (/ 3 8) zeros() weight: 0 #a__take(x1,x2) weight: (/ 1 8) uTake2(x1,x2,x3,x4) weight: (/ 7 16) + x1 + x2 + x4 a__isNatList(x1) weight: (/ 1 16) + x1 #a__isNatIList(x1) weight: (/ 3 16) uLength(x1,x2) weight: (/ 3 8) #mark(x1) weight: (/ 1 16) #a__uTake1(x1) weight: 0 0() weight: 0 a__uTake2(x1,x2,x3,x4) weight: (/ 3 8) #a__and(x1,x2) weight: (/ 1 16) #a__zeros() weight: 0 nil() weight: 0 mark(x1) weight: (/ 1 4) #a__length(x1) weight: (/ 1 16) isNat(x1) weight: (/ 3 8) a__uLength(x1,x2) weight: (/ 5 16) a__uTake1(x1) weight: (/ 1 16) + x1 #a__isNatList(x1) weight: (/ 1 8) cons(x1,x2) weight: (/ 1 16) a__take(x1,x2) weight: (/ 5 16) tt() weight: 0 uTake1(x1) weight: (/ 1 8) + x1 a__isNat(x1) weight: (/ 5 16) + x1 a__and(x1,x2) weight: (/ 3 16) length(x1) weight: (/ 1 8) a__zeros() weight: 0 a__length(x1) weight: (/ 1 16) + x1 Usable rules: { } Removed DPs: #45 Number of SCCs: 1, DPs: 12, edges: 46 SCC { #2 #4 #11 #18 #21 #22 #24 #35 #43 #46..48 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... succeeded. #a__uLength(x1,x2) weight: 0 #a__uTake2(x1,x2,x3,x4) weight: 0 isNatList(x1) weight: (/ 1 16) + x1 s(x1) weight: x1 a__isNatIList(x1) weight: (/ 1 16) + x1 #a__isNat(x1) weight: 0 take(x1,x2) weight: max{(/ 1 4) + x2, (/ 1 8) + x1} and(x1,x2) weight: max{x2, (/ 1 16) + x1} isNatIList(x1) weight: (/ 1 16) + x1 zeros() weight: (/ 3 8) #a__take(x1,x2) weight: 0 uTake2(x1,x2,x3,x4) weight: max{(/ 1 4) + x4, (/ 5 16) + x3, (/ 1 8) + x2, x1} a__isNatList(x1) weight: (/ 1 16) + x1 #a__isNatIList(x1) weight: (/ 1 8) + x1 uLength(x1,x2) weight: max{0, (/ 1 16) + x2} #mark(x1) weight: (/ 1 16) + x1 #a__uTake1(x1) weight: 0 0() weight: (/ 1 16) a__uTake2(x1,x2,x3,x4) weight: max{(/ 1 4) + x4, (/ 5 16) + x3, (/ 1 8) + x2, x1} #a__and(x1,x2) weight: max{0, (/ 1 16) + x2} #a__zeros() weight: 0 nil() weight: (/ 1 16) mark(x1) weight: x1 #a__length(x1) weight: 0 isNat(x1) weight: (/ 1 16) + x1 a__uLength(x1,x2) weight: max{0, (/ 1 16) + x2} a__uTake1(x1) weight: (/ 1 4) #a__isNatList(x1) weight: (/ 1 8) + x1 cons(x1,x2) weight: max{x2, (/ 5 16) + x1} a__take(x1,x2) weight: max{(/ 1 4) + x2, (/ 1 8) + x1} tt() weight: (/ 1 8) uTake1(x1) weight: (/ 1 4) a__isNat(x1) weight: (/ 1 16) + x1 a__and(x1,x2) weight: max{x2, (/ 1 16) + x1} length(x1) weight: (/ 1 16) + x1 a__zeros() weight: (/ 3 8) a__length(x1) weight: (/ 1 16) + x1 Usable rules: { 1..42 } Removed DPs: #11 #47 Number of SCCs: 1, DPs: 10, edges: 26 SCC { #2 #4 #18 #21 #22 #24 #35 #43 #46 #48 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... succeeded. #a__uLength(x1,x2) weight: 0 #a__uTake2(x1,x2,x3,x4) weight: 0 isNatList(x1) weight: (/ 1 16) + x1 s(x1) weight: x1 a__isNatIList(x1) weight: (/ 1 16) + x1 #a__isNat(x1) weight: 0 take(x1,x2) weight: max{0, (/ 5 16) + x2} and(x1,x2) weight: max{0, (/ 1 8) + x2} isNatIList(x1) weight: (/ 1 16) + x1 zeros() weight: (/ 1 4) #a__take(x1,x2) weight: 0 uTake2(x1,x2,x3,x4) weight: max{0, (/ 5 16) + x4, (/ 1 2) + x3, (/ 1 8) + x1} a__isNatList(x1) weight: (/ 1 16) + x1 #a__isNatIList(x1) weight: (/ 1 16) + x1 uLength(x1,x2) weight: max{0, (/ 1 16) + x2} #mark(x1) weight: (/ 1 16) + x1 #a__uTake1(x1) weight: 0 0() weight: 0 a__uTake2(x1,x2,x3,x4) weight: max{0, (/ 7 16) + x4, (/ 1 2) + x3, (/ 1 8) + x1} #a__and(x1,x2) weight: max{0, (/ 1 16) + x2} #a__zeros() weight: 0 nil() weight: (/ 1 16) mark(x1) weight: (/ 1 8) + x1 #a__length(x1) weight: 0 isNat(x1) weight: x1 a__uLength(x1,x2) weight: max{0, (/ 1 8) + x2} a__uTake1(x1) weight: (/ 1 16) #a__isNatList(x1) weight: (/ 1 16) + x1 cons(x1,x2) weight: max{(/ 1 8) + x2, (/ 3 8) + x1} a__take(x1,x2) weight: max{0, (/ 5 16) + x2} tt() weight: 0 uTake1(x1) weight: 0 a__isNat(x1) weight: (/ 1 8) + x1 a__and(x1,x2) weight: max{0, (/ 1 8) + x2} length(x1) weight: x1 a__zeros() weight: (/ 3 8) a__length(x1) weight: x1 Usable rules: { 1..42 } Removed DPs: #2 #4 #21 #22 #24 #35 #48 Number of SCCs: 1, DPs: 3, edges: 5 SCC { #18 #43 #46 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... QWPOpS(PosReal,>,MaxSum)... succeeded. #a__uLength(x1,x2) weight: max{0, x1} status: [] precedence above: #a__uTake2(x1,x2,x3,x4) weight: x2 + x1 status: [x2,x1] precedence above: isNatList(x1) weight: (/ 1 4) + x1 status: [x1] precedence above: take and zeros uTake2 a__isNatList #mark 0 a__uTake2 #a__and nil mark a__uTake1 cons a__take tt uTake1 a__and a__zeros s(x1) weight: x1 status: x1 a__isNatIList(x1) weight: (/ 1 2) + x1 status: [x1] precedence above: isNatList take and isNatIList zeros uTake2 a__isNatList #mark 0 a__uTake2 #a__and nil mark a__uTake1 cons a__take tt uTake1 a__and a__zeros #a__isNat(x1) weight: x1 status: [] precedence above: take(x1,x2) weight: max{(/ 1 2) + x2, (/ 1 2) + x1} status: [] precedence above: and(x1,x2) weight: max{x2, x1} status: [x2,x1] precedence above: take zeros uTake2 #mark 0 a__uTake2 #a__and nil mark a__uTake1 cons a__take tt uTake1 a__and a__zeros isNatIList(x1) weight: (/ 1 2) + x1 status: [x1] precedence above: isNatList a__isNatIList take and zeros uTake2 a__isNatList #mark 0 a__uTake2 #a__and nil mark a__uTake1 cons a__take tt uTake1 a__and a__zeros zeros() weight: (/ 1 2) status: [] precedence above: cons tt #a__take(x1,x2) weight: x2 + x1 status: [x2] precedence above: uTake2(x1,x2,x3,x4) weight: max{(/ 1 2) + x4, (/ 1 2) + x3, (/ 1 2) + x2, x1} status: [] precedence above: a__isNatList(x1) weight: (/ 1 4) + x1 status: [x1] precedence above: isNatList take and zeros uTake2 #mark 0 a__uTake2 #a__and nil mark a__uTake1 cons a__take tt uTake1 a__and a__zeros #a__isNatIList(x1) weight: x1 status: [] precedence above: uLength(x1,x2) weight: max{0, x2} status: [] precedence above: s a__uLength length a__length #mark(x1) weight: x1 status: [x1] precedence above: #a__and #a__uTake1(x1) weight: 0 status: [] precedence above: 0() weight: 0 status: [] precedence above: cons tt a__uTake2(x1,x2,x3,x4) weight: max{(/ 1 2) + x4, (/ 1 2) + x3, (/ 1 2) + x2, x1} status: [] precedence above: take uTake2 cons #a__and(x1,x2) weight: max{0, x2} status: [x2] precedence above: #mark #a__zeros() weight: 0 status: [] precedence above: nil() weight: (/ 1 4) status: [] precedence above: cons tt mark(x1) weight: x1 status: [x1] precedence above: take and zeros uTake2 #mark 0 a__uTake2 #a__and nil a__uTake1 cons a__take tt uTake1 a__and a__zeros #a__length(x1) weight: 0 status: [] precedence above: isNat(x1) weight: (/ 1 4) + x1 status: [] precedence above: isNatList take and zeros uTake2 a__isNatList #mark 0 a__uTake2 #a__and nil mark a__uTake1 cons a__take tt uTake1 a__isNat a__and a__zeros a__uLength(x1,x2) weight: max{0, x2} status: [] precedence above: s uLength length a__length a__uTake1(x1) weight: (/ 1 4) status: [] precedence above: nil cons tt uTake1 #a__isNatList(x1) weight: x1 status: [] precedence above: cons(x1,x2) weight: max{x2, (/ 1 4) + x1} status: [x2] precedence above: a__take(x1,x2) weight: max{(/ 1 2) + x2, (/ 1 2) + x1} status: [] precedence above: take uTake2 a__uTake2 nil a__uTake1 cons tt uTake1 tt() weight: (/ 1 4) status: [] precedence above: cons uTake1(x1) weight: (/ 1 4) status: [] precedence above: a__isNat(x1) weight: (/ 1 4) + x1 status: [] precedence above: isNatList take and zeros uTake2 a__isNatList #mark 0 a__uTake2 #a__and nil mark isNat a__uTake1 cons a__take tt uTake1 a__and a__zeros a__and(x1,x2) weight: max{x2, x1} status: [x2,x1] precedence above: take and zeros uTake2 #mark 0 a__uTake2 #a__and nil mark a__uTake1 cons a__take tt uTake1 a__zeros length(x1) weight: x1 status: [] precedence above: s uLength a__uLength a__length a__zeros() weight: (/ 1 2) status: [] precedence above: zeros 0 cons tt a__length(x1) weight: x1 status: [] precedence above: s uLength a__uLength length Usable rules: { 1..42 } Removed DPs: #46 Number of SCCs: 1, DPs: 1, edges: 1 SCC { #18 } Removing DPs: Order(PosReal,>,Sum)... succeeded. #a__uLength(x1,x2) weight: (/ 1 16) #a__uTake2(x1,x2,x3,x4) weight: (/ 1 16) isNatList(x1) weight: (/ 5 16) s(x1) weight: (/ 1 8) + x1 a__isNatIList(x1) weight: (/ 3 16) #a__isNat(x1) weight: 0 take(x1,x2) weight: (/ 1 16) + x2 and(x1,x2) weight: (/ 3 8) isNatIList(x1) weight: (/ 1 16) zeros() weight: 0 #a__take(x1,x2) weight: (/ 1 8) uTake2(x1,x2,x3,x4) weight: (/ 1 16) + x2 a__isNatList(x1) weight: (/ 1 4) #a__isNatIList(x1) weight: (/ 1 16) uLength(x1,x2) weight: (/ 5 16) + x1 + x2 #mark(x1) weight: (/ 1 16) + x1 #a__uTake1(x1) weight: 0 0() weight: 0 a__uTake2(x1,x2,x3,x4) weight: x1 + x2 #a__and(x1,x2) weight: (/ 1 16) #a__zeros() weight: 0 nil() weight: 0 mark(x1) weight: (/ 1 16) + x1 #a__length(x1) weight: (/ 1 16) isNat(x1) weight: (/ 1 8) + x1 a__uLength(x1,x2) weight: (/ 1 4) a__uTake1(x1) weight: (/ 1 4) #a__isNatList(x1) weight: (/ 1 16) cons(x1,x2) weight: (/ 1 16) + x1 a__take(x1,x2) weight: (/ 3 16) tt() weight: 0 uTake1(x1) weight: (/ 5 16) + x1 a__isNat(x1) weight: (/ 1 16) + x1 a__and(x1,x2) weight: (/ 5 16) length(x1) weight: (/ 1 16) + x1 a__zeros() weight: 0 a__length(x1) weight: (/ 3 16) Usable rules: { } Removed DPs: #18 Number of SCCs: 0, DPs: 0, edges: 0 YES