YES We show the termination of the TRS R: a__zeros() -> cons(|0|(),zeros()) a__U11(tt(),L) -> s(a__length(mark(L))) a__and(tt(),X) -> mark(X) a__isNat(|0|()) -> tt() a__isNat(length(V1)) -> a__isNatList(V1) a__isNat(s(V1)) -> a__isNat(V1) a__isNatIList(V) -> a__isNatList(V) a__isNatIList(zeros()) -> tt() a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) a__isNatList(nil()) -> tt() a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) a__length(nil()) -> |0|() a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) mark(zeros()) -> a__zeros() mark(U11(X1,X2)) -> a__U11(mark(X1),X2) mark(length(X)) -> a__length(mark(X)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNat(X)) -> a__isNat(X) mark(isNatList(X)) -> a__isNatList(X) mark(isNatIList(X)) -> a__isNatIList(X) mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(|0|()) -> |0|() mark(tt()) -> tt() mark(s(X)) -> s(mark(X)) mark(nil()) -> nil() a__zeros() -> zeros() a__U11(X1,X2) -> U11(X1,X2) a__length(X) -> length(X) a__and(X1,X2) -> and(X1,X2) a__isNat(X) -> isNat(X) a__isNatList(X) -> isNatList(X) a__isNatIList(X) -> isNatIList(X) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__U11#(tt(),L) -> mark#(L) p3: a__and#(tt(),X) -> mark#(X) p4: a__isNat#(length(V1)) -> a__isNatList#(V1) p5: a__isNat#(s(V1)) -> a__isNat#(V1) p6: a__isNatIList#(V) -> a__isNatList#(V) p7: a__isNatIList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatIList(V2)) p8: a__isNatIList#(cons(V1,V2)) -> a__isNat#(V1) p9: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p10: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p11: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p12: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p13: a__length#(cons(N,L)) -> a__isNatList#(L) p14: mark#(zeros()) -> a__zeros#() p15: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p16: mark#(U11(X1,X2)) -> mark#(X1) p17: mark#(length(X)) -> a__length#(mark(X)) p18: mark#(length(X)) -> mark#(X) p19: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p20: mark#(and(X1,X2)) -> mark#(X1) p21: mark#(isNat(X)) -> a__isNat#(X) p22: mark#(isNatList(X)) -> a__isNatList#(X) p23: mark#(isNatIList(X)) -> a__isNatIList#(X) p24: mark#(cons(X1,X2)) -> mark#(X1) p25: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__isNatList#(L) p3: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p4: a__isNat#(s(V1)) -> a__isNat#(V1) p5: a__isNat#(length(V1)) -> a__isNatList#(V1) p6: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(s(X)) -> mark#(X) p9: mark#(cons(X1,X2)) -> mark#(X1) p10: mark#(isNatIList(X)) -> a__isNatIList#(X) p11: a__isNatIList#(cons(V1,V2)) -> a__isNat#(V1) p12: a__isNatIList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatIList(V2)) p13: a__isNatIList#(V) -> a__isNatList#(V) p14: mark#(isNatList(X)) -> a__isNatList#(X) p15: mark#(isNat(X)) -> a__isNat#(X) p16: mark#(and(X1,X2)) -> mark#(X1) p17: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p18: mark#(length(X)) -> mark#(X) p19: mark#(length(X)) -> a__length#(mark(X)) p20: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p21: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p22: a__U11#(tt(),L) -> mark#(L) p23: mark#(U11(X1,X2)) -> mark#(X1) p24: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__U11#_A(x1,x2) = ((0,0),(1,0)) x2 + (5,23) tt_A() = (6,14) a__length#_A(x1) = ((0,0),(1,0)) x1 + (5,17) mark_A(x1) = x1 + (6,17) cons_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(0,0)) x2 + (6,21) a__isNatList#_A(x1) = (5,10) a__isNat#_A(x1) = (5,10) s_A(x1) = ((1,0),(0,0)) x1 + (0,15) length_A(x1) = ((1,0),(1,0)) x1 + (14,9) a__and#_A(x1,x2) = ((0,0),(1,0)) x2 + (5,10) a__isNat_A(x1) = ((0,0),(1,0)) x1 + (6,20) isNatList_A(x1) = ((0,0),(1,0)) x1 + (0,1) mark#_A(x1) = ((0,0),(1,0)) x1 + (5,10) isNatIList_A(x1) = ((1,0),(0,0)) x1 + (10,14) a__isNatIList#_A(x1) = ((0,0),(1,0)) x1 + (5,15) isNat_A(x1) = ((0,0),(1,0)) x1 + (0,4) and_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(1,1)) x2 + (0,18) a__isNatList_A(x1) = ((0,0),(1,0)) x1 + (6,14) a__and_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(1,1)) x2 + (0,18) U11_A(x1,x2) = x1 + ((1,0),(0,0)) x2 + (14,2) a__zeros_A() = (12,22) |0|_A() = (0,23) zeros_A() = (6,22) a__U11_A(x1,x2) = x1 + ((1,0),(0,0)) x2 + (14,2) a__length_A(x1) = ((1,0),(1,0)) x1 + (14,19) a__isNatIList_A(x1) = ((1,0),(1,1)) x1 + (10,15) nil_A() = (0,24) precedence: a__isNat = isNat > mark = a__isNatList > a__zeros > zeros > isNatIList > and = a__and = a__isNatIList > a__isNatIList# > cons > a__U11# = a__length# > a__isNatList# = a__isNat# = a__and# = mark# > a__length = nil > length > |0| > tt = U11 = a__U11 > isNatList > s partial status: pi(a__U11#) = [] pi(tt) = [] pi(a__length#) = [] pi(mark) = [1] pi(cons) = [] pi(a__isNatList#) = [] pi(a__isNat#) = [] pi(s) = [] pi(length) = [] pi(a__and#) = [] pi(a__isNat) = [] pi(isNatList) = [] pi(mark#) = [] pi(isNatIList) = [] pi(a__isNatIList#) = [] pi(isNat) = [] pi(and) = [] pi(a__isNatList) = [] pi(a__and) = [] pi(U11) = [1] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [1] pi(a__length) = [] pi(a__isNatIList) = [] pi(nil) = [] The next rules are strictly ordered: p22 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__isNatList#(L) p3: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p4: a__isNat#(s(V1)) -> a__isNat#(V1) p5: a__isNat#(length(V1)) -> a__isNatList#(V1) p6: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(s(X)) -> mark#(X) p9: mark#(cons(X1,X2)) -> mark#(X1) p10: mark#(isNatIList(X)) -> a__isNatIList#(X) p11: a__isNatIList#(cons(V1,V2)) -> a__isNat#(V1) p12: a__isNatIList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatIList(V2)) p13: a__isNatIList#(V) -> a__isNatList#(V) p14: mark#(isNatList(X)) -> a__isNatList#(X) p15: mark#(isNat(X)) -> a__isNat#(X) p16: mark#(and(X1,X2)) -> mark#(X1) p17: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p18: mark#(length(X)) -> mark#(X) p19: mark#(length(X)) -> a__length#(mark(X)) p20: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p21: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p22: mark#(U11(X1,X2)) -> mark#(X1) p23: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p3: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p4: a__and#(tt(),X) -> mark#(X) p5: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p6: mark#(U11(X1,X2)) -> mark#(X1) p7: mark#(length(X)) -> a__length#(mark(X)) p8: a__length#(cons(N,L)) -> a__isNatList#(L) p9: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p10: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p11: a__isNat#(length(V1)) -> a__isNatList#(V1) p12: a__isNat#(s(V1)) -> a__isNat#(V1) p13: mark#(length(X)) -> mark#(X) p14: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p15: mark#(and(X1,X2)) -> mark#(X1) p16: mark#(isNat(X)) -> a__isNat#(X) p17: mark#(isNatList(X)) -> a__isNatList#(X) p18: mark#(isNatIList(X)) -> a__isNatIList#(X) p19: a__isNatIList#(V) -> a__isNatList#(V) p20: a__isNatIList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatIList(V2)) p21: a__isNatIList#(cons(V1,V2)) -> a__isNat#(V1) p22: mark#(cons(X1,X2)) -> mark#(X1) p23: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__U11#_A(x1,x2) = (5,17) tt_A() = (6,4) a__length#_A(x1) = (5,17) mark_A(x1) = x1 + (6,5) cons_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(1,0)) x2 + (6,18) a__and_A(x1,x2) = ((1,0),(0,0)) x1 + x2 + (0,6) a__isNatList_A(x1) = ((0,0),(1,0)) x1 + (6,11) isNat_A(x1) = ((0,0),(1,0)) x1 + (0,10) a__and#_A(x1,x2) = ((0,0),(1,0)) x2 + (5,6) mark#_A(x1) = ((0,0),(1,0)) x1 + (5,6) U11_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(0,0)) x2 + (12,4) length_A(x1) = ((1,0),(0,0)) x1 + (12,7) a__isNatList#_A(x1) = (5,6) a__isNat_A(x1) = ((0,0),(1,0)) x1 + (6,14) isNatList_A(x1) = ((0,0),(1,0)) x1 + (0,10) a__isNat#_A(x1) = (5,6) s_A(x1) = x1 and_A(x1,x2) = ((1,0),(0,0)) x1 + x2 + (0,2) isNatIList_A(x1) = ((1,0),(1,0)) x1 + (4,6) a__isNatIList#_A(x1) = ((0,0),(1,0)) x1 + (5,7) a__zeros_A() = (13,26) |0|_A() = (0,9) zeros_A() = (7,22) a__U11_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(0,0)) x2 + (12,8) a__length_A(x1) = ((1,0),(0,0)) x1 + (12,8) a__isNatIList_A(x1) = ((1,0),(1,0)) x1 + (7,11) nil_A() = (6,10) precedence: isNatList = zeros > U11 > mark = cons = a__zeros = a__length = a__isNatIList > length > tt = a__isNatList = isNat = a__isNat > a__U11 > s > a__isNatIList# > a__U11# = a__length# = a__and# = mark# = a__isNatList# = a__isNat# > isNatIList > |0| > a__and = and > nil partial status: pi(a__U11#) = [] pi(tt) = [] pi(a__length#) = [] pi(mark) = [] pi(cons) = [] pi(a__and) = [] pi(a__isNatList) = [] pi(isNat) = [] pi(a__and#) = [] pi(mark#) = [] pi(U11) = [] pi(length) = [] pi(a__isNatList#) = [] pi(a__isNat) = [] pi(isNatList) = [] pi(a__isNat#) = [] pi(s) = [] pi(and) = [2] pi(isNatIList) = [] pi(a__isNatIList#) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [] pi(a__isNatIList) = [] pi(nil) = [] The next rules are strictly ordered: p18 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p3: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p4: a__and#(tt(),X) -> mark#(X) p5: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p6: mark#(U11(X1,X2)) -> mark#(X1) p7: mark#(length(X)) -> a__length#(mark(X)) p8: a__length#(cons(N,L)) -> a__isNatList#(L) p9: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p10: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p11: a__isNat#(length(V1)) -> a__isNatList#(V1) p12: a__isNat#(s(V1)) -> a__isNat#(V1) p13: mark#(length(X)) -> mark#(X) p14: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p15: mark#(and(X1,X2)) -> mark#(X1) p16: mark#(isNat(X)) -> a__isNat#(X) p17: mark#(isNatList(X)) -> a__isNatList#(X) p18: a__isNatIList#(V) -> a__isNatList#(V) p19: a__isNatIList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatIList(V2)) p20: a__isNatIList#(cons(V1,V2)) -> a__isNat#(V1) p21: mark#(cons(X1,X2)) -> mark#(X1) p22: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p21, p22} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__isNatList#(L) p3: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p4: a__isNat#(s(V1)) -> a__isNat#(V1) p5: a__isNat#(length(V1)) -> a__isNatList#(V1) p6: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(s(X)) -> mark#(X) p9: mark#(cons(X1,X2)) -> mark#(X1) p10: mark#(isNatList(X)) -> a__isNatList#(X) p11: mark#(isNat(X)) -> a__isNat#(X) p12: mark#(and(X1,X2)) -> mark#(X1) p13: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p14: mark#(length(X)) -> mark#(X) p15: mark#(length(X)) -> a__length#(mark(X)) p16: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p17: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p18: mark#(U11(X1,X2)) -> mark#(X1) p19: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__U11#_A(x1,x2) = ((1,0),(1,1)) x2 + (4,10) tt_A() = (4,10) a__length#_A(x1) = x1 mark_A(x1) = ((1,0),(1,1)) x1 + (4,10) cons_A(x1,x2) = x1 + ((1,0),(1,1)) x2 + (4,10) a__isNatList#_A(x1) = (2,5) a__isNat#_A(x1) = (2,5) s_A(x1) = x1 length_A(x1) = x1 + (3,1) a__and#_A(x1,x2) = ((0,0),(1,0)) x1 + ((1,0),(1,1)) x2 + (2,1) a__isNat_A(x1) = (4,10) isNatList_A(x1) = (0,0) mark#_A(x1) = ((1,0),(1,1)) x1 + (2,5) isNat_A(x1) = (0,0) and_A(x1,x2) = x1 + x2 a__isNatList_A(x1) = (4,10) a__and_A(x1,x2) = x1 + ((1,0),(1,1)) x2 U11_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(1,1)) x2 + (3,3) a__zeros_A() = (5,12) |0|_A() = (0,0) zeros_A() = (1,1) a__U11_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(1,1)) x2 + (3,13) a__length_A(x1) = x1 + (3,3) a__isNatIList_A(x1) = ((1,0),(1,1)) x1 + (4,21) isNatIList_A(x1) = ((1,0),(1,1)) x1 + (0,11) nil_A() = (0,9) precedence: nil > isNat > a__U11# = a__length# = zeros > a__isNatList# = a__isNat# = a__and# = mark# > tt = mark = a__isNat = and = a__isNatList = a__and = a__isNatIList > a__zeros > cons > a__length > length > s = isNatList = U11 = a__U11 > isNatIList > |0| partial status: pi(a__U11#) = [] pi(tt) = [] pi(a__length#) = [] pi(mark) = [] pi(cons) = [2] pi(a__isNatList#) = [] pi(a__isNat#) = [] pi(s) = [] pi(length) = [] pi(a__and#) = [] pi(a__isNat) = [] pi(isNatList) = [] pi(mark#) = [] pi(isNat) = [] pi(and) = [] pi(a__isNatList) = [] pi(a__and) = [] pi(U11) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [2] pi(a__length) = [1] pi(a__isNatIList) = [] pi(isNatIList) = [] pi(nil) = [] The next rules are strictly ordered: p18 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__isNatList#(L) p3: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p4: a__isNat#(s(V1)) -> a__isNat#(V1) p5: a__isNat#(length(V1)) -> a__isNatList#(V1) p6: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(s(X)) -> mark#(X) p9: mark#(cons(X1,X2)) -> mark#(X1) p10: mark#(isNatList(X)) -> a__isNatList#(X) p11: mark#(isNat(X)) -> a__isNat#(X) p12: mark#(and(X1,X2)) -> mark#(X1) p13: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p14: mark#(length(X)) -> mark#(X) p15: mark#(length(X)) -> a__length#(mark(X)) p16: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p17: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p18: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p3: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p4: a__and#(tt(),X) -> mark#(X) p5: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p6: mark#(length(X)) -> a__length#(mark(X)) p7: a__length#(cons(N,L)) -> a__isNatList#(L) p8: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p9: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p10: a__isNat#(length(V1)) -> a__isNatList#(V1) p11: a__isNat#(s(V1)) -> a__isNat#(V1) p12: mark#(length(X)) -> mark#(X) p13: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p14: mark#(and(X1,X2)) -> mark#(X1) p15: mark#(isNat(X)) -> a__isNat#(X) p16: mark#(isNatList(X)) -> a__isNatList#(X) p17: mark#(cons(X1,X2)) -> mark#(X1) p18: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__U11#_A(x1,x2) = ((1,0),(0,0)) x2 + (39,103) tt_A() = (24,105) a__length#_A(x1) = ((1,0),(0,0)) x1 + (18,103) mark_A(x1) = ((1,0),(1,1)) x1 + (21,104) cons_A(x1,x2) = ((1,0),(1,0)) x1 + ((1,0),(0,0)) x2 + (21,31) a__and_A(x1,x2) = ((1,0),(1,0)) x1 + ((1,0),(0,0)) x2 + (4,2) a__isNatList_A(x1) = ((1,0),(1,0)) x1 + (12,7) isNat_A(x1) = ((1,0),(1,1)) x1 + (4,54) a__and#_A(x1,x2) = ((1,0),(1,1)) x1 + x2 + (1,29) mark#_A(x1) = x1 + (19,106) U11_A(x1,x2) = ((0,0),(1,0)) x1 + ((1,0),(0,0)) x2 + (20,29) length_A(x1) = ((1,0),(1,0)) x1 + (20,2) a__isNatList#_A(x1) = ((1,0),(1,1)) x1 + (22,1) a__isNat_A(x1) = ((1,0),(1,1)) x1 + (25,0) isNatList_A(x1) = ((1,0),(1,1)) x1 + (3,0) a__isNat#_A(x1) = ((1,0),(0,0)) x1 + (3,53) s_A(x1) = x1 and_A(x1,x2) = ((1,0),(1,0)) x1 + ((1,0),(0,0)) x2 + (4,1) a__zeros_A() = (22,107) |0|_A() = (0,106) zeros_A() = (1,105) a__U11_A(x1,x2) = ((1,0),(1,0)) x2 + (41,30) a__length_A(x1) = ((1,0),(1,0)) x1 + (20,9) a__isNatIList_A(x1) = ((1,0),(1,0)) x1 + (24,105) isNatIList_A(x1) = ((1,0),(1,1)) x1 + (4,32) nil_A() = (98,107) precedence: mark = a__and = s = a__U11 = a__length > length = a__isNat = zeros > a__zeros > mark# > nil > and = a__isNatIList = isNatIList > a__isNat# > a__isNatList# > a__U11# = a__length# = a__and# > a__isNatList > isNat > cons > isNatList > U11 > |0| > tt partial status: pi(a__U11#) = [] pi(tt) = [] pi(a__length#) = [] pi(mark) = [] pi(cons) = [] pi(a__and) = [] pi(a__isNatList) = [] pi(isNat) = [1] pi(a__and#) = [] pi(mark#) = [1] pi(U11) = [] pi(length) = [] pi(a__isNatList#) = [] pi(a__isNat) = [] pi(isNatList) = [1] pi(a__isNat#) = [] pi(s) = [] pi(and) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [] pi(a__isNatIList) = [] pi(isNatIList) = [] pi(nil) = [] The next rules are strictly ordered: p15 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p3: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p4: a__and#(tt(),X) -> mark#(X) p5: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p6: mark#(length(X)) -> a__length#(mark(X)) p7: a__length#(cons(N,L)) -> a__isNatList#(L) p8: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p9: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p10: a__isNat#(length(V1)) -> a__isNatList#(V1) p11: a__isNat#(s(V1)) -> a__isNat#(V1) p12: mark#(length(X)) -> mark#(X) p13: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p14: mark#(and(X1,X2)) -> mark#(X1) p15: mark#(isNatList(X)) -> a__isNatList#(X) p16: mark#(cons(X1,X2)) -> mark#(X1) p17: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__isNatList#(L) p3: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p4: a__isNat#(s(V1)) -> a__isNat#(V1) p5: a__isNat#(length(V1)) -> a__isNatList#(V1) p6: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(s(X)) -> mark#(X) p9: mark#(cons(X1,X2)) -> mark#(X1) p10: mark#(isNatList(X)) -> a__isNatList#(X) p11: mark#(and(X1,X2)) -> mark#(X1) p12: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p13: mark#(length(X)) -> mark#(X) p14: mark#(length(X)) -> a__length#(mark(X)) p15: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNat(N)) p16: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p17: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__U11#_A(x1,x2) = (2,9) tt_A() = (3,10) a__length#_A(x1) = (2,9) mark_A(x1) = x1 + (3,17) cons_A(x1,x2) = x1 + ((1,0),(0,0)) x2 + (3,23) a__isNatList#_A(x1) = (2,7) a__isNat#_A(x1) = (2,7) s_A(x1) = ((1,0),(0,0)) x1 + (0,6) length_A(x1) = x1 + (11,18) a__and#_A(x1,x2) = ((0,0),(1,0)) x2 + (2,7) a__isNat_A(x1) = ((0,0),(1,0)) x1 + (3,11) isNatList_A(x1) = ((0,0),(1,0)) x1 + (0,3) mark#_A(x1) = ((0,0),(1,0)) x1 + (2,7) and_A(x1,x2) = x1 + ((1,0),(1,1)) x2 + (0,8) a__isNatList_A(x1) = ((0,0),(1,0)) x1 + (3,20) isNat_A(x1) = (1,8) a__and_A(x1,x2) = x1 + ((1,0),(1,1)) x2 + (0,8) U11_A(x1,x2) = ((0,0),(1,0)) x1 + ((1,0),(1,1)) x2 + (12,37) a__zeros_A() = (7,25) |0|_A() = (0,1) zeros_A() = (4,9) a__U11_A(x1,x2) = ((1,0),(0,0)) x2 + (14,36) a__length_A(x1) = x1 + (11,18) a__isNatIList_A(x1) = x1 + (5,19) isNatIList_A(x1) = x1 + (4,18) nil_A() = (4,2) precedence: a__isNat = isNat > a__isNatIList = isNatIList > mark = cons = isNatList = a__isNatList = a__zeros > and = a__and > nil > a__U11 > a__U11# = tt = a__length# = a__isNatList# = a__isNat# = a__and# = mark# = U11 > |0| > a__length > s = length > zeros partial status: pi(a__U11#) = [] pi(tt) = [] pi(a__length#) = [] pi(mark) = [] pi(cons) = [] pi(a__isNatList#) = [] pi(a__isNat#) = [] pi(s) = [] pi(length) = [1] pi(a__and#) = [] pi(a__isNat) = [] pi(isNatList) = [] pi(mark#) = [] pi(and) = [] pi(a__isNatList) = [] pi(isNat) = [] pi(a__and) = [2] pi(U11) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [] pi(a__isNatIList) = [] pi(isNatIList) = [] pi(nil) = [] The next rules are strictly ordered: p15 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__isNatList#(L) p3: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p4: a__isNat#(s(V1)) -> a__isNat#(V1) p5: a__isNat#(length(V1)) -> a__isNatList#(V1) p6: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(s(X)) -> mark#(X) p9: mark#(cons(X1,X2)) -> mark#(X1) p10: mark#(isNatList(X)) -> a__isNatList#(X) p11: mark#(and(X1,X2)) -> mark#(X1) p12: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p13: mark#(length(X)) -> mark#(X) p14: mark#(length(X)) -> a__length#(mark(X)) p15: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p16: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p3: a__length#(cons(N,L)) -> a__isNatList#(L) p4: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p5: a__and#(tt(),X) -> mark#(X) p6: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p7: mark#(length(X)) -> a__length#(mark(X)) p8: mark#(length(X)) -> mark#(X) p9: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p10: mark#(and(X1,X2)) -> mark#(X1) p11: mark#(isNatList(X)) -> a__isNatList#(X) p12: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p13: a__isNat#(length(V1)) -> a__isNatList#(V1) p14: a__isNat#(s(V1)) -> a__isNat#(V1) p15: mark#(cons(X1,X2)) -> mark#(X1) p16: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__U11#_A(x1,x2) = ((1,0),(1,1)) x2 + (10,19) tt_A() = (9,24) a__length#_A(x1) = ((1,0),(1,1)) x1 + (2,1) mark_A(x1) = x1 + (8,10) cons_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(1,1)) x2 + (8,10) a__and_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(0,0)) x2 + (0,9) a__isNatList_A(x1) = ((1,0),(1,1)) x1 + (4,22) isNat_A(x1) = ((1,0),(1,1)) x1 + (3,20) a__isNatList#_A(x1) = ((1,0),(0,0)) x1 + (6,15) a__and#_A(x1,x2) = ((1,0),(0,0)) x2 + (6,2) a__isNat_A(x1) = ((1,0),(0,0)) x1 + (10,26) isNatList_A(x1) = x1 + (1,11) mark#_A(x1) = ((1,0),(0,0)) x1 + (6,2) U11_A(x1,x2) = ((1,0),(1,0)) x2 + (11,14) length_A(x1) = ((1,0),(1,0)) x1 + (9,14) and_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(0,0)) x2 + (0,1) a__isNat#_A(x1) = ((1,0),(1,1)) x1 + (0,1) s_A(x1) = x1 a__zeros_A() = (8,27) |0|_A() = (0,26) zeros_A() = (0,17) a__U11_A(x1,x2) = ((1,0),(1,0)) x2 + (17,23) a__length_A(x1) = ((1,0),(1,0)) x1 + (9,15) a__isNatIList_A(x1) = ((1,0),(0,0)) x1 + (10,25) isNatIList_A(x1) = ((1,0),(0,0)) x1 + (3,16) nil_A() = (12,25) precedence: a__length > mark = s = a__U11 > a__zeros > cons = isNatList > a__U11# = a__length# > a__isNatList# > a__and# = mark# = a__isNat# > length > a__isNatIList > a__isNat > a__isNatList > a__and = U11 = and > tt > isNatIList > |0| > zeros = nil > isNat partial status: pi(a__U11#) = [] pi(tt) = [] pi(a__length#) = [] pi(mark) = [1] pi(cons) = [] pi(a__and) = [] pi(a__isNatList) = [] pi(isNat) = [] pi(a__isNatList#) = [] pi(a__and#) = [] pi(a__isNat) = [] pi(isNatList) = [] pi(mark#) = [] pi(U11) = [] pi(length) = [] pi(and) = [] pi(a__isNat#) = [] pi(s) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [] pi(a__isNatIList) = [] pi(isNatIList) = [] pi(nil) = [] The next rules are strictly ordered: p13 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p3: a__length#(cons(N,L)) -> a__isNatList#(L) p4: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p5: a__and#(tt(),X) -> mark#(X) p6: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p7: mark#(length(X)) -> a__length#(mark(X)) p8: mark#(length(X)) -> mark#(X) p9: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p10: mark#(and(X1,X2)) -> mark#(X1) p11: mark#(isNatList(X)) -> a__isNatList#(X) p12: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p13: a__isNat#(s(V1)) -> a__isNat#(V1) p14: mark#(cons(X1,X2)) -> mark#(X1) p15: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p14, p15} {p13} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__isNatList#(L) p3: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p4: a__and#(tt(),X) -> mark#(X) p5: mark#(s(X)) -> mark#(X) p6: mark#(cons(X1,X2)) -> mark#(X1) p7: mark#(isNatList(X)) -> a__isNatList#(X) p8: mark#(and(X1,X2)) -> mark#(X1) p9: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p10: mark#(length(X)) -> mark#(X) p11: mark#(length(X)) -> a__length#(mark(X)) p12: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p13: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__U11#_A(x1,x2) = ((0,0),(1,0)) x2 + (24,26) tt_A() = (0,2) a__length#_A(x1) = ((0,0),(1,0)) x1 + (24,26) mark_A(x1) = x1 + (0,11) cons_A(x1,x2) = ((1,0),(1,1)) x1 + ((1,0),(1,1)) x2 + (0,5) a__isNatList#_A(x1) = ((0,0),(1,0)) x1 + (24,4) a__and#_A(x1,x2) = ((0,0),(1,0)) x2 + (24,4) a__isNat_A(x1) = x1 isNatList_A(x1) = x1 + (0,3) mark#_A(x1) = ((0,0),(1,0)) x1 + (24,4) s_A(x1) = x1 and_A(x1,x2) = ((1,0),(1,1)) x1 + ((1,0),(1,1)) x2 + (0,12) length_A(x1) = ((1,0),(0,0)) x1 + (23,14) a__and_A(x1,x2) = ((1,0),(1,1)) x1 + ((1,0),(1,1)) x2 + (0,12) a__isNatList_A(x1) = x1 + (0,13) isNat_A(x1) = x1 U11_A(x1,x2) = ((1,0),(0,0)) x2 + (23,5) a__zeros_A() = (1,13) |0|_A() = (0,3) zeros_A() = (1,3) a__U11_A(x1,x2) = ((1,0),(0,0)) x2 + (23,15) a__length_A(x1) = ((1,0),(0,0)) x1 + (23,15) a__isNatIList_A(x1) = x1 + (1,12) isNatIList_A(x1) = x1 + (1,1) nil_A() = (1,1) precedence: mark > a__isNat = zeros > a__and = a__isNatList > isNat > s = a__U11 = a__length > tt > length = a__isNatIList > isNatList = a__zeros > U11 = isNatIList > a__U11# = a__length# = a__isNatList# = a__and# = mark# > and > cons = nil > |0| partial status: pi(a__U11#) = [] pi(tt) = [] pi(a__length#) = [] pi(mark) = [1] pi(cons) = [2] pi(a__isNatList#) = [] pi(a__and#) = [] pi(a__isNat) = [] pi(isNatList) = [1] pi(mark#) = [] pi(s) = [] pi(and) = [] pi(length) = [] pi(a__and) = [2] pi(a__isNatList) = [1] pi(isNat) = [] pi(U11) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [] pi(a__isNatIList) = [1] pi(isNatIList) = [1] pi(nil) = [] The next rules are strictly ordered: p13 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__isNatList#(L) p3: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p4: a__and#(tt(),X) -> mark#(X) p5: mark#(s(X)) -> mark#(X) p6: mark#(cons(X1,X2)) -> mark#(X1) p7: mark#(isNatList(X)) -> a__isNatList#(X) p8: mark#(and(X1,X2)) -> mark#(X1) p9: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p10: mark#(length(X)) -> mark#(X) p11: mark#(length(X)) -> a__length#(mark(X)) p12: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__U11#(a__and(a__isNatList(L),isNat(N)),L) p3: a__length#(cons(N,L)) -> a__isNatList#(L) p4: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p5: a__and#(tt(),X) -> mark#(X) p6: mark#(length(X)) -> a__length#(mark(X)) p7: mark#(length(X)) -> mark#(X) p8: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p9: mark#(and(X1,X2)) -> mark#(X1) p10: mark#(isNatList(X)) -> a__isNatList#(X) p11: mark#(cons(X1,X2)) -> mark#(X1) p12: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__U11#_A(x1,x2) = ((0,0),(1,0)) x1 + x2 + (22,11) tt_A() = (23,49) a__length#_A(x1) = x1 + (0,1) mark_A(x1) = x1 + (22,32) cons_A(x1,x2) = ((1,0),(1,0)) x1 + ((1,0),(1,1)) x2 + (22,29) a__and_A(x1,x2) = x1 + x2 + (3,47) a__isNatList_A(x1) = ((1,0),(1,1)) x1 + (11,28) isNat_A(x1) = ((1,0),(1,1)) x1 + (3,2) a__isNatList#_A(x1) = ((1,0),(1,1)) x1 + (21,79) a__and#_A(x1,x2) = ((1,0),(1,0)) x1 + ((1,0),(1,1)) x2 + (1,72) a__isNat_A(x1) = ((1,0),(1,1)) x1 + (24,1) isNatList_A(x1) = ((1,0),(1,1)) x1 + (5,30) mark#_A(x1) = x1 + (21,48) length_A(x1) = ((1,0),(0,0)) x1 + (23,3) and_A(x1,x2) = x1 + x2 + (3,47) s_A(x1) = x1 a__zeros_A() = (23,81) |0|_A() = (0,2) zeros_A() = (1,50) a__U11_A(x1,x2) = ((1,0),(0,0)) x2 + (45,3) a__length_A(x1) = ((1,0),(0,0)) x1 + (23,3) a__isNatIList_A(x1) = ((1,0),(1,1)) x1 + (23,29) isNatIList_A(x1) = ((1,0),(1,1)) x1 + (2,32) nil_A() = (13,1) U11_A(x1,x2) = ((1,0),(0,0)) x2 + (45,1) precedence: a__isNatIList > tt = nil > mark = length = s = a__U11 = a__length > cons = a__zeros > a__isNatList = isNatList > mark# > a__U11# = a__length# = a__and = a__isNatList# = a__and# = and > isNat = a__isNat = isNatIList > |0| > zeros = U11 partial status: pi(a__U11#) = [] pi(tt) = [] pi(a__length#) = [1] pi(mark) = [1] pi(cons) = [] pi(a__and) = [] pi(a__isNatList) = [1] pi(isNat) = [] pi(a__isNatList#) = [1] pi(a__and#) = [] pi(a__isNat) = [] pi(isNatList) = [1] pi(mark#) = [] pi(length) = [] pi(and) = [] pi(s) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [] pi(a__isNatIList) = [] pi(isNatIList) = [] pi(nil) = [] pi(U11) = [] The next rules are strictly ordered: p2 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),L) -> a__length#(mark(L)) p2: a__length#(cons(N,L)) -> a__isNatList#(L) p3: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p4: a__and#(tt(),X) -> mark#(X) p5: mark#(length(X)) -> a__length#(mark(X)) p6: mark#(length(X)) -> mark#(X) p7: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p8: mark#(and(X1,X2)) -> mark#(X1) p9: mark#(isNatList(X)) -> a__isNatList#(X) p10: mark#(cons(X1,X2)) -> mark#(X1) p11: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p2, p3, p4, p5, p6, p7, p8, p9, p10, p11} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__length#(cons(N,L)) -> a__isNatList#(L) p2: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p3: a__and#(tt(),X) -> mark#(X) p4: mark#(s(X)) -> mark#(X) p5: mark#(cons(X1,X2)) -> mark#(X1) p6: mark#(isNatList(X)) -> a__isNatList#(X) p7: mark#(and(X1,X2)) -> mark#(X1) p8: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p9: mark#(length(X)) -> mark#(X) p10: mark#(length(X)) -> a__length#(mark(X)) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__length#_A(x1) = x1 + (12,1) cons_A(x1,x2) = ((1,0),(1,0)) x1 + ((1,0),(1,0)) x2 + (15,27) a__isNatList#_A(x1) = ((1,0),(0,0)) x1 + (14,24) a__and#_A(x1,x2) = ((1,0),(1,0)) x2 + (28,24) a__isNat_A(x1) = ((1,0),(0,0)) x1 + (2,46) isNatList_A(x1) = ((1,0),(0,0)) x1 tt_A() = (2,1) mark#_A(x1) = ((1,0),(1,0)) x1 + (27,23) s_A(x1) = ((1,0),(0,0)) x1 + (0,3) and_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(0,0)) x2 + (26,25) mark_A(x1) = x1 + (15,48) length_A(x1) = ((1,0),(1,0)) x1 + (26,0) a__zeros_A() = (16,28) |0|_A() = (0,29) zeros_A() = (1,2) a__U11_A(x1,x2) = ((0,0),(1,0)) x1 + ((1,0),(0,0)) x2 + (41,2) a__length_A(x1) = ((1,0),(1,0)) x1 + (26,29) a__and_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(0,0)) x2 + (26,26) a__isNatIList_A(x1) = ((1,0),(0,0)) x1 + (15,47) a__isNatList_A(x1) = ((1,0),(0,0)) x1 + (15,45) isNatIList_A(x1) = ((1,0),(0,0)) x1 + (1,0) nil_A() = (0,0) isNat_A(x1) = ((1,0),(0,0)) x1 + (1,0) U11_A(x1,x2) = ((1,0),(0,0)) x2 + (27,1) precedence: a__isNatIList = a__isNatList > a__isNat > tt > mark > a__zeros > cons = a__and > length = |0| = a__U11 = a__length = U11 > and > a__length# = zeros = isNatIList > a__isNatList# = a__and# = isNatList = mark# = nil > s = isNat partial status: pi(a__length#) = [1] pi(cons) = [] pi(a__isNatList#) = [] pi(a__and#) = [] pi(a__isNat) = [] pi(isNatList) = [] pi(tt) = [] pi(mark#) = [] pi(s) = [] pi(and) = [] pi(mark) = [] pi(length) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [] pi(a__and) = [] pi(a__isNatIList) = [] pi(a__isNatList) = [] pi(isNatIList) = [] pi(nil) = [] pi(isNat) = [] pi(U11) = [] The next rules are strictly ordered: p10 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__length#(cons(N,L)) -> a__isNatList#(L) p2: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p3: a__and#(tt(),X) -> mark#(X) p4: mark#(s(X)) -> mark#(X) p5: mark#(cons(X1,X2)) -> mark#(X1) p6: mark#(isNatList(X)) -> a__isNatList#(X) p7: mark#(and(X1,X2)) -> mark#(X1) p8: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p9: mark#(length(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p2, p3, p4, p5, p6, p7, p8, p9} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p2: a__and#(tt(),X) -> mark#(X) p3: mark#(length(X)) -> mark#(X) p4: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p5: mark#(and(X1,X2)) -> mark#(X1) p6: mark#(isNatList(X)) -> a__isNatList#(X) p7: mark#(cons(X1,X2)) -> mark#(X1) p8: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__isNatList#_A(x1) = ((1,0),(1,1)) x1 + (1,2) cons_A(x1,x2) = ((1,0),(0,0)) x1 + ((1,0),(0,0)) x2 + (20,28) a__and#_A(x1,x2) = x1 + ((1,0),(0,0)) x2 + (1,1) a__isNat_A(x1) = ((1,0),(0,0)) x1 + (2,26) isNatList_A(x1) = ((1,0),(1,1)) x1 + (2,1) tt_A() = (0,4) mark#_A(x1) = ((1,0),(1,1)) x1 + (0,6) length_A(x1) = ((1,0),(0,0)) x1 + (21,7) and_A(x1,x2) = x1 + ((1,0),(0,0)) x2 + (34,7) mark_A(x1) = ((1,0),(1,0)) x1 + (20,8) s_A(x1) = x1 a__zeros_A() = (42,29) |0|_A() = (0,30) zeros_A() = (22,5) a__U11_A(x1,x2) = ((1,0),(0,0)) x2 + (41,29) a__length_A(x1) = ((1,0),(0,0)) x1 + (21,29) a__and_A(x1,x2) = x1 + ((1,0),(0,0)) x2 + (34,33) a__isNatIList_A(x1) = ((1,0),(1,1)) x1 + (20,10) a__isNatList_A(x1) = ((1,0),(1,0)) x1 + (19,2) isNatIList_A(x1) = ((1,0),(0,0)) x1 + (1,29) nil_A() = (1,3) isNat_A(x1) = ((1,0),(0,0)) x1 + (1,25) U11_A(x1,x2) = ((1,0),(0,0)) x2 + (22,7) precedence: mark = s = |0| = a__U11 = a__length > isNatList = nil > a__and = a__isNatIList = a__isNatList > and > a__isNatList# = a__and# = mark# = isNatIList > a__isNat > tt > cons = a__zeros > length > zeros > U11 > isNat partial status: pi(a__isNatList#) = [1] pi(cons) = [] pi(a__and#) = [] pi(a__isNat) = [] pi(isNatList) = [] pi(tt) = [] pi(mark#) = [1] pi(length) = [] pi(and) = [1] pi(mark) = [] pi(s) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [] pi(a__and) = [] pi(a__isNatIList) = [1] pi(a__isNatList) = [] pi(isNatIList) = [] pi(nil) = [] pi(isNat) = [] pi(U11) = [] The next rules are strictly ordered: p4 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p2: a__and#(tt(),X) -> mark#(X) p3: mark#(length(X)) -> mark#(X) p4: mark#(and(X1,X2)) -> mark#(X1) p5: mark#(isNatList(X)) -> a__isNatList#(X) p6: mark#(cons(X1,X2)) -> mark#(X1) p7: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p2: a__and#(tt(),X) -> mark#(X) p3: mark#(s(X)) -> mark#(X) p4: mark#(cons(X1,X2)) -> mark#(X1) p5: mark#(isNatList(X)) -> a__isNatList#(X) p6: mark#(and(X1,X2)) -> mark#(X1) p7: mark#(length(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__isNatList#_A(x1) = ((0,0),(1,0)) x1 + (2,3) cons_A(x1,x2) = x1 + x2 + (8,0) a__and#_A(x1,x2) = ((0,0),(1,0)) x2 + (2,4) a__isNat_A(x1) = ((1,0),(1,0)) x1 + (0,12) isNatList_A(x1) = ((1,0),(0,0)) x1 + (1,2) tt_A() = (0,2) mark#_A(x1) = ((0,0),(1,0)) x1 + (2,3) s_A(x1) = ((1,0),(0,0)) x1 + (0,1) and_A(x1,x2) = x1 + x2 + (9,1) length_A(x1) = ((1,0),(0,0)) x1 + (5,8) a__zeros_A() = (14,12) |0|_A() = (0,11) zeros_A() = (6,0) a__U11_A(x1,x2) = ((1,0),(0,0)) x2 + (13,2) a__length_A(x1) = ((1,0),(0,0)) x1 + (5,10) mark_A(x1) = ((1,0),(1,1)) x1 + (8,7) a__isNatIList_A(x1) = x1 + (4,1) a__isNatList_A(x1) = ((1,0),(1,0)) x1 + (3,9) a__and_A(x1,x2) = x1 + x2 + (9,2) isNatIList_A(x1) = x1 nil_A() = (0,12) isNat_A(x1) = ((1,0),(1,0)) x1 + (0,11) U11_A(x1,x2) = ((1,0),(0,0)) x2 + (5,1) precedence: |0| > s > cons = a__isNat = tt = a__zeros = mark = a__isNatList = a__and > a__U11 > length = a__length > a__isNatList# = a__and# = mark# > isNatList > and = zeros = U11 > isNat > a__isNatIList = isNatIList = nil partial status: pi(a__isNatList#) = [] pi(cons) = [] pi(a__and#) = [] pi(a__isNat) = [] pi(isNatList) = [] pi(tt) = [] pi(mark#) = [] pi(s) = [] pi(and) = [2] pi(length) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [] pi(mark) = [] pi(a__isNatIList) = [1] pi(a__isNatList) = [] pi(a__and) = [] pi(isNatIList) = [] pi(nil) = [] pi(isNat) = [] pi(U11) = [] The next rules are strictly ordered: p6 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p2: a__and#(tt(),X) -> mark#(X) p3: mark#(s(X)) -> mark#(X) p4: mark#(cons(X1,X2)) -> mark#(X1) p5: mark#(isNatList(X)) -> a__isNatList#(X) p6: mark#(length(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p2: a__and#(tt(),X) -> mark#(X) p3: mark#(length(X)) -> mark#(X) p4: mark#(isNatList(X)) -> a__isNatList#(X) p5: mark#(cons(X1,X2)) -> mark#(X1) p6: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__isNatList#_A(x1) = ((1,0),(0,0)) x1 + (1,1) cons_A(x1,x2) = x1 + ((1,0),(0,0)) x2 + (8,8) a__and#_A(x1,x2) = x2 + (0,1) a__isNat_A(x1) = ((1,0),(0,0)) x1 + (5,5) isNatList_A(x1) = ((1,0),(0,0)) x1 + (6,0) tt_A() = (0,3) mark#_A(x1) = ((1,0),(0,0)) x1 + (0,1) length_A(x1) = x1 + (14,0) s_A(x1) = ((1,0),(0,0)) x1 + (0,6) a__zeros_A() = (19,10) |0|_A() = (0,1) zeros_A() = (11,0) a__U11_A(x1,x2) = ((1,0),(0,0)) x2 + (22,7) a__length_A(x1) = x1 + (14,0) mark_A(x1) = ((1,0),(1,1)) x1 + (8,0) a__isNatIList_A(x1) = ((1,0),(0,0)) x1 + (14,15) a__isNatList_A(x1) = ((1,0),(0,0)) x1 + (13,4) a__and_A(x1,x2) = ((1,0),(0,0)) x1 + x2 + (9,5) isNatIList_A(x1) = ((1,0),(0,0)) x1 + (7,9) nil_A() = (1,2) isNat_A(x1) = ((1,0),(0,0)) x1 + (4,2) U11_A(x1,x2) = ((1,0),(0,0)) x2 + (21,0) and_A(x1,x2) = ((1,0),(0,0)) x1 + x2 + (9,0) precedence: a__and > a__U11 = mark = a__isNatIList > length = a__length > a__and# > mark# = a__zeros > isNatIList = nil > cons > |0| > a__isNat = zeros > s > a__isNatList# = isNatList = a__isNatList = U11 > isNat > tt > and partial status: pi(a__isNatList#) = [] pi(cons) = [1] pi(a__and#) = [2] pi(a__isNat) = [] pi(isNatList) = [] pi(tt) = [] pi(mark#) = [] pi(length) = [1] pi(s) = [] pi(a__zeros) = [] pi(|0|) = [] pi(zeros) = [] pi(a__U11) = [] pi(a__length) = [1] pi(mark) = [] pi(a__isNatIList) = [] pi(a__isNatList) = [] pi(a__and) = [] pi(isNatIList) = [] pi(nil) = [] pi(isNat) = [] pi(U11) = [] pi(and) = [] The next rules are strictly ordered: p4 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNat(V1),isNatList(V2)) p2: a__and#(tt(),X) -> mark#(X) p3: mark#(length(X)) -> mark#(X) p4: mark#(cons(X1,X2)) -> mark#(X1) p5: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p3, p4, p5} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(length(X)) -> mark#(X) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: mark#_A(x1) = x1 + (1,2) length_A(x1) = ((1,0),(1,1)) x1 + (2,3) s_A(x1) = x1 + (2,1) cons_A(x1,x2) = ((1,0),(1,1)) x1 + x2 + (2,3) precedence: length = s > mark# = cons partial status: pi(mark#) = [1] pi(length) = [1] pi(s) = [1] pi(cons) = [2] The next rules are strictly ordered: p2 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(length(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1, p2} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(length(X)) -> mark#(X) p2: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: mark#_A(x1) = ((1,0),(1,0)) x1 + (1,2) length_A(x1) = ((1,0),(0,0)) x1 + (2,1) cons_A(x1,x2) = ((1,0),(0,0)) x1 + x2 + (2,1) precedence: mark# = length = cons partial status: pi(mark#) = [] pi(length) = [] pi(cons) = [2] The next rules are strictly ordered: p1 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The estimated dependency graph contains the following SCCs: {p1} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: mark#_A(x1) = ((1,0),(1,1)) x1 cons_A(x1,x2) = ((1,0),(1,1)) x1 + x2 + (1,1) precedence: mark# = cons partial status: pi(mark#) = [1] pi(cons) = [1] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__isNat#(s(V1)) -> a__isNat#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),L) -> s(a__length(mark(L))) r3: a__and(tt(),X) -> mark(X) r4: a__isNat(|0|()) -> tt() r5: a__isNat(length(V1)) -> a__isNatList(V1) r6: a__isNat(s(V1)) -> a__isNat(V1) r7: a__isNatIList(V) -> a__isNatList(V) r8: a__isNatIList(zeros()) -> tt() r9: a__isNatIList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatIList(V2)) r10: a__isNatList(nil()) -> tt() r11: a__isNatList(cons(V1,V2)) -> a__and(a__isNat(V1),isNatList(V2)) r12: a__length(nil()) -> |0|() r13: a__length(cons(N,L)) -> a__U11(a__and(a__isNatList(L),isNat(N)),L) r14: mark(zeros()) -> a__zeros() r15: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r16: mark(length(X)) -> a__length(mark(X)) r17: mark(and(X1,X2)) -> a__and(mark(X1),X2) r18: mark(isNat(X)) -> a__isNat(X) r19: mark(isNatList(X)) -> a__isNatList(X) r20: mark(isNatIList(X)) -> a__isNatIList(X) r21: mark(cons(X1,X2)) -> cons(mark(X1),X2) r22: mark(|0|()) -> |0|() r23: mark(tt()) -> tt() r24: mark(s(X)) -> s(mark(X)) r25: mark(nil()) -> nil() r26: a__zeros() -> zeros() r27: a__U11(X1,X2) -> U11(X1,X2) r28: a__length(X) -> length(X) r29: a__and(X1,X2) -> and(X1,X2) r30: a__isNat(X) -> isNat(X) r31: a__isNatList(X) -> isNatList(X) r32: a__isNatIList(X) -> isNatIList(X) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: lexicographic order interpretations: a__isNat#_A(x1) = ((1,0),(1,0)) x1 + (2,2) s_A(x1) = ((1,0),(0,0)) x1 + (1,1) precedence: a__isNat# = s partial status: pi(a__isNat#) = [] pi(s) = [] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains.