YES We show the termination of the TRS R: a__zeros() -> cons(|0|(),zeros()) a__U11(tt()) -> tt() a__U21(tt()) -> tt() a__U31(tt()) -> tt() a__U41(tt(),V2) -> a__U42(a__isNatIList(V2)) a__U42(tt()) -> tt() a__U51(tt(),V2) -> a__U52(a__isNatList(V2)) a__U52(tt()) -> tt() a__U61(tt(),V2) -> a__U62(a__isNatIList(V2)) a__U62(tt()) -> tt() a__U71(tt(),L,N) -> a__U72(a__isNat(N),L) a__U72(tt(),L) -> s(a__length(mark(L))) a__U81(tt()) -> nil() a__U91(tt(),IL,M,N) -> a__U92(a__isNat(M),IL,M,N) a__U92(tt(),IL,M,N) -> a__U93(a__isNat(N),IL,M,N) a__U93(tt(),IL,M,N) -> cons(mark(N),take(M,IL)) a__isNat(|0|()) -> tt() a__isNat(length(V1)) -> a__U11(a__isNatList(V1)) a__isNat(s(V1)) -> a__U21(a__isNat(V1)) a__isNatIList(V) -> a__U31(a__isNatList(V)) a__isNatIList(zeros()) -> tt() a__isNatIList(cons(V1,V2)) -> a__U41(a__isNat(V1),V2) a__isNatList(nil()) -> tt() a__isNatList(cons(V1,V2)) -> a__U51(a__isNat(V1),V2) a__isNatList(take(V1,V2)) -> a__U61(a__isNat(V1),V2) a__length(nil()) -> |0|() a__length(cons(N,L)) -> a__U71(a__isNatList(L),L,N) a__take(|0|(),IL) -> a__U81(a__isNatIList(IL)) a__take(s(M),cons(N,IL)) -> a__U91(a__isNatIList(IL),IL,M,N) mark(zeros()) -> a__zeros() mark(U11(X)) -> a__U11(mark(X)) mark(U21(X)) -> a__U21(mark(X)) mark(U31(X)) -> a__U31(mark(X)) mark(U41(X1,X2)) -> a__U41(mark(X1),X2) mark(U42(X)) -> a__U42(mark(X)) mark(isNatIList(X)) -> a__isNatIList(X) mark(U51(X1,X2)) -> a__U51(mark(X1),X2) mark(U52(X)) -> a__U52(mark(X)) mark(isNatList(X)) -> a__isNatList(X) mark(U61(X1,X2)) -> a__U61(mark(X1),X2) mark(U62(X)) -> a__U62(mark(X)) mark(U71(X1,X2,X3)) -> a__U71(mark(X1),X2,X3) mark(U72(X1,X2)) -> a__U72(mark(X1),X2) mark(isNat(X)) -> a__isNat(X) mark(length(X)) -> a__length(mark(X)) mark(U81(X)) -> a__U81(mark(X)) mark(U91(X1,X2,X3,X4)) -> a__U91(mark(X1),X2,X3,X4) mark(U92(X1,X2,X3,X4)) -> a__U92(mark(X1),X2,X3,X4) mark(U93(X1,X2,X3,X4)) -> a__U93(mark(X1),X2,X3,X4) mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) 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(X) -> U11(X) a__U21(X) -> U21(X) a__U31(X) -> U31(X) a__U41(X1,X2) -> U41(X1,X2) a__U42(X) -> U42(X) a__isNatIList(X) -> isNatIList(X) a__U51(X1,X2) -> U51(X1,X2) a__U52(X) -> U52(X) a__isNatList(X) -> isNatList(X) a__U61(X1,X2) -> U61(X1,X2) a__U62(X) -> U62(X) a__U71(X1,X2,X3) -> U71(X1,X2,X3) a__U72(X1,X2) -> U72(X1,X2) a__isNat(X) -> isNat(X) a__length(X) -> length(X) a__U81(X) -> U81(X) a__U91(X1,X2,X3,X4) -> U91(X1,X2,X3,X4) a__U92(X1,X2,X3,X4) -> U92(X1,X2,X3,X4) a__U93(X1,X2,X3,X4) -> U93(X1,X2,X3,X4) a__take(X1,X2) -> take(X1,X2) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U41#(tt(),V2) -> a__U42#(a__isNatIList(V2)) p2: a__U41#(tt(),V2) -> a__isNatIList#(V2) p3: a__U51#(tt(),V2) -> a__U52#(a__isNatList(V2)) p4: a__U51#(tt(),V2) -> a__isNatList#(V2) p5: a__U61#(tt(),V2) -> a__U62#(a__isNatIList(V2)) p6: a__U61#(tt(),V2) -> a__isNatIList#(V2) p7: a__U71#(tt(),L,N) -> a__U72#(a__isNat(N),L) p8: a__U71#(tt(),L,N) -> a__isNat#(N) p9: a__U72#(tt(),L) -> a__length#(mark(L)) p10: a__U72#(tt(),L) -> mark#(L) p11: a__U91#(tt(),IL,M,N) -> a__U92#(a__isNat(M),IL,M,N) p12: a__U91#(tt(),IL,M,N) -> a__isNat#(M) p13: a__U92#(tt(),IL,M,N) -> a__U93#(a__isNat(N),IL,M,N) p14: a__U92#(tt(),IL,M,N) -> a__isNat#(N) p15: a__U93#(tt(),IL,M,N) -> mark#(N) p16: a__isNat#(length(V1)) -> a__U11#(a__isNatList(V1)) p17: a__isNat#(length(V1)) -> a__isNatList#(V1) p18: a__isNat#(s(V1)) -> a__U21#(a__isNat(V1)) p19: a__isNat#(s(V1)) -> a__isNat#(V1) p20: a__isNatIList#(V) -> a__U31#(a__isNatList(V)) p21: a__isNatIList#(V) -> a__isNatList#(V) p22: a__isNatIList#(cons(V1,V2)) -> a__U41#(a__isNat(V1),V2) p23: a__isNatIList#(cons(V1,V2)) -> a__isNat#(V1) p24: a__isNatList#(cons(V1,V2)) -> a__U51#(a__isNat(V1),V2) p25: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p26: a__isNatList#(take(V1,V2)) -> a__U61#(a__isNat(V1),V2) p27: a__isNatList#(take(V1,V2)) -> a__isNat#(V1) p28: a__length#(cons(N,L)) -> a__U71#(a__isNatList(L),L,N) p29: a__length#(cons(N,L)) -> a__isNatList#(L) p30: a__take#(|0|(),IL) -> a__U81#(a__isNatIList(IL)) p31: a__take#(|0|(),IL) -> a__isNatIList#(IL) p32: a__take#(s(M),cons(N,IL)) -> a__U91#(a__isNatIList(IL),IL,M,N) p33: a__take#(s(M),cons(N,IL)) -> a__isNatIList#(IL) p34: mark#(zeros()) -> a__zeros#() p35: mark#(U11(X)) -> a__U11#(mark(X)) p36: mark#(U11(X)) -> mark#(X) p37: mark#(U21(X)) -> a__U21#(mark(X)) p38: mark#(U21(X)) -> mark#(X) p39: mark#(U31(X)) -> a__U31#(mark(X)) p40: mark#(U31(X)) -> mark#(X) p41: mark#(U41(X1,X2)) -> a__U41#(mark(X1),X2) p42: mark#(U41(X1,X2)) -> mark#(X1) p43: mark#(U42(X)) -> a__U42#(mark(X)) p44: mark#(U42(X)) -> mark#(X) p45: mark#(isNatIList(X)) -> a__isNatIList#(X) p46: mark#(U51(X1,X2)) -> a__U51#(mark(X1),X2) p47: mark#(U51(X1,X2)) -> mark#(X1) p48: mark#(U52(X)) -> a__U52#(mark(X)) p49: mark#(U52(X)) -> mark#(X) p50: mark#(isNatList(X)) -> a__isNatList#(X) p51: mark#(U61(X1,X2)) -> a__U61#(mark(X1),X2) p52: mark#(U61(X1,X2)) -> mark#(X1) p53: mark#(U62(X)) -> a__U62#(mark(X)) p54: mark#(U62(X)) -> mark#(X) p55: mark#(U71(X1,X2,X3)) -> a__U71#(mark(X1),X2,X3) p56: mark#(U71(X1,X2,X3)) -> mark#(X1) p57: mark#(U72(X1,X2)) -> a__U72#(mark(X1),X2) p58: mark#(U72(X1,X2)) -> mark#(X1) p59: mark#(isNat(X)) -> a__isNat#(X) p60: mark#(length(X)) -> a__length#(mark(X)) p61: mark#(length(X)) -> mark#(X) p62: mark#(U81(X)) -> a__U81#(mark(X)) p63: mark#(U81(X)) -> mark#(X) p64: mark#(U91(X1,X2,X3,X4)) -> a__U91#(mark(X1),X2,X3,X4) p65: mark#(U91(X1,X2,X3,X4)) -> mark#(X1) p66: mark#(U92(X1,X2,X3,X4)) -> a__U92#(mark(X1),X2,X3,X4) p67: mark#(U92(X1,X2,X3,X4)) -> mark#(X1) p68: mark#(U93(X1,X2,X3,X4)) -> a__U93#(mark(X1),X2,X3,X4) p69: mark#(U93(X1,X2,X3,X4)) -> mark#(X1) p70: mark#(take(X1,X2)) -> a__take#(mark(X1),mark(X2)) p71: mark#(take(X1,X2)) -> mark#(X1) p72: mark#(take(X1,X2)) -> mark#(X2) p73: mark#(cons(X1,X2)) -> mark#(X1) p74: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt()) -> tt() r3: a__U21(tt()) -> tt() r4: a__U31(tt()) -> tt() r5: a__U41(tt(),V2) -> a__U42(a__isNatIList(V2)) r6: a__U42(tt()) -> tt() r7: a__U51(tt(),V2) -> a__U52(a__isNatList(V2)) r8: a__U52(tt()) -> tt() r9: a__U61(tt(),V2) -> a__U62(a__isNatIList(V2)) r10: a__U62(tt()) -> tt() r11: a__U71(tt(),L,N) -> a__U72(a__isNat(N),L) r12: a__U72(tt(),L) -> s(a__length(mark(L))) r13: a__U81(tt()) -> nil() r14: a__U91(tt(),IL,M,N) -> a__U92(a__isNat(M),IL,M,N) r15: a__U92(tt(),IL,M,N) -> a__U93(a__isNat(N),IL,M,N) r16: a__U93(tt(),IL,M,N) -> cons(mark(N),take(M,IL)) r17: a__isNat(|0|()) -> tt() r18: a__isNat(length(V1)) -> a__U11(a__isNatList(V1)) r19: a__isNat(s(V1)) -> a__U21(a__isNat(V1)) r20: a__isNatIList(V) -> a__U31(a__isNatList(V)) r21: a__isNatIList(zeros()) -> tt() r22: a__isNatIList(cons(V1,V2)) -> a__U41(a__isNat(V1),V2) r23: a__isNatList(nil()) -> tt() r24: a__isNatList(cons(V1,V2)) -> a__U51(a__isNat(V1),V2) r25: a__isNatList(take(V1,V2)) -> a__U61(a__isNat(V1),V2) r26: a__length(nil()) -> |0|() r27: a__length(cons(N,L)) -> a__U71(a__isNatList(L),L,N) r28: a__take(|0|(),IL) -> a__U81(a__isNatIList(IL)) r29: a__take(s(M),cons(N,IL)) -> a__U91(a__isNatIList(IL),IL,M,N) r30: mark(zeros()) -> a__zeros() r31: mark(U11(X)) -> a__U11(mark(X)) r32: mark(U21(X)) -> a__U21(mark(X)) r33: mark(U31(X)) -> a__U31(mark(X)) r34: mark(U41(X1,X2)) -> a__U41(mark(X1),X2) r35: mark(U42(X)) -> a__U42(mark(X)) r36: mark(isNatIList(X)) -> a__isNatIList(X) r37: mark(U51(X1,X2)) -> a__U51(mark(X1),X2) r38: mark(U52(X)) -> a__U52(mark(X)) r39: mark(isNatList(X)) -> a__isNatList(X) r40: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r41: mark(U62(X)) -> a__U62(mark(X)) r42: mark(U71(X1,X2,X3)) -> a__U71(mark(X1),X2,X3) r43: mark(U72(X1,X2)) -> a__U72(mark(X1),X2) r44: mark(isNat(X)) -> a__isNat(X) r45: mark(length(X)) -> a__length(mark(X)) r46: mark(U81(X)) -> a__U81(mark(X)) r47: mark(U91(X1,X2,X3,X4)) -> a__U91(mark(X1),X2,X3,X4) r48: mark(U92(X1,X2,X3,X4)) -> a__U92(mark(X1),X2,X3,X4) r49: mark(U93(X1,X2,X3,X4)) -> a__U93(mark(X1),X2,X3,X4) r50: mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) r51: mark(cons(X1,X2)) -> cons(mark(X1),X2) r52: mark(|0|()) -> |0|() r53: mark(tt()) -> tt() r54: mark(s(X)) -> s(mark(X)) r55: mark(nil()) -> nil() r56: a__zeros() -> zeros() r57: a__U11(X) -> U11(X) r58: a__U21(X) -> U21(X) r59: a__U31(X) -> U31(X) r60: a__U41(X1,X2) -> U41(X1,X2) r61: a__U42(X) -> U42(X) r62: a__isNatIList(X) -> isNatIList(X) r63: a__U51(X1,X2) -> U51(X1,X2) r64: a__U52(X) -> U52(X) r65: a__isNatList(X) -> isNatList(X) r66: a__U61(X1,X2) -> U61(X1,X2) r67: a__U62(X) -> U62(X) r68: a__U71(X1,X2,X3) -> U71(X1,X2,X3) r69: a__U72(X1,X2) -> U72(X1,X2) r70: a__isNat(X) -> isNat(X) r71: a__length(X) -> length(X) r72: a__U81(X) -> U81(X) r73: a__U91(X1,X2,X3,X4) -> U91(X1,X2,X3,X4) r74: a__U92(X1,X2,X3,X4) -> U92(X1,X2,X3,X4) r75: a__U93(X1,X2,X3,X4) -> U93(X1,X2,X3,X4) r76: a__take(X1,X2) -> take(X1,X2) The estimated dependency graph contains the following SCCs: {p7, p9, p10, p11, p13, p15, p28, p32, p36, p38, p40, p42, p44, p47, p49, p52, p54, p55, p56, p57, p58, p60, p61, p63, p64, p65, p66, p67, p68, p69, p70, p71, p72, p73, p74} {p2, p4, p6, p17, p19, p21, p22, p23, p24, p25, p26, p27} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U93#(tt(),IL,M,N) -> mark#(N) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(take(X1,X2)) -> mark#(X2) p5: mark#(take(X1,X2)) -> mark#(X1) p6: mark#(take(X1,X2)) -> a__take#(mark(X1),mark(X2)) p7: a__take#(s(M),cons(N,IL)) -> a__U91#(a__isNatIList(IL),IL,M,N) p8: a__U91#(tt(),IL,M,N) -> a__U92#(a__isNat(M),IL,M,N) p9: a__U92#(tt(),IL,M,N) -> a__U93#(a__isNat(N),IL,M,N) p10: mark#(U93(X1,X2,X3,X4)) -> mark#(X1) p11: mark#(U93(X1,X2,X3,X4)) -> a__U93#(mark(X1),X2,X3,X4) p12: mark#(U92(X1,X2,X3,X4)) -> mark#(X1) p13: mark#(U92(X1,X2,X3,X4)) -> a__U92#(mark(X1),X2,X3,X4) p14: mark#(U91(X1,X2,X3,X4)) -> mark#(X1) p15: mark#(U91(X1,X2,X3,X4)) -> a__U91#(mark(X1),X2,X3,X4) p16: mark#(U81(X)) -> mark#(X) p17: mark#(length(X)) -> mark#(X) p18: mark#(length(X)) -> a__length#(mark(X)) p19: a__length#(cons(N,L)) -> a__U71#(a__isNatList(L),L,N) p20: a__U71#(tt(),L,N) -> a__U72#(a__isNat(N),L) p21: a__U72#(tt(),L) -> mark#(L) p22: mark#(U72(X1,X2)) -> mark#(X1) p23: mark#(U72(X1,X2)) -> a__U72#(mark(X1),X2) p24: a__U72#(tt(),L) -> a__length#(mark(L)) p25: mark#(U71(X1,X2,X3)) -> mark#(X1) p26: mark#(U71(X1,X2,X3)) -> a__U71#(mark(X1),X2,X3) p27: mark#(U62(X)) -> mark#(X) p28: mark#(U61(X1,X2)) -> mark#(X1) p29: mark#(U52(X)) -> mark#(X) p30: mark#(U51(X1,X2)) -> mark#(X1) p31: mark#(U42(X)) -> mark#(X) p32: mark#(U41(X1,X2)) -> mark#(X1) p33: mark#(U31(X)) -> mark#(X) p34: mark#(U21(X)) -> mark#(X) p35: mark#(U11(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt()) -> tt() r3: a__U21(tt()) -> tt() r4: a__U31(tt()) -> tt() r5: a__U41(tt(),V2) -> a__U42(a__isNatIList(V2)) r6: a__U42(tt()) -> tt() r7: a__U51(tt(),V2) -> a__U52(a__isNatList(V2)) r8: a__U52(tt()) -> tt() r9: a__U61(tt(),V2) -> a__U62(a__isNatIList(V2)) r10: a__U62(tt()) -> tt() r11: a__U71(tt(),L,N) -> a__U72(a__isNat(N),L) r12: a__U72(tt(),L) -> s(a__length(mark(L))) r13: a__U81(tt()) -> nil() r14: a__U91(tt(),IL,M,N) -> a__U92(a__isNat(M),IL,M,N) r15: a__U92(tt(),IL,M,N) -> a__U93(a__isNat(N),IL,M,N) r16: a__U93(tt(),IL,M,N) -> cons(mark(N),take(M,IL)) r17: a__isNat(|0|()) -> tt() r18: a__isNat(length(V1)) -> a__U11(a__isNatList(V1)) r19: a__isNat(s(V1)) -> a__U21(a__isNat(V1)) r20: a__isNatIList(V) -> a__U31(a__isNatList(V)) r21: a__isNatIList(zeros()) -> tt() r22: a__isNatIList(cons(V1,V2)) -> a__U41(a__isNat(V1),V2) r23: a__isNatList(nil()) -> tt() r24: a__isNatList(cons(V1,V2)) -> a__U51(a__isNat(V1),V2) r25: a__isNatList(take(V1,V2)) -> a__U61(a__isNat(V1),V2) r26: a__length(nil()) -> |0|() r27: a__length(cons(N,L)) -> a__U71(a__isNatList(L),L,N) r28: a__take(|0|(),IL) -> a__U81(a__isNatIList(IL)) r29: a__take(s(M),cons(N,IL)) -> a__U91(a__isNatIList(IL),IL,M,N) r30: mark(zeros()) -> a__zeros() r31: mark(U11(X)) -> a__U11(mark(X)) r32: mark(U21(X)) -> a__U21(mark(X)) r33: mark(U31(X)) -> a__U31(mark(X)) r34: mark(U41(X1,X2)) -> a__U41(mark(X1),X2) r35: mark(U42(X)) -> a__U42(mark(X)) r36: mark(isNatIList(X)) -> a__isNatIList(X) r37: mark(U51(X1,X2)) -> a__U51(mark(X1),X2) r38: mark(U52(X)) -> a__U52(mark(X)) r39: mark(isNatList(X)) -> a__isNatList(X) r40: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r41: mark(U62(X)) -> a__U62(mark(X)) r42: mark(U71(X1,X2,X3)) -> a__U71(mark(X1),X2,X3) r43: mark(U72(X1,X2)) -> a__U72(mark(X1),X2) r44: mark(isNat(X)) -> a__isNat(X) r45: mark(length(X)) -> a__length(mark(X)) r46: mark(U81(X)) -> a__U81(mark(X)) r47: mark(U91(X1,X2,X3,X4)) -> a__U91(mark(X1),X2,X3,X4) r48: mark(U92(X1,X2,X3,X4)) -> a__U92(mark(X1),X2,X3,X4) r49: mark(U93(X1,X2,X3,X4)) -> a__U93(mark(X1),X2,X3,X4) r50: mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) r51: mark(cons(X1,X2)) -> cons(mark(X1),X2) r52: mark(|0|()) -> |0|() r53: mark(tt()) -> tt() r54: mark(s(X)) -> s(mark(X)) r55: mark(nil()) -> nil() r56: a__zeros() -> zeros() r57: a__U11(X) -> U11(X) r58: a__U21(X) -> U21(X) r59: a__U31(X) -> U31(X) r60: a__U41(X1,X2) -> U41(X1,X2) r61: a__U42(X) -> U42(X) r62: a__isNatIList(X) -> isNatIList(X) r63: a__U51(X1,X2) -> U51(X1,X2) r64: a__U52(X) -> U52(X) r65: a__isNatList(X) -> isNatList(X) r66: a__U61(X1,X2) -> U61(X1,X2) r67: a__U62(X) -> U62(X) r68: a__U71(X1,X2,X3) -> U71(X1,X2,X3) r69: a__U72(X1,X2) -> U72(X1,X2) r70: a__isNat(X) -> isNat(X) r71: a__length(X) -> length(X) r72: a__U81(X) -> U81(X) r73: a__U91(X1,X2,X3,X4) -> U91(X1,X2,X3,X4) r74: a__U92(X1,X2,X3,X4) -> U92(X1,X2,X3,X4) r75: a__U93(X1,X2,X3,X4) -> U93(X1,X2,X3,X4) r76: a__take(X1,X2) -> take(X1,X2) 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, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64, r65, r66, r67, r68, r69, r70, r71, r72, r73, r74, r75, r76 Take the reduction pair: lexicographic combination of reduction pairs: 1. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U93#_A(x1,x2,x3,x4) = ((0,1),(0,0)) x4 + (1,0) tt_A() = (1,5) mark#_A(x1) = ((0,1),(0,0)) x1 + (1,0) s_A(x1) = x1 + (1,0) cons_A(x1,x2) = x1 + x2 + (1,0) take_A(x1,x2) = ((0,1),(0,1)) x1 + x2 + (0,5) a__take#_A(x1,x2) = ((0,1),(0,0)) x2 + (5,0) mark_A(x1) = x1 + (12,0) a__U91#_A(x1,x2,x3,x4) = ((0,1),(0,0)) x1 + ((0,1),(0,0)) x4 a__isNatIList_A(x1) = ((1,1),(0,0)) x1 + (9,5) a__U92#_A(x1,x2,x3,x4) = ((0,1),(0,0)) x1 + ((0,1),(0,0)) x4 a__isNat_A(x1) = (2,5) U93_A(x1,x2,x3,x4) = ((0,1),(0,1)) x1 + x2 + x3 + x4 + (1,0) U92_A(x1,x2,x3,x4) = ((1,1),(0,1)) x1 + x2 + x3 + x4 + (2,0) U91_A(x1,x2,x3,x4) = x1 + x2 + x3 + x4 + (1,0) U81_A(x1) = x1 + (1,0) length_A(x1) = ((0,1),(0,1)) x1 + (1,5) a__length#_A(x1) = ((0,1),(0,0)) x1 + (1,0) a__U71#_A(x1,x2,x3) = ((0,1),(0,0)) x2 + (1,0) a__isNatList_A(x1) = ((0,1),(0,0)) x1 + (0,5) a__U72#_A(x1,x2) = ((0,1),(0,0)) x2 + (1,0) U72_A(x1,x2) = x1 + x2 + (1,0) U71_A(x1,x2,x3) = x1 + x2 + (2,0) U62_A(x1) = x1 + (1,0) U61_A(x1,x2) = x1 + (2,0) U52_A(x1) = x1 U51_A(x1,x2) = x1 + ((0,1),(0,0)) x2 U42_A(x1) = ((0,1),(0,1)) x1 + (1,0) U41_A(x1,x2) = x1 + (7,0) U31_A(x1) = ((0,1),(0,1)) x1 + (1,0) U21_A(x1) = x1 U11_A(x1) = x1 a__zeros_A() = (13,1) |0|_A() = (0,0) zeros_A() = (1,1) a__U11_A(x1) = x1 + (2,0) a__U21_A(x1) = x1 a__U31_A(x1) = ((0,1),(0,1)) x1 + (1,0) a__U41_A(x1,x2) = x1 + (7,0) a__U42_A(x1) = ((0,1),(0,1)) x1 + (2,0) a__U51_A(x1,x2) = x1 + ((0,1),(0,0)) x2 a__U52_A(x1) = x1 a__U61_A(x1,x2) = x1 + (2,0) a__U62_A(x1) = x1 + (2,0) a__U71_A(x1,x2,x3) = x1 + x2 + (2,0) a__U72_A(x1,x2) = x1 + x2 + (1,0) a__length_A(x1) = ((0,1),(0,1)) x1 + (12,5) a__U81_A(x1) = x1 + (2,0) nil_A() = (1,5) a__U91_A(x1,x2,x3,x4) = x1 + x2 + x3 + x4 + (10,0) a__U92_A(x1,x2,x3,x4) = ((1,1),(0,1)) x1 + x2 + x3 + x4 + (2,0) a__U93_A(x1,x2,x3,x4) = ((0,1),(0,1)) x1 + x2 + x3 + x4 + (2,0) a__take_A(x1,x2) = ((0,1),(0,1)) x1 + x2 + (11,5) isNatIList_A(x1) = ((1,1),(0,0)) x1 + (1,5) isNatList_A(x1) = ((0,1),(0,0)) x1 + (0,5) isNat_A(x1) = (1,5) 2. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U93#_A(x1,x2,x3,x4) = (0,1) tt_A() = (0,2) mark#_A(x1) = (0,1) s_A(x1) = (0,0) cons_A(x1,x2) = (5,4) take_A(x1,x2) = (0,3) a__take#_A(x1,x2) = (1,2) mark_A(x1) = ((1,1),(0,1)) x1 a__U91#_A(x1,x2,x3,x4) = (0,2) a__isNatIList_A(x1) = (2,2) a__U92#_A(x1,x2,x3,x4) = (0,0) a__isNat_A(x1) = (3,3) U93_A(x1,x2,x3,x4) = (0,4) U92_A(x1,x2,x3,x4) = (0,2) U91_A(x1,x2,x3,x4) = (0,0) U81_A(x1) = (0,0) length_A(x1) = (0,0) a__length#_A(x1) = (0,1) a__U71#_A(x1,x2,x3) = (0,1) a__isNatList_A(x1) = (0,2) a__U72#_A(x1,x2) = (0,1) U72_A(x1,x2) = (0,0) U71_A(x1,x2,x3) = (0,0) U62_A(x1) = (0,0) U61_A(x1,x2) = (1,2) U52_A(x1) = x1 U51_A(x1,x2) = (0,0) U42_A(x1) = (0,0) U41_A(x1,x2) = ((0,1),(0,0)) x1 U31_A(x1) = (0,1) U21_A(x1) = (1,2) U11_A(x1) = (0,0) a__zeros_A() = (0,0) |0|_A() = (0,0) zeros_A() = (1,0) a__U11_A(x1) = (0,0) a__U21_A(x1) = (2,2) a__U31_A(x1) = (2,1) a__U41_A(x1,x2) = ((0,1),(0,0)) x1 a__U42_A(x1) = (2,2) a__U51_A(x1,x2) = (0,2) a__U52_A(x1) = x1 a__U61_A(x1,x2) = (2,2) a__U62_A(x1) = (0,3) a__U71_A(x1,x2,x3) = (2,0) a__U72_A(x1,x2) = (3,0) a__length_A(x1) = (1,0) a__U81_A(x1) = (2,1) nil_A() = (1,0) a__U91_A(x1,x2,x3,x4) = (4,1) a__U92_A(x1,x2,x3,x4) = (1,2) a__U93_A(x1,x2,x3,x4) = (4,3) a__take_A(x1,x2) = (3,0) isNatIList_A(x1) = (3,0) isNatList_A(x1) = (0,0) isNat_A(x1) = (1,0) 3. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U93#_A(x1,x2,x3,x4) = (1,1) tt_A() = (0,0) mark#_A(x1) = (1,1) s_A(x1) = (3,0) cons_A(x1,x2) = (6,5) take_A(x1,x2) = (2,1) a__take#_A(x1,x2) = (0,1) mark_A(x1) = ((0,1),(0,0)) x1 + (0,3) a__U91#_A(x1,x2,x3,x4) = (1,2) a__isNatIList_A(x1) = (1,4) a__U92#_A(x1,x2,x3,x4) = (1,0) a__isNat_A(x1) = (0,4) U93_A(x1,x2,x3,x4) = (0,0) U92_A(x1,x2,x3,x4) = (0,0) U91_A(x1,x2,x3,x4) = (0,0) U81_A(x1) = (0,0) length_A(x1) = (0,0) a__length#_A(x1) = (1,1) a__U71#_A(x1,x2,x3) = (1,1) a__isNatList_A(x1) = (0,0) a__U72#_A(x1,x2) = (1,1) U72_A(x1,x2) = (0,0) U71_A(x1,x2,x3) = (0,0) U62_A(x1) = (0,0) U61_A(x1,x2) = (1,0) U52_A(x1) = (0,0) U51_A(x1,x2) = (0,0) U42_A(x1) = (0,0) U41_A(x1,x2) = (1,3) U31_A(x1) = (1,5) U21_A(x1) = (1,0) U11_A(x1) = (0,0) a__zeros_A() = (1,4) |0|_A() = (0,0) zeros_A() = (0,0) a__U11_A(x1) = (0,4) a__U21_A(x1) = (2,5) a__U31_A(x1) = (6,4) a__U41_A(x1,x2) = (2,3) a__U42_A(x1) = (2,4) a__U51_A(x1,x2) = (0,0) a__U52_A(x1) = (0,0) a__U61_A(x1,x2) = (0,0) a__U62_A(x1) = (1,1) a__U71_A(x1,x2,x3) = (1,3) a__U72_A(x1,x2) = (2,4) a__length_A(x1) = (2,1) a__U81_A(x1) = (2,3) nil_A() = (3,0) a__U91_A(x1,x2,x3,x4) = (2,3) a__U92_A(x1,x2,x3,x4) = (0,3) a__U93_A(x1,x2,x3,x4) = (7,5) a__take_A(x1,x2) = (1,2) isNatIList_A(x1) = (0,0) isNatList_A(x1) = (0,0) isNat_A(x1) = (0,0) The next rules are strictly ordered: p4, p5, p6, p7, p9, p13, p15, p17, p18 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U93#(tt(),IL,M,N) -> mark#(N) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: a__U91#(tt(),IL,M,N) -> a__U92#(a__isNat(M),IL,M,N) p5: mark#(U93(X1,X2,X3,X4)) -> mark#(X1) p6: mark#(U93(X1,X2,X3,X4)) -> a__U93#(mark(X1),X2,X3,X4) p7: mark#(U92(X1,X2,X3,X4)) -> mark#(X1) p8: mark#(U91(X1,X2,X3,X4)) -> mark#(X1) p9: mark#(U81(X)) -> mark#(X) p10: a__length#(cons(N,L)) -> a__U71#(a__isNatList(L),L,N) p11: a__U71#(tt(),L,N) -> a__U72#(a__isNat(N),L) p12: a__U72#(tt(),L) -> mark#(L) p13: mark#(U72(X1,X2)) -> mark#(X1) p14: mark#(U72(X1,X2)) -> a__U72#(mark(X1),X2) p15: a__U72#(tt(),L) -> a__length#(mark(L)) p16: mark#(U71(X1,X2,X3)) -> mark#(X1) p17: mark#(U71(X1,X2,X3)) -> a__U71#(mark(X1),X2,X3) p18: mark#(U62(X)) -> mark#(X) p19: mark#(U61(X1,X2)) -> mark#(X1) p20: mark#(U52(X)) -> mark#(X) p21: mark#(U51(X1,X2)) -> mark#(X1) p22: mark#(U42(X)) -> mark#(X) p23: mark#(U41(X1,X2)) -> mark#(X1) p24: mark#(U31(X)) -> mark#(X) p25: mark#(U21(X)) -> mark#(X) p26: mark#(U11(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt()) -> tt() r3: a__U21(tt()) -> tt() r4: a__U31(tt()) -> tt() r5: a__U41(tt(),V2) -> a__U42(a__isNatIList(V2)) r6: a__U42(tt()) -> tt() r7: a__U51(tt(),V2) -> a__U52(a__isNatList(V2)) r8: a__U52(tt()) -> tt() r9: a__U61(tt(),V2) -> a__U62(a__isNatIList(V2)) r10: a__U62(tt()) -> tt() r11: a__U71(tt(),L,N) -> a__U72(a__isNat(N),L) r12: a__U72(tt(),L) -> s(a__length(mark(L))) r13: a__U81(tt()) -> nil() r14: a__U91(tt(),IL,M,N) -> a__U92(a__isNat(M),IL,M,N) r15: a__U92(tt(),IL,M,N) -> a__U93(a__isNat(N),IL,M,N) r16: a__U93(tt(),IL,M,N) -> cons(mark(N),take(M,IL)) r17: a__isNat(|0|()) -> tt() r18: a__isNat(length(V1)) -> a__U11(a__isNatList(V1)) r19: a__isNat(s(V1)) -> a__U21(a__isNat(V1)) r20: a__isNatIList(V) -> a__U31(a__isNatList(V)) r21: a__isNatIList(zeros()) -> tt() r22: a__isNatIList(cons(V1,V2)) -> a__U41(a__isNat(V1),V2) r23: a__isNatList(nil()) -> tt() r24: a__isNatList(cons(V1,V2)) -> a__U51(a__isNat(V1),V2) r25: a__isNatList(take(V1,V2)) -> a__U61(a__isNat(V1),V2) r26: a__length(nil()) -> |0|() r27: a__length(cons(N,L)) -> a__U71(a__isNatList(L),L,N) r28: a__take(|0|(),IL) -> a__U81(a__isNatIList(IL)) r29: a__take(s(M),cons(N,IL)) -> a__U91(a__isNatIList(IL),IL,M,N) r30: mark(zeros()) -> a__zeros() r31: mark(U11(X)) -> a__U11(mark(X)) r32: mark(U21(X)) -> a__U21(mark(X)) r33: mark(U31(X)) -> a__U31(mark(X)) r34: mark(U41(X1,X2)) -> a__U41(mark(X1),X2) r35: mark(U42(X)) -> a__U42(mark(X)) r36: mark(isNatIList(X)) -> a__isNatIList(X) r37: mark(U51(X1,X2)) -> a__U51(mark(X1),X2) r38: mark(U52(X)) -> a__U52(mark(X)) r39: mark(isNatList(X)) -> a__isNatList(X) r40: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r41: mark(U62(X)) -> a__U62(mark(X)) r42: mark(U71(X1,X2,X3)) -> a__U71(mark(X1),X2,X3) r43: mark(U72(X1,X2)) -> a__U72(mark(X1),X2) r44: mark(isNat(X)) -> a__isNat(X) r45: mark(length(X)) -> a__length(mark(X)) r46: mark(U81(X)) -> a__U81(mark(X)) r47: mark(U91(X1,X2,X3,X4)) -> a__U91(mark(X1),X2,X3,X4) r48: mark(U92(X1,X2,X3,X4)) -> a__U92(mark(X1),X2,X3,X4) r49: mark(U93(X1,X2,X3,X4)) -> a__U93(mark(X1),X2,X3,X4) r50: mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) r51: mark(cons(X1,X2)) -> cons(mark(X1),X2) r52: mark(|0|()) -> |0|() r53: mark(tt()) -> tt() r54: mark(s(X)) -> s(mark(X)) r55: mark(nil()) -> nil() r56: a__zeros() -> zeros() r57: a__U11(X) -> U11(X) r58: a__U21(X) -> U21(X) r59: a__U31(X) -> U31(X) r60: a__U41(X1,X2) -> U41(X1,X2) r61: a__U42(X) -> U42(X) r62: a__isNatIList(X) -> isNatIList(X) r63: a__U51(X1,X2) -> U51(X1,X2) r64: a__U52(X) -> U52(X) r65: a__isNatList(X) -> isNatList(X) r66: a__U61(X1,X2) -> U61(X1,X2) r67: a__U62(X) -> U62(X) r68: a__U71(X1,X2,X3) -> U71(X1,X2,X3) r69: a__U72(X1,X2) -> U72(X1,X2) r70: a__isNat(X) -> isNat(X) r71: a__length(X) -> length(X) r72: a__U81(X) -> U81(X) r73: a__U91(X1,X2,X3,X4) -> U91(X1,X2,X3,X4) r74: a__U92(X1,X2,X3,X4) -> U92(X1,X2,X3,X4) r75: a__U93(X1,X2,X3,X4) -> U93(X1,X2,X3,X4) r76: a__take(X1,X2) -> take(X1,X2) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U93#(tt(),IL,M,N) -> mark#(N) p2: mark#(U11(X)) -> mark#(X) p3: mark#(U21(X)) -> mark#(X) p4: mark#(U31(X)) -> mark#(X) p5: mark#(U41(X1,X2)) -> mark#(X1) p6: mark#(U42(X)) -> mark#(X) p7: mark#(U51(X1,X2)) -> mark#(X1) p8: mark#(U52(X)) -> mark#(X) p9: mark#(U61(X1,X2)) -> mark#(X1) p10: mark#(U62(X)) -> mark#(X) p11: mark#(U71(X1,X2,X3)) -> a__U71#(mark(X1),X2,X3) p12: a__U71#(tt(),L,N) -> a__U72#(a__isNat(N),L) p13: a__U72#(tt(),L) -> a__length#(mark(L)) p14: a__length#(cons(N,L)) -> a__U71#(a__isNatList(L),L,N) p15: a__U72#(tt(),L) -> mark#(L) p16: mark#(U71(X1,X2,X3)) -> mark#(X1) p17: mark#(U72(X1,X2)) -> a__U72#(mark(X1),X2) p18: mark#(U72(X1,X2)) -> mark#(X1) p19: mark#(U81(X)) -> mark#(X) p20: mark#(U91(X1,X2,X3,X4)) -> mark#(X1) p21: mark#(U92(X1,X2,X3,X4)) -> mark#(X1) p22: mark#(U93(X1,X2,X3,X4)) -> a__U93#(mark(X1),X2,X3,X4) p23: mark#(U93(X1,X2,X3,X4)) -> mark#(X1) 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()) -> tt() r3: a__U21(tt()) -> tt() r4: a__U31(tt()) -> tt() r5: a__U41(tt(),V2) -> a__U42(a__isNatIList(V2)) r6: a__U42(tt()) -> tt() r7: a__U51(tt(),V2) -> a__U52(a__isNatList(V2)) r8: a__U52(tt()) -> tt() r9: a__U61(tt(),V2) -> a__U62(a__isNatIList(V2)) r10: a__U62(tt()) -> tt() r11: a__U71(tt(),L,N) -> a__U72(a__isNat(N),L) r12: a__U72(tt(),L) -> s(a__length(mark(L))) r13: a__U81(tt()) -> nil() r14: a__U91(tt(),IL,M,N) -> a__U92(a__isNat(M),IL,M,N) r15: a__U92(tt(),IL,M,N) -> a__U93(a__isNat(N),IL,M,N) r16: a__U93(tt(),IL,M,N) -> cons(mark(N),take(M,IL)) r17: a__isNat(|0|()) -> tt() r18: a__isNat(length(V1)) -> a__U11(a__isNatList(V1)) r19: a__isNat(s(V1)) -> a__U21(a__isNat(V1)) r20: a__isNatIList(V) -> a__U31(a__isNatList(V)) r21: a__isNatIList(zeros()) -> tt() r22: a__isNatIList(cons(V1,V2)) -> a__U41(a__isNat(V1),V2) r23: a__isNatList(nil()) -> tt() r24: a__isNatList(cons(V1,V2)) -> a__U51(a__isNat(V1),V2) r25: a__isNatList(take(V1,V2)) -> a__U61(a__isNat(V1),V2) r26: a__length(nil()) -> |0|() r27: a__length(cons(N,L)) -> a__U71(a__isNatList(L),L,N) r28: a__take(|0|(),IL) -> a__U81(a__isNatIList(IL)) r29: a__take(s(M),cons(N,IL)) -> a__U91(a__isNatIList(IL),IL,M,N) r30: mark(zeros()) -> a__zeros() r31: mark(U11(X)) -> a__U11(mark(X)) r32: mark(U21(X)) -> a__U21(mark(X)) r33: mark(U31(X)) -> a__U31(mark(X)) r34: mark(U41(X1,X2)) -> a__U41(mark(X1),X2) r35: mark(U42(X)) -> a__U42(mark(X)) r36: mark(isNatIList(X)) -> a__isNatIList(X) r37: mark(U51(X1,X2)) -> a__U51(mark(X1),X2) r38: mark(U52(X)) -> a__U52(mark(X)) r39: mark(isNatList(X)) -> a__isNatList(X) r40: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r41: mark(U62(X)) -> a__U62(mark(X)) r42: mark(U71(X1,X2,X3)) -> a__U71(mark(X1),X2,X3) r43: mark(U72(X1,X2)) -> a__U72(mark(X1),X2) r44: mark(isNat(X)) -> a__isNat(X) r45: mark(length(X)) -> a__length(mark(X)) r46: mark(U81(X)) -> a__U81(mark(X)) r47: mark(U91(X1,X2,X3,X4)) -> a__U91(mark(X1),X2,X3,X4) r48: mark(U92(X1,X2,X3,X4)) -> a__U92(mark(X1),X2,X3,X4) r49: mark(U93(X1,X2,X3,X4)) -> a__U93(mark(X1),X2,X3,X4) r50: mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) r51: mark(cons(X1,X2)) -> cons(mark(X1),X2) r52: mark(|0|()) -> |0|() r53: mark(tt()) -> tt() r54: mark(s(X)) -> s(mark(X)) r55: mark(nil()) -> nil() r56: a__zeros() -> zeros() r57: a__U11(X) -> U11(X) r58: a__U21(X) -> U21(X) r59: a__U31(X) -> U31(X) r60: a__U41(X1,X2) -> U41(X1,X2) r61: a__U42(X) -> U42(X) r62: a__isNatIList(X) -> isNatIList(X) r63: a__U51(X1,X2) -> U51(X1,X2) r64: a__U52(X) -> U52(X) r65: a__isNatList(X) -> isNatList(X) r66: a__U61(X1,X2) -> U61(X1,X2) r67: a__U62(X) -> U62(X) r68: a__U71(X1,X2,X3) -> U71(X1,X2,X3) r69: a__U72(X1,X2) -> U72(X1,X2) r70: a__isNat(X) -> isNat(X) r71: a__length(X) -> length(X) r72: a__U81(X) -> U81(X) r73: a__U91(X1,X2,X3,X4) -> U91(X1,X2,X3,X4) r74: a__U92(X1,X2,X3,X4) -> U92(X1,X2,X3,X4) r75: a__U93(X1,X2,X3,X4) -> U93(X1,X2,X3,X4) r76: a__take(X1,X2) -> take(X1,X2) 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, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64, r65, r66, r67, r68, r69, r70, r71, r72, r73, r74, r75, r76 Take the reduction pair: lexicographic combination of reduction pairs: 1. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U93#_A(x1,x2,x3,x4) = ((0,1),(0,0)) x4 + (1,0) tt_A() = (3,1) mark#_A(x1) = ((0,1),(0,0)) x1 U11_A(x1) = x1 + (2,0) U21_A(x1) = x1 + (3,0) U31_A(x1) = x1 + (3,0) U41_A(x1,x2) = x1 + (4,0) U42_A(x1) = x1 + (3,0) U51_A(x1,x2) = ((0,1),(0,1)) x1 + (3,0) U52_A(x1) = x1 + (2,0) U61_A(x1,x2) = x1 + (2,0) U62_A(x1) = x1 + (1,0) U71_A(x1,x2,x3) = x1 + x2 + (7,2) a__U71#_A(x1,x2,x3) = ((0,1),(0,0)) x2 + (1,0) mark_A(x1) = ((1,1),(0,1)) x1 + (2,0) a__U72#_A(x1,x2) = ((0,1),(0,0)) x2 + (1,0) a__isNat_A(x1) = ((1,1),(0,0)) x1 + (0,1) a__length#_A(x1) = ((0,1),(0,0)) x1 + (1,0) cons_A(x1,x2) = ((0,1),(0,1)) x1 + x2 + (1,0) a__isNatList_A(x1) = (5,1) U72_A(x1,x2) = ((0,1),(0,1)) x1 + x2 + (1,2) U81_A(x1) = x1 + (1,1) U91_A(x1,x2,x3,x4) = x1 + ((0,1),(0,1)) x2 + ((0,1),(0,1)) x4 + (5,2) U92_A(x1,x2,x3,x4) = ((0,1),(0,1)) x1 + x2 + ((0,1),(0,1)) x4 + (3,2) U93_A(x1,x2,x3,x4) = ((0,1),(0,1)) x1 + x2 + ((0,1),(0,1)) x4 + (1,2) s_A(x1) = x1 + (5,0) a__zeros_A() = (3,1) |0|_A() = (4,0) zeros_A() = (1,1) a__U11_A(x1) = x1 + (4,0) a__U21_A(x1) = x1 + (4,0) a__U31_A(x1) = x1 + (3,0) a__U41_A(x1,x2) = x1 + (5,0) a__U42_A(x1) = x1 + (4,0) a__isNatIList_A(x1) = (6,1) a__U51_A(x1,x2) = ((0,1),(0,1)) x1 + (3,0) a__U52_A(x1) = x1 + (4,0) a__U61_A(x1,x2) = x1 + (3,0) a__U62_A(x1) = x1 + (3,0) a__U71_A(x1,x2,x3) = x1 + x2 + (7,2) a__U72_A(x1,x2) = ((0,1),(0,1)) x1 + x2 + (5,2) a__length_A(x1) = x1 + (8,3) a__U81_A(x1) = x1 + (2,1) nil_A() = (1,1) a__U91_A(x1,x2,x3,x4) = x1 + ((0,1),(0,1)) x2 + ((0,1),(0,1)) x4 + (8,2) a__U92_A(x1,x2,x3,x4) = ((0,1),(0,1)) x1 + ((0,1),(0,1)) x2 + ((0,1),(0,1)) x4 + (6,2) a__U93_A(x1,x2,x3,x4) = ((0,1),(0,1)) x1 + ((0,1),(0,1)) x2 + ((0,1),(0,1)) x4 + (5,2) take_A(x1,x2) = ((1,1),(0,1)) x2 + (8,3) a__take_A(x1,x2) = ((1,1),(0,1)) x2 + (8,3) isNatIList_A(x1) = (6,1) length_A(x1) = x1 + (3,3) isNatList_A(x1) = (3,1) isNat_A(x1) = ((1,1),(0,0)) x1 + (0,1) 2. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U93#_A(x1,x2,x3,x4) = (0,0) tt_A() = (5,5) mark#_A(x1) = (1,1) U11_A(x1) = (5,6) U21_A(x1) = (1,5) U31_A(x1) = (1,1) U41_A(x1,x2) = (1,1) U42_A(x1) = (1,2) U51_A(x1,x2) = (1,7) U52_A(x1) = (5,2) U61_A(x1,x2) = (1,7) U62_A(x1) = (2,5) U71_A(x1,x2,x3) = (2,1) a__U71#_A(x1,x2,x3) = (0,0) mark_A(x1) = ((1,1),(0,0)) x1 + (0,5) a__U72#_A(x1,x2) = (0,0) a__isNat_A(x1) = ((1,1),(1,1)) x1 a__length#_A(x1) = (0,0) cons_A(x1,x2) = (1,2) a__isNatList_A(x1) = (0,0) U72_A(x1,x2) = (3,1) U81_A(x1) = (1,7) U91_A(x1,x2,x3,x4) = (1,7) U92_A(x1,x2,x3,x4) = (1,2) U93_A(x1,x2,x3,x4) = (2,1) s_A(x1) = (1,2) a__zeros_A() = (2,6) |0|_A() = (1,5) zeros_A() = (3,7) a__U11_A(x1) = (4,5) a__U21_A(x1) = (0,4) a__U31_A(x1) = (6,5) a__U41_A(x1,x2) = (8,0) a__U42_A(x1) = (6,1) a__isNatIList_A(x1) = (7,6) a__U51_A(x1,x2) = (7,7) a__U52_A(x1) = (6,5) a__U61_A(x1,x2) = (7,5) a__U62_A(x1) = (6,5) a__U71_A(x1,x2,x3) = (3,6) a__U72_A(x1,x2) = (4,1) a__length_A(x1) = (2,1) a__U81_A(x1) = (9,6) nil_A() = (0,0) a__U91_A(x1,x2,x3,x4) = (9,6) a__U92_A(x1,x2,x3,x4) = (2,0) a__U93_A(x1,x2,x3,x4) = (3,1) take_A(x1,x2) = x2 + (1,1) a__take_A(x1,x2) = x2 + (2,1) isNatIList_A(x1) = (1,1) length_A(x1) = (1,2) isNatList_A(x1) = (1,0) isNat_A(x1) = ((1,0),(1,1)) x1 3. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U93#_A(x1,x2,x3,x4) = (2,0) tt_A() = (10,11) mark#_A(x1) = (1,1) U11_A(x1) = (1,8) U21_A(x1) = (0,7) U31_A(x1) = (0,2) U41_A(x1,x2) = (1,3) U42_A(x1) = (0,4) U51_A(x1,x2) = (1,3) U52_A(x1) = (1,1) U61_A(x1,x2) = (0,1) U62_A(x1) = (1,12) U71_A(x1,x2,x3) = (0,5) a__U71#_A(x1,x2,x3) = (0,0) mark_A(x1) = ((0,1),(0,0)) x1 a__U72#_A(x1,x2) = (0,0) a__isNat_A(x1) = ((0,1),(1,1)) x1 + (0,1) a__length#_A(x1) = (0,0) cons_A(x1,x2) = (4,1) a__isNatList_A(x1) = (0,1) U72_A(x1,x2) = (1,6) U81_A(x1) = (5,3) U91_A(x1,x2,x3,x4) = (1,6) U92_A(x1,x2,x3,x4) = (2,2) U93_A(x1,x2,x3,x4) = (1,3) s_A(x1) = (6,7) a__zeros_A() = (3,1) |0|_A() = (2,1) zeros_A() = (4,2) a__U11_A(x1) = (9,7) a__U21_A(x1) = (6,0) a__U31_A(x1) = (11,1) a__U41_A(x1,x2) = (2,12) a__U42_A(x1) = (3,1) a__isNatIList_A(x1) = (12,11) a__U51_A(x1,x2) = (2,0) a__U52_A(x1) = (11,0) a__U61_A(x1,x2) = (0,2) a__U62_A(x1) = (11,0) a__U71_A(x1,x2,x3) = (4,5) a__U72_A(x1,x2) = (5,0) a__length_A(x1) = (3,4) a__U81_A(x1) = (4,2) nil_A() = (1,2) a__U91_A(x1,x2,x3,x4) = (0,5) a__U92_A(x1,x2,x3,x4) = (1,0) a__U93_A(x1,x2,x3,x4) = (2,0) take_A(x1,x2) = (0,1) a__take_A(x1,x2) = ((1,0),(1,0)) x2 + (1,0) isNatIList_A(x1) = (1,1) length_A(x1) = (1,4) isNatList_A(x1) = (1,0) isNat_A(x1) = x1 + (0,1) The next rules are strictly ordered: p1, p11, p15, p16, p17, p18, p19, p20, p21, p22, p23 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U11(X)) -> mark#(X) p2: mark#(U21(X)) -> mark#(X) p3: mark#(U31(X)) -> mark#(X) p4: mark#(U41(X1,X2)) -> mark#(X1) p5: mark#(U42(X)) -> mark#(X) p6: mark#(U51(X1,X2)) -> mark#(X1) p7: mark#(U52(X)) -> mark#(X) p8: mark#(U61(X1,X2)) -> mark#(X1) p9: mark#(U62(X)) -> mark#(X) p10: a__U71#(tt(),L,N) -> a__U72#(a__isNat(N),L) p11: a__U72#(tt(),L) -> a__length#(mark(L)) p12: a__length#(cons(N,L)) -> a__U71#(a__isNatList(L),L,N) p13: mark#(cons(X1,X2)) -> mark#(X1) p14: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt()) -> tt() r3: a__U21(tt()) -> tt() r4: a__U31(tt()) -> tt() r5: a__U41(tt(),V2) -> a__U42(a__isNatIList(V2)) r6: a__U42(tt()) -> tt() r7: a__U51(tt(),V2) -> a__U52(a__isNatList(V2)) r8: a__U52(tt()) -> tt() r9: a__U61(tt(),V2) -> a__U62(a__isNatIList(V2)) r10: a__U62(tt()) -> tt() r11: a__U71(tt(),L,N) -> a__U72(a__isNat(N),L) r12: a__U72(tt(),L) -> s(a__length(mark(L))) r13: a__U81(tt()) -> nil() r14: a__U91(tt(),IL,M,N) -> a__U92(a__isNat(M),IL,M,N) r15: a__U92(tt(),IL,M,N) -> a__U93(a__isNat(N),IL,M,N) r16: a__U93(tt(),IL,M,N) -> cons(mark(N),take(M,IL)) r17: a__isNat(|0|()) -> tt() r18: a__isNat(length(V1)) -> a__U11(a__isNatList(V1)) r19: a__isNat(s(V1)) -> a__U21(a__isNat(V1)) r20: a__isNatIList(V) -> a__U31(a__isNatList(V)) r21: a__isNatIList(zeros()) -> tt() r22: a__isNatIList(cons(V1,V2)) -> a__U41(a__isNat(V1),V2) r23: a__isNatList(nil()) -> tt() r24: a__isNatList(cons(V1,V2)) -> a__U51(a__isNat(V1),V2) r25: a__isNatList(take(V1,V2)) -> a__U61(a__isNat(V1),V2) r26: a__length(nil()) -> |0|() r27: a__length(cons(N,L)) -> a__U71(a__isNatList(L),L,N) r28: a__take(|0|(),IL) -> a__U81(a__isNatIList(IL)) r29: a__take(s(M),cons(N,IL)) -> a__U91(a__isNatIList(IL),IL,M,N) r30: mark(zeros()) -> a__zeros() r31: mark(U11(X)) -> a__U11(mark(X)) r32: mark(U21(X)) -> a__U21(mark(X)) r33: mark(U31(X)) -> a__U31(mark(X)) r34: mark(U41(X1,X2)) -> a__U41(mark(X1),X2) r35: mark(U42(X)) -> a__U42(mark(X)) r36: mark(isNatIList(X)) -> a__isNatIList(X) r37: mark(U51(X1,X2)) -> a__U51(mark(X1),X2) r38: mark(U52(X)) -> a__U52(mark(X)) r39: mark(isNatList(X)) -> a__isNatList(X) r40: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r41: mark(U62(X)) -> a__U62(mark(X)) r42: mark(U71(X1,X2,X3)) -> a__U71(mark(X1),X2,X3) r43: mark(U72(X1,X2)) -> a__U72(mark(X1),X2) r44: mark(isNat(X)) -> a__isNat(X) r45: mark(length(X)) -> a__length(mark(X)) r46: mark(U81(X)) -> a__U81(mark(X)) r47: mark(U91(X1,X2,X3,X4)) -> a__U91(mark(X1),X2,X3,X4) r48: mark(U92(X1,X2,X3,X4)) -> a__U92(mark(X1),X2,X3,X4) r49: mark(U93(X1,X2,X3,X4)) -> a__U93(mark(X1),X2,X3,X4) r50: mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) r51: mark(cons(X1,X2)) -> cons(mark(X1),X2) r52: mark(|0|()) -> |0|() r53: mark(tt()) -> tt() r54: mark(s(X)) -> s(mark(X)) r55: mark(nil()) -> nil() r56: a__zeros() -> zeros() r57: a__U11(X) -> U11(X) r58: a__U21(X) -> U21(X) r59: a__U31(X) -> U31(X) r60: a__U41(X1,X2) -> U41(X1,X2) r61: a__U42(X) -> U42(X) r62: a__isNatIList(X) -> isNatIList(X) r63: a__U51(X1,X2) -> U51(X1,X2) r64: a__U52(X) -> U52(X) r65: a__isNatList(X) -> isNatList(X) r66: a__U61(X1,X2) -> U61(X1,X2) r67: a__U62(X) -> U62(X) r68: a__U71(X1,X2,X3) -> U71(X1,X2,X3) r69: a__U72(X1,X2) -> U72(X1,X2) r70: a__isNat(X) -> isNat(X) r71: a__length(X) -> length(X) r72: a__U81(X) -> U81(X) r73: a__U91(X1,X2,X3,X4) -> U91(X1,X2,X3,X4) r74: a__U92(X1,X2,X3,X4) -> U92(X1,X2,X3,X4) r75: a__U93(X1,X2,X3,X4) -> U93(X1,X2,X3,X4) r76: a__take(X1,X2) -> take(X1,X2) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p13, p14} {p10, p11, p12} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U11(X)) -> mark#(X) p2: mark#(s(X)) -> mark#(X) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(U62(X)) -> mark#(X) p5: mark#(U61(X1,X2)) -> mark#(X1) p6: mark#(U52(X)) -> mark#(X) p7: mark#(U51(X1,X2)) -> mark#(X1) p8: mark#(U42(X)) -> mark#(X) p9: mark#(U41(X1,X2)) -> mark#(X1) p10: mark#(U31(X)) -> mark#(X) p11: mark#(U21(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt()) -> tt() r3: a__U21(tt()) -> tt() r4: a__U31(tt()) -> tt() r5: a__U41(tt(),V2) -> a__U42(a__isNatIList(V2)) r6: a__U42(tt()) -> tt() r7: a__U51(tt(),V2) -> a__U52(a__isNatList(V2)) r8: a__U52(tt()) -> tt() r9: a__U61(tt(),V2) -> a__U62(a__isNatIList(V2)) r10: a__U62(tt()) -> tt() r11: a__U71(tt(),L,N) -> a__U72(a__isNat(N),L) r12: a__U72(tt(),L) -> s(a__length(mark(L))) r13: a__U81(tt()) -> nil() r14: a__U91(tt(),IL,M,N) -> a__U92(a__isNat(M),IL,M,N) r15: a__U92(tt(),IL,M,N) -> a__U93(a__isNat(N),IL,M,N) r16: a__U93(tt(),IL,M,N) -> cons(mark(N),take(M,IL)) r17: a__isNat(|0|()) -> tt() r18: a__isNat(length(V1)) -> a__U11(a__isNatList(V1)) r19: a__isNat(s(V1)) -> a__U21(a__isNat(V1)) r20: a__isNatIList(V) -> a__U31(a__isNatList(V)) r21: a__isNatIList(zeros()) -> tt() r22: a__isNatIList(cons(V1,V2)) -> a__U41(a__isNat(V1),V2) r23: a__isNatList(nil()) -> tt() r24: a__isNatList(cons(V1,V2)) -> a__U51(a__isNat(V1),V2) r25: a__isNatList(take(V1,V2)) -> a__U61(a__isNat(V1),V2) r26: a__length(nil()) -> |0|() r27: a__length(cons(N,L)) -> a__U71(a__isNatList(L),L,N) r28: a__take(|0|(),IL) -> a__U81(a__isNatIList(IL)) r29: a__take(s(M),cons(N,IL)) -> a__U91(a__isNatIList(IL),IL,M,N) r30: mark(zeros()) -> a__zeros() r31: mark(U11(X)) -> a__U11(mark(X)) r32: mark(U21(X)) -> a__U21(mark(X)) r33: mark(U31(X)) -> a__U31(mark(X)) r34: mark(U41(X1,X2)) -> a__U41(mark(X1),X2) r35: mark(U42(X)) -> a__U42(mark(X)) r36: mark(isNatIList(X)) -> a__isNatIList(X) r37: mark(U51(X1,X2)) -> a__U51(mark(X1),X2) r38: mark(U52(X)) -> a__U52(mark(X)) r39: mark(isNatList(X)) -> a__isNatList(X) r40: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r41: mark(U62(X)) -> a__U62(mark(X)) r42: mark(U71(X1,X2,X3)) -> a__U71(mark(X1),X2,X3) r43: mark(U72(X1,X2)) -> a__U72(mark(X1),X2) r44: mark(isNat(X)) -> a__isNat(X) r45: mark(length(X)) -> a__length(mark(X)) r46: mark(U81(X)) -> a__U81(mark(X)) r47: mark(U91(X1,X2,X3,X4)) -> a__U91(mark(X1),X2,X3,X4) r48: mark(U92(X1,X2,X3,X4)) -> a__U92(mark(X1),X2,X3,X4) r49: mark(U93(X1,X2,X3,X4)) -> a__U93(mark(X1),X2,X3,X4) r50: mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) r51: mark(cons(X1,X2)) -> cons(mark(X1),X2) r52: mark(|0|()) -> |0|() r53: mark(tt()) -> tt() r54: mark(s(X)) -> s(mark(X)) r55: mark(nil()) -> nil() r56: a__zeros() -> zeros() r57: a__U11(X) -> U11(X) r58: a__U21(X) -> U21(X) r59: a__U31(X) -> U31(X) r60: a__U41(X1,X2) -> U41(X1,X2) r61: a__U42(X) -> U42(X) r62: a__isNatIList(X) -> isNatIList(X) r63: a__U51(X1,X2) -> U51(X1,X2) r64: a__U52(X) -> U52(X) r65: a__isNatList(X) -> isNatList(X) r66: a__U61(X1,X2) -> U61(X1,X2) r67: a__U62(X) -> U62(X) r68: a__U71(X1,X2,X3) -> U71(X1,X2,X3) r69: a__U72(X1,X2) -> U72(X1,X2) r70: a__isNat(X) -> isNat(X) r71: a__length(X) -> length(X) r72: a__U81(X) -> U81(X) r73: a__U91(X1,X2,X3,X4) -> U91(X1,X2,X3,X4) r74: a__U92(X1,X2,X3,X4) -> U92(X1,X2,X3,X4) r75: a__U93(X1,X2,X3,X4) -> U93(X1,X2,X3,X4) r76: a__take(X1,X2) -> take(X1,X2) The set of usable rules consists of (no rules) Take the reduction pair: lexicographic combination of reduction pairs: 1. matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((1,1),(1,0)) x1 U11_A(x1) = ((1,1),(1,1)) x1 + (1,1) s_A(x1) = ((1,1),(1,1)) x1 + (1,1) cons_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (1,1) U62_A(x1) = ((1,1),(1,1)) x1 + (1,1) U61_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (1,1) U52_A(x1) = ((1,1),(1,1)) x1 + (1,1) U51_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (1,1) U42_A(x1) = ((1,1),(1,1)) x1 + (1,1) U41_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (1,1) U31_A(x1) = ((1,1),(1,1)) x1 + (1,1) U21_A(x1) = ((1,1),(1,1)) x1 + (1,1) 2. matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((1,0),(1,1)) x1 U11_A(x1) = x1 + (0,1) s_A(x1) = ((0,1),(0,1)) x1 + (0,1) cons_A(x1,x2) = x1 + ((1,1),(0,1)) x2 + (1,1) U62_A(x1) = ((1,1),(1,1)) x1 + (1,1) U61_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(0,0)) x2 + (1,1) U52_A(x1) = ((1,1),(1,1)) x1 + (1,1) U51_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (1,1) U42_A(x1) = ((1,1),(1,1)) x1 + (0,1) U41_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (0,1) U31_A(x1) = ((1,1),(1,1)) x1 + (1,1) U21_A(x1) = ((1,1),(1,1)) x1 + (1,1) 3. matrix interpretations: carrier: N^2 order: standard order interpretations: mark#_A(x1) = ((0,1),(1,1)) x1 U11_A(x1) = ((0,0),(1,0)) x1 + (1,1) s_A(x1) = (1,1) cons_A(x1,x2) = ((0,0),(1,0)) x1 + x2 + (1,1) U62_A(x1) = ((1,1),(1,1)) x1 + (1,1) U61_A(x1,x2) = ((1,1),(1,0)) x1 + ((1,1),(1,1)) x2 + (1,1) U52_A(x1) = ((1,1),(1,1)) x1 + (1,1) U51_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (1,1) U42_A(x1) = ((0,1),(0,1)) x1 + (1,1) U41_A(x1,x2) = ((0,1),(0,1)) x1 + ((1,1),(1,0)) x2 + (1,1) U31_A(x1) = ((1,1),(1,1)) x1 + (1,1) U21_A(x1) = ((1,1),(1,1)) x1 + (1,1) The next rules are strictly ordered: p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 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__U71#(tt(),L,N) -> a__U72#(a__isNat(N),L) p2: a__U72#(tt(),L) -> a__length#(mark(L)) p3: a__length#(cons(N,L)) -> a__U71#(a__isNatList(L),L,N) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt()) -> tt() r3: a__U21(tt()) -> tt() r4: a__U31(tt()) -> tt() r5: a__U41(tt(),V2) -> a__U42(a__isNatIList(V2)) r6: a__U42(tt()) -> tt() r7: a__U51(tt(),V2) -> a__U52(a__isNatList(V2)) r8: a__U52(tt()) -> tt() r9: a__U61(tt(),V2) -> a__U62(a__isNatIList(V2)) r10: a__U62(tt()) -> tt() r11: a__U71(tt(),L,N) -> a__U72(a__isNat(N),L) r12: a__U72(tt(),L) -> s(a__length(mark(L))) r13: a__U81(tt()) -> nil() r14: a__U91(tt(),IL,M,N) -> a__U92(a__isNat(M),IL,M,N) r15: a__U92(tt(),IL,M,N) -> a__U93(a__isNat(N),IL,M,N) r16: a__U93(tt(),IL,M,N) -> cons(mark(N),take(M,IL)) r17: a__isNat(|0|()) -> tt() r18: a__isNat(length(V1)) -> a__U11(a__isNatList(V1)) r19: a__isNat(s(V1)) -> a__U21(a__isNat(V1)) r20: a__isNatIList(V) -> a__U31(a__isNatList(V)) r21: a__isNatIList(zeros()) -> tt() r22: a__isNatIList(cons(V1,V2)) -> a__U41(a__isNat(V1),V2) r23: a__isNatList(nil()) -> tt() r24: a__isNatList(cons(V1,V2)) -> a__U51(a__isNat(V1),V2) r25: a__isNatList(take(V1,V2)) -> a__U61(a__isNat(V1),V2) r26: a__length(nil()) -> |0|() r27: a__length(cons(N,L)) -> a__U71(a__isNatList(L),L,N) r28: a__take(|0|(),IL) -> a__U81(a__isNatIList(IL)) r29: a__take(s(M),cons(N,IL)) -> a__U91(a__isNatIList(IL),IL,M,N) r30: mark(zeros()) -> a__zeros() r31: mark(U11(X)) -> a__U11(mark(X)) r32: mark(U21(X)) -> a__U21(mark(X)) r33: mark(U31(X)) -> a__U31(mark(X)) r34: mark(U41(X1,X2)) -> a__U41(mark(X1),X2) r35: mark(U42(X)) -> a__U42(mark(X)) r36: mark(isNatIList(X)) -> a__isNatIList(X) r37: mark(U51(X1,X2)) -> a__U51(mark(X1),X2) r38: mark(U52(X)) -> a__U52(mark(X)) r39: mark(isNatList(X)) -> a__isNatList(X) r40: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r41: mark(U62(X)) -> a__U62(mark(X)) r42: mark(U71(X1,X2,X3)) -> a__U71(mark(X1),X2,X3) r43: mark(U72(X1,X2)) -> a__U72(mark(X1),X2) r44: mark(isNat(X)) -> a__isNat(X) r45: mark(length(X)) -> a__length(mark(X)) r46: mark(U81(X)) -> a__U81(mark(X)) r47: mark(U91(X1,X2,X3,X4)) -> a__U91(mark(X1),X2,X3,X4) r48: mark(U92(X1,X2,X3,X4)) -> a__U92(mark(X1),X2,X3,X4) r49: mark(U93(X1,X2,X3,X4)) -> a__U93(mark(X1),X2,X3,X4) r50: mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) r51: mark(cons(X1,X2)) -> cons(mark(X1),X2) r52: mark(|0|()) -> |0|() r53: mark(tt()) -> tt() r54: mark(s(X)) -> s(mark(X)) r55: mark(nil()) -> nil() r56: a__zeros() -> zeros() r57: a__U11(X) -> U11(X) r58: a__U21(X) -> U21(X) r59: a__U31(X) -> U31(X) r60: a__U41(X1,X2) -> U41(X1,X2) r61: a__U42(X) -> U42(X) r62: a__isNatIList(X) -> isNatIList(X) r63: a__U51(X1,X2) -> U51(X1,X2) r64: a__U52(X) -> U52(X) r65: a__isNatList(X) -> isNatList(X) r66: a__U61(X1,X2) -> U61(X1,X2) r67: a__U62(X) -> U62(X) r68: a__U71(X1,X2,X3) -> U71(X1,X2,X3) r69: a__U72(X1,X2) -> U72(X1,X2) r70: a__isNat(X) -> isNat(X) r71: a__length(X) -> length(X) r72: a__U81(X) -> U81(X) r73: a__U91(X1,X2,X3,X4) -> U91(X1,X2,X3,X4) r74: a__U92(X1,X2,X3,X4) -> U92(X1,X2,X3,X4) r75: a__U93(X1,X2,X3,X4) -> U93(X1,X2,X3,X4) r76: a__take(X1,X2) -> take(X1,X2) 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, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64, r65, r66, r67, r68, r69, r70, r71, r72, r73, r74, r75, r76 Take the reduction pair: lexicographic combination of reduction pairs: 1. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U71#_A(x1,x2,x3) = x1 + ((0,1),(0,0)) x2 tt_A() = (10,9) a__U72#_A(x1,x2) = ((0,1),(0,0)) x2 + (7,0) a__isNat_A(x1) = ((1,1),(1,1)) x1 + (2,1) a__length#_A(x1) = ((0,1),(0,0)) x1 + (6,0) mark_A(x1) = ((0,1),(0,1)) x1 + (6,0) cons_A(x1,x2) = ((1,0),(1,1)) x2 + (5,0) a__isNatList_A(x1) = ((1,0),(1,0)) x1 + (5,1) a__zeros_A() = (6,1) |0|_A() = (7,2) zeros_A() = (0,1) a__U11_A(x1) = x1 + (0,1) a__U21_A(x1) = (10,9) a__U31_A(x1) = (13,9) a__U41_A(x1,x2) = (12,9) a__U42_A(x1) = ((0,1),(0,1)) x1 + (2,0) a__isNatIList_A(x1) = (13,9) a__U51_A(x1,x2) = ((1,0),(1,0)) x2 + (7,3) a__U52_A(x1) = x1 + (1,2) a__U61_A(x1,x2) = (13,9) a__U62_A(x1) = x1 a__U71_A(x1,x2,x3) = x1 + x2 + (4,4) a__U72_A(x1,x2) = x2 + (14,13) s_A(x1) = x1 + (14,8) a__length_A(x1) = x1 + (4,5) a__U81_A(x1) = (9,3) nil_A() = (8,3) a__U91_A(x1,x2,x3,x4) = x1 + ((1,0),(1,1)) x2 + ((0,1),(0,1)) x3 + (6,7) a__U92_A(x1,x2,x3,x4) = ((1,0),(1,1)) x2 + ((0,1),(0,1)) x3 + (15,16) a__U93_A(x1,x2,x3,x4) = ((1,0),(1,1)) x2 + x3 + (14,16) take_A(x1,x2) = x1 + x2 + (8,8) a__take_A(x1,x2) = ((0,1),(0,1)) x1 + x2 + (8,8) U11_A(x1) = x1 + (0,1) U21_A(x1) = (9,9) U31_A(x1) = (12,9) U41_A(x1,x2) = (1,9) U42_A(x1) = x1 + (1,0) isNatIList_A(x1) = (1,9) U51_A(x1,x2) = ((1,0),(1,0)) x2 + (1,3) U52_A(x1) = x1 + (1,2) U61_A(x1,x2) = (12,9) U62_A(x1) = x1 U71_A(x1,x2,x3) = x1 + x2 + (4,4) U72_A(x1,x2) = x2 + (14,13) length_A(x1) = x1 + (1,5) U81_A(x1) = (1,3) U91_A(x1,x2,x3,x4) = x1 + ((0,0),(1,1)) x2 + x3 + (1,7) U92_A(x1,x2,x3,x4) = ((0,0),(1,1)) x2 + ((0,1),(0,1)) x3 + (14,16) U93_A(x1,x2,x3,x4) = ((0,0),(1,1)) x2 + x3 + (14,16) isNatList_A(x1) = ((0,0),(1,0)) x1 + (1,1) isNat_A(x1) = ((0,0),(1,1)) x1 + (1,1) 2. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U71#_A(x1,x2,x3) = ((1,1),(0,1)) x1 tt_A() = (5,10) a__U72#_A(x1,x2) = (16,11) a__isNat_A(x1) = (4,9) a__length#_A(x1) = (17,12) mark_A(x1) = (3,8) cons_A(x1,x2) = ((0,0),(1,1)) x2 + (5,9) a__isNatList_A(x1) = ((1,1),(0,1)) x1 + (0,13) a__zeros_A() = (4,9) |0|_A() = (0,0) zeros_A() = (5,10) a__U11_A(x1) = ((0,0),(1,1)) x1 + (6,0) a__U21_A(x1) = (6,10) a__U31_A(x1) = (5,10) a__U41_A(x1,x2) = (3,11) a__U42_A(x1) = (2,12) a__isNatIList_A(x1) = (5,10) a__U51_A(x1,x2) = x2 + (15,8) a__U52_A(x1) = ((1,1),(0,0)) x1 + (1,10) a__U61_A(x1,x2) = (6,10) a__U62_A(x1) = x1 a__U71_A(x1,x2,x3) = ((0,0),(1,0)) x1 + (0,5) a__U72_A(x1,x2) = (0,9) s_A(x1) = (0,0) a__length_A(x1) = x1 + (0,1) a__U81_A(x1) = (2,8) nil_A() = (4,8) a__U91_A(x1,x2,x3,x4) = (0,8) a__U92_A(x1,x2,x3,x4) = (5,9) a__U93_A(x1,x2,x3,x4) = ((1,1),(0,1)) x2 + (5,15) take_A(x1,x2) = (0,7) a__take_A(x1,x2) = (2,7) U11_A(x1) = (0,0) U21_A(x1) = (7,11) U31_A(x1) = (5,11) U41_A(x1,x2) = (0,12) U42_A(x1) = (0,1) isNatIList_A(x1) = (0,11) U51_A(x1,x2) = ((0,0),(1,1)) x2 + (0,9) U52_A(x1) = (0,1) U61_A(x1,x2) = (0,11) U62_A(x1) = (0,0) U71_A(x1,x2,x3) = (0,1) U72_A(x1,x2) = (0,9) length_A(x1) = (0,0) U81_A(x1) = (1,0) U91_A(x1,x2,x3,x4) = (0,1) U92_A(x1,x2,x3,x4) = (5,0) U93_A(x1,x2,x3,x4) = (5,0) isNatList_A(x1) = (0,14) isNat_A(x1) = (0,10) 3. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U71#_A(x1,x2,x3) = ((1,1),(1,0)) x1 tt_A() = (2,6) a__U72#_A(x1,x2) = (9,3) a__isNat_A(x1) = (0,1) a__length#_A(x1) = (9,3) mark_A(x1) = (10,6) cons_A(x1,x2) = (1,3) a__isNatList_A(x1) = ((1,1),(1,1)) x1 + (9,1) a__zeros_A() = (1,3) |0|_A() = (0,0) zeros_A() = (1,1) a__U11_A(x1) = (1,7) a__U21_A(x1) = (3,1) a__U31_A(x1) = (3,6) a__U41_A(x1,x2) = (12,8) a__U42_A(x1) = (11,6) a__isNatIList_A(x1) = (4,7) a__U51_A(x1,x2) = ((0,1),(0,1)) x2 + (2,6) a__U52_A(x1) = x1 + (1,6) a__U61_A(x1,x2) = (1,3) a__U62_A(x1) = (3,6) a__U71_A(x1,x2,x3) = (2,6) a__U72_A(x1,x2) = (1,6) s_A(x1) = (0,0) a__length_A(x1) = (3,6) a__U81_A(x1) = (2,2) nil_A() = (1,3) a__U91_A(x1,x2,x3,x4) = (1,1) a__U92_A(x1,x2,x3,x4) = (1,1) a__U93_A(x1,x2,x3,x4) = (1,2) take_A(x1,x2) = (1,1) a__take_A(x1,x2) = (3,1) U11_A(x1) = (0,0) U21_A(x1) = (0,0) U31_A(x1) = (0,6) U41_A(x1,x2) = (0,0) U42_A(x1) = (0,0) isNatIList_A(x1) = (0,0) U51_A(x1,x2) = (0,0) U52_A(x1) = (0,0) U61_A(x1,x2) = (0,0) U62_A(x1) = (0,0) U71_A(x1,x2,x3) = (0,0) U72_A(x1,x2) = (0,0) length_A(x1) = (0,0) U81_A(x1) = (0,3) U91_A(x1,x2,x3,x4) = (0,0) U92_A(x1,x2,x3,x4) = (0,1) U93_A(x1,x2,x3,x4) = (0,1) isNatList_A(x1) = (10,0) isNat_A(x1) = (0,0) The next rules are strictly ordered: p1, p2, p3 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__U41#(tt(),V2) -> a__isNatIList#(V2) p2: a__isNatIList#(cons(V1,V2)) -> a__isNat#(V1) p3: a__isNat#(s(V1)) -> a__isNat#(V1) p4: a__isNat#(length(V1)) -> a__isNatList#(V1) p5: a__isNatList#(take(V1,V2)) -> a__isNat#(V1) p6: a__isNatList#(take(V1,V2)) -> a__U61#(a__isNat(V1),V2) p7: a__U61#(tt(),V2) -> a__isNatIList#(V2) p8: a__isNatIList#(cons(V1,V2)) -> a__U41#(a__isNat(V1),V2) p9: a__isNatIList#(V) -> a__isNatList#(V) p10: a__isNatList#(cons(V1,V2)) -> a__isNat#(V1) p11: a__isNatList#(cons(V1,V2)) -> a__U51#(a__isNat(V1),V2) p12: a__U51#(tt(),V2) -> a__isNatList#(V2) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt()) -> tt() r3: a__U21(tt()) -> tt() r4: a__U31(tt()) -> tt() r5: a__U41(tt(),V2) -> a__U42(a__isNatIList(V2)) r6: a__U42(tt()) -> tt() r7: a__U51(tt(),V2) -> a__U52(a__isNatList(V2)) r8: a__U52(tt()) -> tt() r9: a__U61(tt(),V2) -> a__U62(a__isNatIList(V2)) r10: a__U62(tt()) -> tt() r11: a__U71(tt(),L,N) -> a__U72(a__isNat(N),L) r12: a__U72(tt(),L) -> s(a__length(mark(L))) r13: a__U81(tt()) -> nil() r14: a__U91(tt(),IL,M,N) -> a__U92(a__isNat(M),IL,M,N) r15: a__U92(tt(),IL,M,N) -> a__U93(a__isNat(N),IL,M,N) r16: a__U93(tt(),IL,M,N) -> cons(mark(N),take(M,IL)) r17: a__isNat(|0|()) -> tt() r18: a__isNat(length(V1)) -> a__U11(a__isNatList(V1)) r19: a__isNat(s(V1)) -> a__U21(a__isNat(V1)) r20: a__isNatIList(V) -> a__U31(a__isNatList(V)) r21: a__isNatIList(zeros()) -> tt() r22: a__isNatIList(cons(V1,V2)) -> a__U41(a__isNat(V1),V2) r23: a__isNatList(nil()) -> tt() r24: a__isNatList(cons(V1,V2)) -> a__U51(a__isNat(V1),V2) r25: a__isNatList(take(V1,V2)) -> a__U61(a__isNat(V1),V2) r26: a__length(nil()) -> |0|() r27: a__length(cons(N,L)) -> a__U71(a__isNatList(L),L,N) r28: a__take(|0|(),IL) -> a__U81(a__isNatIList(IL)) r29: a__take(s(M),cons(N,IL)) -> a__U91(a__isNatIList(IL),IL,M,N) r30: mark(zeros()) -> a__zeros() r31: mark(U11(X)) -> a__U11(mark(X)) r32: mark(U21(X)) -> a__U21(mark(X)) r33: mark(U31(X)) -> a__U31(mark(X)) r34: mark(U41(X1,X2)) -> a__U41(mark(X1),X2) r35: mark(U42(X)) -> a__U42(mark(X)) r36: mark(isNatIList(X)) -> a__isNatIList(X) r37: mark(U51(X1,X2)) -> a__U51(mark(X1),X2) r38: mark(U52(X)) -> a__U52(mark(X)) r39: mark(isNatList(X)) -> a__isNatList(X) r40: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r41: mark(U62(X)) -> a__U62(mark(X)) r42: mark(U71(X1,X2,X3)) -> a__U71(mark(X1),X2,X3) r43: mark(U72(X1,X2)) -> a__U72(mark(X1),X2) r44: mark(isNat(X)) -> a__isNat(X) r45: mark(length(X)) -> a__length(mark(X)) r46: mark(U81(X)) -> a__U81(mark(X)) r47: mark(U91(X1,X2,X3,X4)) -> a__U91(mark(X1),X2,X3,X4) r48: mark(U92(X1,X2,X3,X4)) -> a__U92(mark(X1),X2,X3,X4) r49: mark(U93(X1,X2,X3,X4)) -> a__U93(mark(X1),X2,X3,X4) r50: mark(take(X1,X2)) -> a__take(mark(X1),mark(X2)) r51: mark(cons(X1,X2)) -> cons(mark(X1),X2) r52: mark(|0|()) -> |0|() r53: mark(tt()) -> tt() r54: mark(s(X)) -> s(mark(X)) r55: mark(nil()) -> nil() r56: a__zeros() -> zeros() r57: a__U11(X) -> U11(X) r58: a__U21(X) -> U21(X) r59: a__U31(X) -> U31(X) r60: a__U41(X1,X2) -> U41(X1,X2) r61: a__U42(X) -> U42(X) r62: a__isNatIList(X) -> isNatIList(X) r63: a__U51(X1,X2) -> U51(X1,X2) r64: a__U52(X) -> U52(X) r65: a__isNatList(X) -> isNatList(X) r66: a__U61(X1,X2) -> U61(X1,X2) r67: a__U62(X) -> U62(X) r68: a__U71(X1,X2,X3) -> U71(X1,X2,X3) r69: a__U72(X1,X2) -> U72(X1,X2) r70: a__isNat(X) -> isNat(X) r71: a__length(X) -> length(X) r72: a__U81(X) -> U81(X) r73: a__U91(X1,X2,X3,X4) -> U91(X1,X2,X3,X4) r74: a__U92(X1,X2,X3,X4) -> U92(X1,X2,X3,X4) r75: a__U93(X1,X2,X3,X4) -> U93(X1,X2,X3,X4) r76: a__take(X1,X2) -> take(X1,X2) The set of usable rules consists of r2, r3, r4, r5, r6, r7, r8, r9, r10, r17, r18, r19, r20, r21, r22, r23, r24, r25, r57, r58, r59, r60, r61, r62, r63, r64, r65, r66, r67, r70 Take the reduction pair: lexicographic combination of reduction pairs: 1. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U41#_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (0,1) tt_A() = (3,4) a__isNatIList#_A(x1) = ((1,1),(1,1)) x1 + (3,0) cons_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (0,3) a__isNat#_A(x1) = ((1,1),(0,1)) x1 + (1,0) s_A(x1) = ((1,1),(1,1)) x1 + (1,1) length_A(x1) = ((1,0),(1,1)) x1 + (2,1) a__isNatList#_A(x1) = ((1,0),(1,0)) x1 + (2,0) take_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (0,7) a__U61#_A(x1,x2) = ((0,1),(0,0)) x1 + ((1,1),(1,1)) x2 a__isNat_A(x1) = ((1,1),(1,1)) x1 + (1,1) a__U51#_A(x1,x2) = x1 + ((1,0),(1,0)) x2 a__U42_A(x1) = x1 U42_A(x1) = (0,0) a__U31_A(x1) = x1 + (4,0) a__U41_A(x1,x2) = ((0,0),(1,1)) x1 + ((0,0),(1,1)) x2 + (5,0) a__isNatIList_A(x1) = ((0,0),(1,1)) x1 + (5,1) U31_A(x1) = (0,0) U41_A(x1,x2) = (0,0) a__U52_A(x1) = x1 + (4,0) a__U62_A(x1) = ((1,1),(0,1)) x1 + (1,0) a__isNatList_A(x1) = ((1,1),(0,1)) x1 zeros_A() = (1,2) isNatIList_A(x1) = (0,0) U52_A(x1) = (3,0) U62_A(x1) = (0,0) a__U51_A(x1,x2) = ((0,1),(0,1)) x1 + ((0,0),(1,1)) x2 + (1,0) a__U61_A(x1,x2) = x1 + ((1,1),(1,1)) x2 + (5,1) U51_A(x1,x2) = (0,0) U61_A(x1,x2) = x2 + (4,0) a__U11_A(x1) = ((0,1),(0,0)) x1 + (1,4) a__U21_A(x1) = ((0,1),(1,1)) x1 + (1,0) nil_A() = (0,4) U11_A(x1) = (0,0) U21_A(x1) = (0,0) isNatList_A(x1) = (0,0) |0|_A() = (1,2) isNat_A(x1) = (0,0) 2. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U41#_A(x1,x2) = x1 + (0,3) tt_A() = (4,0) a__isNatIList#_A(x1) = ((1,1),(0,1)) x1 + (5,1) cons_A(x1,x2) = ((1,1),(0,0)) x1 + (1,1) a__isNat#_A(x1) = ((1,1),(0,1)) x1 + (3,3) s_A(x1) = ((1,1),(1,1)) x1 + (1,1) length_A(x1) = ((1,1),(0,1)) x1 + (1,1) a__isNatList#_A(x1) = ((1,0),(1,0)) x1 + (1,5) take_A(x1,x2) = ((1,1),(1,1)) x1 + ((1,1),(1,1)) x2 + (3,1) a__U61#_A(x1,x2) = ((1,0),(1,0)) x2 + (5,0) a__isNat_A(x1) = (8,1) a__U51#_A(x1,x2) = (0,7) a__U42_A(x1) = ((0,1),(0,0)) x1 + (5,0) U42_A(x1) = (0,0) a__U31_A(x1) = (5,2) a__U41_A(x1,x2) = (7,1) a__isNatIList_A(x1) = (8,1) U31_A(x1) = (6,3) U41_A(x1,x2) = (8,2) a__U52_A(x1) = (0,3) a__U62_A(x1) = ((0,0),(1,0)) x1 + (7,0) a__isNatList_A(x1) = ((1,1),(0,0)) x1 + (1,1) zeros_A() = (1,1) isNatIList_A(x1) = (9,2) U52_A(x1) = (1,4) U62_A(x1) = (8,1) a__U51_A(x1,x2) = (1,2) a__U61_A(x1,x2) = ((0,0),(1,0)) x1 + (6,0) U51_A(x1,x2) = (2,3) U61_A(x1,x2) = x2 + (7,1) a__U11_A(x1) = (9,2) a__U21_A(x1) = (0,2) nil_A() = (1,1) U11_A(x1) = (10,3) U21_A(x1) = (1,3) isNatList_A(x1) = (0,0) |0|_A() = (1,1) isNat_A(x1) = (9,2) 3. matrix interpretations: carrier: N^2 order: standard order interpretations: a__U41#_A(x1,x2) = (2,0) tt_A() = (3,3) a__isNatIList#_A(x1) = x1 + (0,1) cons_A(x1,x2) = x1 + (1,1) a__isNat#_A(x1) = ((1,1),(1,1)) x1 + (3,2) s_A(x1) = ((1,1),(0,0)) x1 + (1,1) length_A(x1) = ((1,1),(0,1)) x1 + (1,1) a__isNatList#_A(x1) = x1 + (1,5) take_A(x1,x2) = (0,1) a__U61#_A(x1,x2) = x2 + (2,6) a__isNat_A(x1) = (1,1) a__U51#_A(x1,x2) = (3,4) a__U42_A(x1) = (0,3) U42_A(x1) = (1,4) a__U31_A(x1) = (5,4) a__U41_A(x1,x2) = (5,4) a__isNatIList_A(x1) = (4,3) U31_A(x1) = (0,5) U41_A(x1,x2) = (6,5) a__U52_A(x1) = (0,0) a__U62_A(x1) = (4,3) a__isNatList_A(x1) = (2,1) zeros_A() = (1,1) isNatIList_A(x1) = (5,4) U52_A(x1) = (1,1) U62_A(x1) = (5,4) a__U51_A(x1,x2) = (1,0) a__U61_A(x1,x2) = (3,2) U51_A(x1,x2) = (2,1) U61_A(x1,x2) = (4,3) a__U11_A(x1) = (2,2) a__U21_A(x1) = (2,2) nil_A() = (0,1) U11_A(x1) = (3,3) U21_A(x1) = (3,3) isNatList_A(x1) = (3,0) |0|_A() = (1,1) isNat_A(x1) = (2,2) The next rules are strictly ordered: p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 We remove them from the problem. Then no dependency pair remains.