YES We show the termination of the TRS R: a__zeros() -> cons(|0|(),zeros()) a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) a__U12(tt()) -> tt() a__U21(tt(),V1) -> a__U22(a__isNat(V1)) a__U22(tt()) -> tt() a__U31(tt(),V) -> a__U32(a__isNatList(V)) a__U32(tt()) -> tt() a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) a__U43(tt()) -> tt() a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) a__U53(tt()) -> tt() a__U61(tt(),L) -> s(a__length(mark(L))) a__and(tt(),X) -> mark(X) a__isNat(|0|()) -> tt() a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) a__isNatIList(zeros()) -> tt() a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) a__isNatIListKind(nil()) -> tt() a__isNatIListKind(zeros()) -> tt() a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) a__isNatKind(|0|()) -> tt() a__isNatKind(length(V1)) -> a__isNatIListKind(V1) a__isNatKind(s(V1)) -> a__isNatKind(V1) a__isNatList(nil()) -> tt() a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) a__length(nil()) -> |0|() a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) mark(zeros()) -> a__zeros() mark(U11(X1,X2)) -> a__U11(mark(X1),X2) mark(U12(X)) -> a__U12(mark(X)) mark(isNatList(X)) -> a__isNatList(X) mark(U21(X1,X2)) -> a__U21(mark(X1),X2) mark(U22(X)) -> a__U22(mark(X)) mark(isNat(X)) -> a__isNat(X) mark(U31(X1,X2)) -> a__U31(mark(X1),X2) mark(U32(X)) -> a__U32(mark(X)) mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) mark(U42(X1,X2)) -> a__U42(mark(X1),X2) mark(U43(X)) -> a__U43(mark(X)) mark(isNatIList(X)) -> a__isNatIList(X) mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) mark(U52(X1,X2)) -> a__U52(mark(X1),X2) mark(U53(X)) -> a__U53(mark(X)) mark(U61(X1,X2)) -> a__U61(mark(X1),X2) mark(length(X)) -> a__length(mark(X)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNatIListKind(X)) -> a__isNatIListKind(X) mark(isNatKind(X)) -> a__isNatKind(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__U12(X) -> U12(X) a__isNatList(X) -> isNatList(X) a__U21(X1,X2) -> U21(X1,X2) a__U22(X) -> U22(X) a__isNat(X) -> isNat(X) a__U31(X1,X2) -> U31(X1,X2) a__U32(X) -> U32(X) a__U41(X1,X2,X3) -> U41(X1,X2,X3) a__U42(X1,X2) -> U42(X1,X2) a__U43(X) -> U43(X) a__isNatIList(X) -> isNatIList(X) a__U51(X1,X2,X3) -> U51(X1,X2,X3) a__U52(X1,X2) -> U52(X1,X2) a__U53(X) -> U53(X) a__U61(X1,X2) -> U61(X1,X2) a__length(X) -> length(X) a__and(X1,X2) -> and(X1,X2) a__isNatIListKind(X) -> isNatIListKind(X) a__isNatKind(X) -> isNatKind(X) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),V1) -> a__U12#(a__isNatList(V1)) p2: a__U11#(tt(),V1) -> a__isNatList#(V1) p3: a__U21#(tt(),V1) -> a__U22#(a__isNat(V1)) p4: a__U21#(tt(),V1) -> a__isNat#(V1) p5: a__U31#(tt(),V) -> a__U32#(a__isNatList(V)) p6: a__U31#(tt(),V) -> a__isNatList#(V) p7: a__U41#(tt(),V1,V2) -> a__U42#(a__isNat(V1),V2) p8: a__U41#(tt(),V1,V2) -> a__isNat#(V1) p9: a__U42#(tt(),V2) -> a__U43#(a__isNatIList(V2)) p10: a__U42#(tt(),V2) -> a__isNatIList#(V2) p11: a__U51#(tt(),V1,V2) -> a__U52#(a__isNat(V1),V2) p12: a__U51#(tt(),V1,V2) -> a__isNat#(V1) p13: a__U52#(tt(),V2) -> a__U53#(a__isNatList(V2)) p14: a__U52#(tt(),V2) -> a__isNatList#(V2) p15: a__U61#(tt(),L) -> a__length#(mark(L)) p16: a__U61#(tt(),L) -> mark#(L) p17: a__and#(tt(),X) -> mark#(X) p18: a__isNat#(length(V1)) -> a__U11#(a__isNatIListKind(V1),V1) p19: a__isNat#(length(V1)) -> a__isNatIListKind#(V1) p20: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p21: a__isNat#(s(V1)) -> a__isNatKind#(V1) p22: a__isNatIList#(V) -> a__U31#(a__isNatIListKind(V),V) p23: a__isNatIList#(V) -> a__isNatIListKind#(V) p24: a__isNatIList#(cons(V1,V2)) -> a__U41#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p25: a__isNatIList#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p26: a__isNatIList#(cons(V1,V2)) -> a__isNatKind#(V1) p27: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p28: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p29: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p30: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p31: a__isNatList#(cons(V1,V2)) -> a__U51#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p32: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p33: a__isNatList#(cons(V1,V2)) -> a__isNatKind#(V1) p34: a__length#(cons(N,L)) -> a__U61#(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) p35: a__length#(cons(N,L)) -> a__and#(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))) p36: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNatIListKind(L)) p37: a__length#(cons(N,L)) -> a__isNatList#(L) p38: mark#(zeros()) -> a__zeros#() p39: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) p40: mark#(U11(X1,X2)) -> mark#(X1) p41: mark#(U12(X)) -> a__U12#(mark(X)) p42: mark#(U12(X)) -> mark#(X) p43: mark#(isNatList(X)) -> a__isNatList#(X) p44: mark#(U21(X1,X2)) -> a__U21#(mark(X1),X2) p45: mark#(U21(X1,X2)) -> mark#(X1) p46: mark#(U22(X)) -> a__U22#(mark(X)) p47: mark#(U22(X)) -> mark#(X) p48: mark#(isNat(X)) -> a__isNat#(X) p49: mark#(U31(X1,X2)) -> a__U31#(mark(X1),X2) p50: mark#(U31(X1,X2)) -> mark#(X1) p51: mark#(U32(X)) -> a__U32#(mark(X)) p52: mark#(U32(X)) -> mark#(X) p53: mark#(U41(X1,X2,X3)) -> a__U41#(mark(X1),X2,X3) p54: mark#(U41(X1,X2,X3)) -> mark#(X1) p55: mark#(U42(X1,X2)) -> a__U42#(mark(X1),X2) p56: mark#(U42(X1,X2)) -> mark#(X1) p57: mark#(U43(X)) -> a__U43#(mark(X)) p58: mark#(U43(X)) -> mark#(X) p59: mark#(isNatIList(X)) -> a__isNatIList#(X) p60: mark#(U51(X1,X2,X3)) -> a__U51#(mark(X1),X2,X3) p61: mark#(U51(X1,X2,X3)) -> mark#(X1) p62: mark#(U52(X1,X2)) -> a__U52#(mark(X1),X2) p63: mark#(U52(X1,X2)) -> mark#(X1) p64: mark#(U53(X)) -> a__U53#(mark(X)) p65: mark#(U53(X)) -> mark#(X) p66: mark#(U61(X1,X2)) -> a__U61#(mark(X1),X2) p67: mark#(U61(X1,X2)) -> mark#(X1) p68: mark#(length(X)) -> a__length#(mark(X)) p69: mark#(length(X)) -> mark#(X) p70: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p71: mark#(and(X1,X2)) -> mark#(X1) p72: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p73: mark#(isNatKind(X)) -> a__isNatKind#(X) p74: mark#(cons(X1,X2)) -> mark#(X1) p75: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p2, p4, p6, p7, p8, p10, p11, p12, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p39, p40, p42, p43, p44, p45, p47, p48, p49, p50, p52, p53, p54, p55, p56, p58, p59, p60, p61, p62, p63, p65, p66, p67, p68, p69, p70, p71, p72, p73, p74, p75} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),V1) -> a__isNatList#(V1) p2: a__isNatList#(cons(V1,V2)) -> a__isNatKind#(V1) p3: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p4: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p5: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p6: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(s(X)) -> mark#(X) p9: mark#(cons(X1,X2)) -> mark#(X1) p10: mark#(isNatKind(X)) -> a__isNatKind#(X) p11: mark#(isNatIListKind(X)) -> a__isNatIListKind#(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__isNatList#(L) p17: a__isNatList#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p18: a__isNatList#(cons(V1,V2)) -> a__U51#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p19: a__U51#(tt(),V1,V2) -> a__isNat#(V1) p20: a__isNat#(s(V1)) -> a__isNatKind#(V1) p21: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p22: a__U21#(tt(),V1) -> a__isNat#(V1) p23: a__isNat#(length(V1)) -> a__isNatIListKind#(V1) p24: a__isNat#(length(V1)) -> a__U11#(a__isNatIListKind(V1),V1) p25: a__U51#(tt(),V1,V2) -> a__U52#(a__isNat(V1),V2) p26: a__U52#(tt(),V2) -> a__isNatList#(V2) p27: a__length#(cons(N,L)) -> a__and#(a__isNatList(L),isNatIListKind(L)) p28: a__length#(cons(N,L)) -> a__and#(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))) p29: a__length#(cons(N,L)) -> a__U61#(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) p30: a__U61#(tt(),L) -> mark#(L) p31: mark#(U61(X1,X2)) -> mark#(X1) p32: mark#(U61(X1,X2)) -> a__U61#(mark(X1),X2) p33: a__U61#(tt(),L) -> a__length#(mark(L)) p34: mark#(U53(X)) -> mark#(X) p35: mark#(U52(X1,X2)) -> mark#(X1) p36: mark#(U52(X1,X2)) -> a__U52#(mark(X1),X2) p37: mark#(U51(X1,X2,X3)) -> mark#(X1) p38: mark#(U51(X1,X2,X3)) -> a__U51#(mark(X1),X2,X3) p39: mark#(isNatIList(X)) -> a__isNatIList#(X) p40: a__isNatIList#(cons(V1,V2)) -> a__isNatKind#(V1) p41: a__isNatIList#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p42: a__isNatIList#(cons(V1,V2)) -> a__U41#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p43: a__U41#(tt(),V1,V2) -> a__isNat#(V1) p44: a__U41#(tt(),V1,V2) -> a__U42#(a__isNat(V1),V2) p45: a__U42#(tt(),V2) -> a__isNatIList#(V2) p46: a__isNatIList#(V) -> a__isNatIListKind#(V) p47: a__isNatIList#(V) -> a__U31#(a__isNatIListKind(V),V) p48: a__U31#(tt(),V) -> a__isNatList#(V) p49: mark#(U43(X)) -> mark#(X) p50: mark#(U42(X1,X2)) -> mark#(X1) p51: mark#(U42(X1,X2)) -> a__U42#(mark(X1),X2) p52: mark#(U41(X1,X2,X3)) -> mark#(X1) p53: mark#(U41(X1,X2,X3)) -> a__U41#(mark(X1),X2,X3) p54: mark#(U32(X)) -> mark#(X) p55: mark#(U31(X1,X2)) -> mark#(X1) p56: mark#(U31(X1,X2)) -> a__U31#(mark(X1),X2) p57: mark#(isNat(X)) -> a__isNat#(X) p58: mark#(U22(X)) -> mark#(X) p59: mark#(U21(X1,X2)) -> mark#(X1) p60: mark#(U21(X1,X2)) -> a__U21#(mark(X1),X2) p61: mark#(isNatList(X)) -> a__isNatList#(X) p62: mark#(U12(X)) -> mark#(X) p63: mark#(U11(X1,X2)) -> mark#(X1) p64: mark#(U11(X1,X2)) -> a__U11#(mark(X1),X2) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: a__U11#_A(x1,x2) = 12 tt_A = 48 a__isNatList#_A(x1) = 12 cons_A(x1,x2) = max{x1 + 66, x2 + 36} a__isNatKind#_A(x1) = 0 s_A(x1) = max{15, x1} length_A(x1) = max{87, x1 + 86} a__isNatIListKind#_A(x1) = 0 a__and#_A(x1,x2) = max{0, x2 - 14} a__isNatKind_A(x1) = 48 isNatIListKind_A(x1) = 12 mark#_A(x1) = max{0, x1 - 14} isNatKind_A(x1) = 12 and_A(x1,x2) = max{x1, x2 + 15} mark_A(x1) = x1 + 36 a__length#_A(x1) = max{40, x1 + 36} a__U51#_A(x1,x2,x3) = max{11, x1 - 36} a__and_A(x1,x2) = max{x1, x2 + 36} a__isNat#_A(x1) = 12 a__U21#_A(x1,x2) = max{12, x1 - 65} a__isNatIListKind_A(x1) = 48 a__U52#_A(x1,x2) = 12 a__isNat_A(x1) = x1 + 60 a__isNatList_A(x1) = max{48, x1 + 40} isNat_A(x1) = x1 + 26 a__U61#_A(x1,x2) = max{x1 - 5, x2 + 72} U61_A(x1,x2) = max{x1 + 59, x2 + 86} U53_A(x1) = max{2, x1 + 1} U52_A(x1,x2) = max{x1 + 46, x2 + 27} U51_A(x1,x2,x3) = max{x1 + 28, x2 + 70, x3 + 24} isNatIList_A(x1) = max{63, x1 + 48} a__isNatIList#_A(x1) = max{33, x1 - 2} a__U41#_A(x1,x2,x3) = max{x1 - 1, x2 + 55, x3 + 34} a__U42#_A(x1,x2) = max{x1 - 5, x2 + 34} a__U31#_A(x1,x2) = max{0, x1 - 36, x2 - 2} U43_A(x1) = max{2, x1 + 1} U42_A(x1,x2) = max{x1 + 45, x2 + 49} U41_A(x1,x2,x3) = max{x1 + 49, x2 + 69, x3 + 48} U32_A(x1) = max{2, x1 + 1} U31_A(x1,x2) = max{x1 + 14, x2 + 13} U22_A(x1) = max{1, x1} U21_A(x1,x2) = max{x1 + 12, x2 + 26} isNatList_A(x1) = max{41, x1 + 27} U12_A(x1) = max{1, x1} U11_A(x1,x2) = max{x1 + 46, x2 + 27} a__zeros_A = 160 |0|_A = 94 zeros_A = 124 a__U11_A(x1,x2) = max{x1 + 46, x2 + 48} a__U12_A(x1) = max{9, x1} a__U21_A(x1,x2) = max{x1 + 12, x2 + 60} a__U22_A(x1) = max{9, x1} a__U31_A(x1,x2) = max{x1 + 14, x2 + 49} a__U32_A(x1) = max{13, x1 + 1} a__U41_A(x1,x2,x3) = max{x1 + 49, x2 + 105, x3 + 64} a__U42_A(x1,x2) = max{x1 + 45, x2 + 64} a__U43_A(x1) = max{9, x1 + 1} a__isNatIList_A(x1) = max{63, x1 + 62} a__U51_A(x1,x2,x3) = max{x1 + 28, x2 + 106, x3 + 60} a__U52_A(x1,x2) = max{x1 + 46, x2 + 49} a__U53_A(x1) = max{37, x1 + 1} a__U61_A(x1,x2) = max{x1 + 59, x2 + 122} a__length_A(x1) = max{94, x1 + 86} nil_A = 7 The next rules are strictly ordered: p2, p9, p13, p14, p16, p17, p20, p23, p27, p28, p30, p31, p35, p36, p37, p38, p39, p40, p41, p43, p45, p46, p50, p52, p59, p61, p63, p64 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),V1) -> a__isNatList#(V1) p2: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p3: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p4: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p5: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p6: a__and#(tt(),X) -> mark#(X) p7: mark#(s(X)) -> mark#(X) p8: mark#(isNatKind(X)) -> a__isNatKind#(X) p9: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p10: mark#(and(X1,X2)) -> mark#(X1) p11: mark#(length(X)) -> a__length#(mark(X)) p12: a__isNatList#(cons(V1,V2)) -> a__U51#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p13: a__U51#(tt(),V1,V2) -> a__isNat#(V1) p14: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p15: a__U21#(tt(),V1) -> a__isNat#(V1) p16: a__isNat#(length(V1)) -> a__U11#(a__isNatIListKind(V1),V1) p17: a__U51#(tt(),V1,V2) -> a__U52#(a__isNat(V1),V2) p18: a__U52#(tt(),V2) -> a__isNatList#(V2) p19: a__length#(cons(N,L)) -> a__U61#(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) p20: mark#(U61(X1,X2)) -> a__U61#(mark(X1),X2) p21: a__U61#(tt(),L) -> a__length#(mark(L)) p22: mark#(U53(X)) -> mark#(X) p23: a__isNatIList#(cons(V1,V2)) -> a__U41#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p24: a__U41#(tt(),V1,V2) -> a__U42#(a__isNat(V1),V2) p25: a__isNatIList#(V) -> a__U31#(a__isNatIListKind(V),V) p26: a__U31#(tt(),V) -> a__isNatList#(V) p27: mark#(U43(X)) -> mark#(X) p28: mark#(U42(X1,X2)) -> a__U42#(mark(X1),X2) p29: mark#(U41(X1,X2,X3)) -> a__U41#(mark(X1),X2,X3) p30: mark#(U32(X)) -> mark#(X) p31: mark#(U31(X1,X2)) -> mark#(X1) p32: mark#(U31(X1,X2)) -> a__U31#(mark(X1),X2) p33: mark#(isNat(X)) -> a__isNat#(X) p34: mark#(U22(X)) -> mark#(X) p35: mark#(U21(X1,X2)) -> a__U21#(mark(X1),X2) p36: mark#(U12(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p2, p3, p4, p5, p6, p7, p8, p9, p10, p22, p27, p30, p31, p34, p36} {p1, p12, p13, p14, p15, p16, p17, p18} {p19, p21} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U12(X)) -> mark#(X) p2: mark#(U22(X)) -> mark#(X) p3: mark#(U31(X1,X2)) -> mark#(X1) p4: mark#(U32(X)) -> mark#(X) p5: mark#(U43(X)) -> mark#(X) p6: mark#(U53(X)) -> mark#(X) p7: mark#(and(X1,X2)) -> mark#(X1) p8: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p9: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p10: a__and#(tt(),X) -> mark#(X) p11: mark#(isNatKind(X)) -> a__isNatKind#(X) p12: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p13: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p14: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p15: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 7 U12_A(x1) = max{5, x1} U22_A(x1) = max{16, x1} U31_A(x1,x2) = max{45, x1} U32_A(x1) = max{16, x1} U43_A(x1) = max{17, x1} U53_A(x1) = max{4, x1} and_A(x1,x2) = max{40, x1, x2 + 4} isNatIListKind_A(x1) = 0 a__isNatIListKind#_A(x1) = 7 cons_A(x1,x2) = max{44, x1 + 6, x2 + 38} a__and#_A(x1,x2) = max{x1 - 35, x2 + 7} a__isNatKind_A(x1) = 42 tt_A = 36 isNatKind_A(x1) = 4 a__isNatKind#_A(x1) = 7 length_A(x1) = max{5, x1 - 33} s_A(x1) = max{7, x1} a__zeros_A = 44 |0|_A = 17 zeros_A = 6 a__U11_A(x1,x2) = 54 a__U12_A(x1) = max{43, x1} a__isNatList_A(x1) = 54 a__U21_A(x1,x2) = 54 a__U22_A(x1) = max{54, x1} a__isNat_A(x1) = 54 a__U31_A(x1,x2) = max{54, x1} a__U32_A(x1) = max{54, x1} a__U41_A(x1,x2,x3) = max{72, x3 + 55} a__U42_A(x1,x2) = max{x1 + 18, x2 + 55} a__U43_A(x1) = max{55, x1} a__isNatIList_A(x1) = max{54, x1 + 28} a__U51_A(x1,x2,x3) = max{54, x1 + 1} a__U52_A(x1,x2) = max{54, x1} a__U53_A(x1) = max{36, x1} a__U61_A(x1,x2) = max{43, x1 - 39, x2 + 5} a__length_A(x1) = max{43, x1 - 33} mark_A(x1) = max{42, x1 + 38} a__isNatIListKind_A(x1) = 42 a__and_A(x1,x2) = max{x1, x2 + 42} nil_A = 43 isNat_A(x1) = 19 U11_A(x1,x2) = 16 isNatList_A(x1) = 46 U21_A(x1,x2) = 54 U41_A(x1,x2,x3) = max{56, x3 + 17} U42_A(x1,x2) = max{54, x1 + 18, x2 + 17} isNatIList_A(x1) = max{29, x1 - 10} U51_A(x1,x2,x3) = max{53, x1 + 1} U52_A(x1,x2) = max{16, x1} U61_A(x1,x2) = max{x1 - 39, x2 + 5} The next rules are strictly ordered: p11 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U12(X)) -> mark#(X) p2: mark#(U22(X)) -> mark#(X) p3: mark#(U31(X1,X2)) -> mark#(X1) p4: mark#(U32(X)) -> mark#(X) p5: mark#(U43(X)) -> mark#(X) p6: mark#(U53(X)) -> mark#(X) p7: mark#(and(X1,X2)) -> mark#(X1) p8: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p9: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p10: a__and#(tt(),X) -> mark#(X) p11: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p12: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p13: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p14: mark#(s(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U12(X)) -> mark#(X) p2: mark#(s(X)) -> mark#(X) p3: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p4: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p5: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p6: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p7: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p8: a__and#(tt(),X) -> mark#(X) p9: mark#(and(X1,X2)) -> mark#(X1) p10: mark#(U53(X)) -> mark#(X) p11: mark#(U43(X)) -> mark#(X) p12: mark#(U32(X)) -> mark#(X) p13: mark#(U31(X1,X2)) -> mark#(X1) p14: mark#(U22(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 2 U12_A(x1) = max{9, x1} s_A(x1) = max{15, x1} isNatIListKind_A(x1) = 0 a__isNatIListKind#_A(x1) = 2 cons_A(x1,x2) = max{x1 + 4, x2 + 11} a__isNatKind#_A(x1) = 2 length_A(x1) = max{4, x1 - 6} a__and#_A(x1,x2) = max{x1 - 12, x2 + 2} a__isNatKind_A(x1) = 14 tt_A = 14 and_A(x1,x2) = max{x1, x2 + 14} U53_A(x1) = max{5, x1} U43_A(x1) = max{15, x1} U32_A(x1) = max{9, x1} U31_A(x1,x2) = max{x1 + 16, x2 + 19} U22_A(x1) = max{13, x1} a__zeros_A = 19 |0|_A = 15 zeros_A = 8 a__U11_A(x1,x2) = max{x1 + 6, x2 + 19} a__U12_A(x1) = max{20, x1} a__isNatList_A(x1) = max{20, x1 + 19} a__U21_A(x1,x2) = max{x1 + 12, x2 + 26} a__U22_A(x1) = max{24, x1} a__isNat_A(x1) = x1 + 26 a__U31_A(x1,x2) = max{x1 + 16, x2 + 19} a__U32_A(x1) = max{20, x1} a__U41_A(x1,x2,x3) = max{31, x1 + 20, x3 + 24} a__U42_A(x1,x2) = max{34, x2 + 24} a__U43_A(x1) = max{26, x1} a__isNatIList_A(x1) = max{34, x1 + 19} a__U51_A(x1,x2,x3) = max{23, x1 + 8, x2 + 22, x3 + 20} a__U52_A(x1,x2) = max{x1 - 4, x2 + 20} a__U53_A(x1) = max{16, x1} a__U61_A(x1,x2) = max{15, x1 - 40, x2 + 5} a__length_A(x1) = max{15, x1 - 6} mark_A(x1) = max{14, x1 + 11} a__isNatIListKind_A(x1) = 14 a__and_A(x1,x2) = max{x1, x2 + 14} nil_A = 15 isNat_A(x1) = max{24, x1 + 15} isNatKind_A(x1) = 2 U11_A(x1,x2) = max{x1 + 6, x2 + 19} isNatList_A(x1) = max{20, x1 + 19} U21_A(x1,x2) = max{x1 + 12, x2 + 15} U41_A(x1,x2,x3) = max{25, x1 + 20, x3 + 13} U42_A(x1,x2) = max{25, x2 + 13} isNatIList_A(x1) = max{23, x1 + 8} U51_A(x1,x2,x3) = max{x1 + 8, x2 + 11, x3 + 20} U52_A(x1,x2) = max{16, x1 - 4, x2 + 9} U61_A(x1,x2) = max{5, x1 - 40, x2 + 3} 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: mark#(U12(X)) -> mark#(X) p2: mark#(s(X)) -> mark#(X) p3: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p4: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p5: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p6: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p7: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p8: a__and#(tt(),X) -> mark#(X) p9: mark#(and(X1,X2)) -> mark#(X1) p10: mark#(U53(X)) -> mark#(X) p11: mark#(U43(X)) -> mark#(X) p12: mark#(U32(X)) -> mark#(X) p13: mark#(U22(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U12(X)) -> mark#(X) p2: mark#(U22(X)) -> mark#(X) p3: mark#(U32(X)) -> mark#(X) p4: mark#(U43(X)) -> mark#(X) p5: mark#(U53(X)) -> mark#(X) p6: mark#(and(X1,X2)) -> mark#(X1) p7: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p8: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p9: a__and#(tt(),X) -> mark#(X) p10: mark#(s(X)) -> mark#(X) p11: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p12: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p13: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = max{1, x1 - 3} U12_A(x1) = max{5, x1} U22_A(x1) = max{34, x1} U32_A(x1) = max{34, x1} U43_A(x1) = max{35, x1} U53_A(x1) = max{34, x1} and_A(x1,x2) = max{12, x1, x2 + 11} isNatIListKind_A(x1) = 14 a__isNatIListKind#_A(x1) = 11 cons_A(x1,x2) = max{x1 - 1, x2 + 41} a__and#_A(x1,x2) = max{0, x1 - 34, x2 - 3} a__isNatKind_A(x1) = 45 tt_A = 45 s_A(x1) = max{46, x1 + 5} a__isNatKind#_A(x1) = 11 length_A(x1) = max{0, x1 - 1} a__zeros_A = 45 |0|_A = 46 zeros_A = 4 a__U11_A(x1,x2) = max{4, x1 - 21, x2 - 7} a__U12_A(x1) = max{17, x1} a__isNatList_A(x1) = max{24, x1 - 7} a__U21_A(x1,x2) = max{43, x1, x2 - 6} a__U22_A(x1) = max{44, x1} a__isNat_A(x1) = max{45, x1 - 6} a__U31_A(x1,x2) = max{23, x1, x2 - 7} a__U32_A(x1) = max{34, x1} a__U41_A(x1,x2,x3) = max{55, x1, x2 - 6, x3 + 44} a__U42_A(x1,x2) = max{55, x1, x2 + 44} a__U43_A(x1) = max{46, x1} a__isNatIList_A(x1) = max{55, x1 + 13} a__U51_A(x1,x2,x3) = max{34, x2 - 8, x3 + 24} a__U52_A(x1,x2) = max{25, x1 - 11, x2 + 24} a__U53_A(x1) = max{34, x1} a__U61_A(x1,x2) = max{x1 + 4, x2 + 38} a__length_A(x1) = max{28, x1 - 1} mark_A(x1) = max{45, x1 + 11} a__isNatIListKind_A(x1) = 45 a__and_A(x1,x2) = max{24, x1, x2 + 11} nil_A = 52 isNat_A(x1) = max{17, x1 - 17} isNatKind_A(x1) = 6 U11_A(x1,x2) = max{0, x1 - 21, x2 - 7} isNatList_A(x1) = max{0, x1 - 18} U21_A(x1,x2) = max{x1, x2 - 17} U31_A(x1,x2) = max{x1, x2 - 18} U41_A(x1,x2,x3) = max{45, x1, x2 - 17, x3 + 33} U42_A(x1,x2) = max{x1, x2 + 44} isNatIList_A(x1) = max{44, x1 + 13} U51_A(x1,x2,x3) = max{x2 - 19, x3 + 13} U52_A(x1,x2) = max{x1 - 11, x2 + 13} U61_A(x1,x2) = max{x1 + 4, x2 + 38} 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: mark#(U12(X)) -> mark#(X) p2: mark#(U22(X)) -> mark#(X) p3: mark#(U32(X)) -> mark#(X) p4: mark#(U43(X)) -> mark#(X) p5: mark#(U53(X)) -> mark#(X) p6: mark#(and(X1,X2)) -> mark#(X1) p7: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p8: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p9: a__and#(tt(),X) -> mark#(X) p10: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p11: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p12: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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: mark#(U12(X)) -> mark#(X) p2: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p3: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p4: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p5: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p6: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(and(X1,X2)) -> mark#(X1) p9: mark#(U53(X)) -> mark#(X) p10: mark#(U43(X)) -> mark#(X) p11: mark#(U32(X)) -> mark#(X) p12: mark#(U22(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = max{1, x1 - 94} U12_A(x1) = max{57, x1 + 1} isNatIListKind_A(x1) = 0 a__isNatIListKind#_A(x1) = 1 cons_A(x1,x2) = max{x1 + 36, x2 + 92} a__isNatKind#_A(x1) = 1 s_A(x1) = max{96, x1 + 2} length_A(x1) = max{3, x1} a__and#_A(x1,x2) = max{x1 - 94, x2 + 1} a__isNatKind_A(x1) = 95 tt_A = 95 and_A(x1,x2) = max{40, x1, x2} U53_A(x1) = max{95, x1 + 39} U43_A(x1) = max{57, x1 + 1} U32_A(x1) = max{57, x1 + 1} U22_A(x1) = max{96, x1 + 2} a__zeros_A = 95 |0|_A = 55 zeros_A = 3 a__U11_A(x1,x2) = max{40, x1, x2 + 31} a__U12_A(x1) = max{95, x1 + 1} a__isNatList_A(x1) = max{57, x1 + 30} a__U21_A(x1,x2) = max{96, x1 + 2, x2 + 33} a__U22_A(x1) = max{97, x1 + 2} a__isNat_A(x1) = max{95, x1 + 31} a__U31_A(x1,x2) = max{96, x2 + 57} a__U32_A(x1) = max{96, x1 + 1} a__U41_A(x1,x2,x3) = max{x1, x3 + 97} a__U42_A(x1,x2) = x2 + 97 a__U43_A(x1) = max{94, x1 + 1} a__isNatIList_A(x1) = max{96, x1 + 58} a__U51_A(x1,x2,x3) = max{x1 - 29, x2 + 64, x3 + 122} a__U52_A(x1,x2) = max{x1, x2 + 122} a__U53_A(x1) = max{95, x1 + 39} a__U61_A(x1,x2) = max{x1 + 5, x2 + 61} a__length_A(x1) = max{3, x1} mark_A(x1) = max{95, x1 + 39} a__isNatIListKind_A(x1) = 95 a__and_A(x1,x2) = max{87, x1, x2 + 39} nil_A = 96 isNat_A(x1) = max{41, x1 - 8} isNatKind_A(x1) = 40 U11_A(x1,x2) = max{x1, x2 - 8} isNatList_A(x1) = max{31, x1 - 9} U21_A(x1,x2) = max{96, x1 + 2, x2 + 33} U31_A(x1,x2) = x2 + 57 U41_A(x1,x2,x3) = max{x1, x3 + 58} U42_A(x1,x2) = x2 + 58 isNatIList_A(x1) = x1 + 58 U51_A(x1,x2,x3) = max{x1 - 29, x2 + 25, x3 + 83} U52_A(x1,x2) = max{x1, x2 + 83} U61_A(x1,x2) = max{x1 + 5, x2 + 61} The next rules are strictly ordered: p12 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U12(X)) -> mark#(X) p2: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p3: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p4: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p5: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p6: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(and(X1,X2)) -> mark#(X1) p9: mark#(U53(X)) -> mark#(X) p10: mark#(U43(X)) -> mark#(X) p11: mark#(U32(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U12(X)) -> mark#(X) p2: mark#(U32(X)) -> mark#(X) p3: mark#(U43(X)) -> mark#(X) p4: mark#(U53(X)) -> mark#(X) p5: mark#(and(X1,X2)) -> mark#(X1) p6: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p7: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p8: a__and#(tt(),X) -> mark#(X) p9: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p10: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p11: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 17 U12_A(x1) = max{7, x1} U32_A(x1) = max{6, x1} U43_A(x1) = max{6, x1} U53_A(x1) = max{9, x1 + 3} and_A(x1,x2) = max{50, x1, x2 + 6} isNatIListKind_A(x1) = 0 a__isNatIListKind#_A(x1) = 17 cons_A(x1,x2) = max{x1 + 23, x2 + 44} a__and#_A(x1,x2) = max{x1 - 33, x2 + 17} a__isNatKind_A(x1) = 50 tt_A = 48 a__isNatKind#_A(x1) = 17 length_A(x1) = max{0, x1 - 25} s_A(x1) = max{19, x1 - 6} a__zeros_A = 74 |0|_A = 51 zeros_A = 30 a__U11_A(x1,x2) = max{53, x2 + 52} a__U12_A(x1) = max{51, x1} a__isNatList_A(x1) = max{52, x1 + 51} a__U21_A(x1,x2) = max{x1 + 22, x2 + 67} a__U22_A(x1) = max{67, x1 - 20} a__isNat_A(x1) = max{87, x1 + 78} a__U31_A(x1,x2) = x2 + 53 a__U32_A(x1) = max{44, x1} a__U41_A(x1,x2,x3) = max{x1 + 132, x2 + 131, x3 + 139} a__U42_A(x1,x2) = max{x1 + 53, x2 + 139} a__U43_A(x1) = max{44, x1} a__isNatIList_A(x1) = max{139, x1 + 138} a__U51_A(x1,x2,x3) = max{x1 + 24, x2 + 74, x3 + 74} a__U52_A(x1,x2) = max{x1 - 13, x2 + 55} a__U53_A(x1) = max{9, x1 + 3} a__U61_A(x1,x2) = max{x1 - 95, x2 + 19} a__length_A(x1) = max{0, x1 - 25} mark_A(x1) = max{50, x1 + 44} a__isNatIListKind_A(x1) = 50 a__and_A(x1,x2) = max{x1, x2 + 50} nil_A = 76 isNat_A(x1) = x1 + 43 isNatKind_A(x1) = 5 U11_A(x1,x2) = max{53, x2 + 8} isNatList_A(x1) = max{52, x1 + 8} U21_A(x1,x2) = max{66, x1 + 22, x2 + 23} U22_A(x1) = max{23, x1 - 20} U31_A(x1,x2) = max{53, x2 + 9} U41_A(x1,x2,x3) = max{x1 + 132, x2 + 87, x3 + 139} U42_A(x1,x2) = max{x1 + 53, x2 + 95} isNatIList_A(x1) = max{139, x1 + 138} U51_A(x1,x2,x3) = max{x1 + 24, x2 + 30, x3 + 30} U52_A(x1,x2) = max{55, x1 - 13, x2 + 11} U61_A(x1,x2) = max{6, x1 - 95, x2 - 25} 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: mark#(U12(X)) -> mark#(X) p2: mark#(U32(X)) -> mark#(X) p3: mark#(U43(X)) -> mark#(X) p4: mark#(and(X1,X2)) -> mark#(X1) p5: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p6: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p9: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p10: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U12(X)) -> mark#(X) p2: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p3: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p4: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p5: a__isNatKind#(length(V1)) -> a__isNatIListKind#(V1) p6: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(and(X1,X2)) -> mark#(X1) p9: mark#(U43(X)) -> mark#(X) p10: mark#(U32(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = max{26, x1 - 14} U12_A(x1) = max{4, x1} isNatIListKind_A(x1) = max{18, x1 + 15} a__isNatIListKind#_A(x1) = x1 + 1 cons_A(x1,x2) = max{44, x1 + 38, x2 + 43} a__isNatKind#_A(x1) = x1 + 39 s_A(x1) = max{4, x1} length_A(x1) = max{59, x1 + 54} a__and#_A(x1,x2) = max{x1 - 8, x2 + 26} a__isNatKind_A(x1) = x1 + 47 tt_A = 34 and_A(x1,x2) = max{40, x1 + 2, x2 + 39} U43_A(x1) = max{120, x1 + 41} U32_A(x1) = max{40, x1 + 1} a__zeros_A = 44 |0|_A = 0 zeros_A = 0 a__U11_A(x1,x2) = max{x1 + 72, x2 + 106} a__U12_A(x1) = max{44, x1} a__isNatList_A(x1) = max{106, x1 + 67} a__U21_A(x1,x2) = max{x1 + 12, x2 + 46} a__U22_A(x1) = max{46, x1 - 13} a__isNat_A(x1) = x1 + 59 a__U31_A(x1,x2) = max{78, x1 + 73, x2 + 77} a__U32_A(x1) = max{79, x1 + 1} a__U41_A(x1,x2,x3) = x3 + 160 a__U42_A(x1,x2) = max{160, x2 + 158} a__U43_A(x1) = max{159, x1 + 41} a__isNatIList_A(x1) = max{119, x1 + 117} a__U51_A(x1,x2,x3) = max{x1 + 48, x2 + 105, x3 + 107} a__U52_A(x1,x2) = max{x1 + 46, x2 + 107} a__U53_A(x1) = max{81, x1 + 1} a__U61_A(x1,x2) = max{98, x2 + 93} a__length_A(x1) = max{59, x1 + 54} mark_A(x1) = max{44, x1 + 39} a__isNatIListKind_A(x1) = max{46, x1 + 17} a__and_A(x1,x2) = max{55, x1 + 2, x2 + 39} nil_A = 0 isNat_A(x1) = max{46, x1 + 20} isNatKind_A(x1) = max{9, x1 + 8} U11_A(x1,x2) = max{x1 + 72, x2 + 106} isNatList_A(x1) = max{68, x1 + 28} U21_A(x1,x2) = max{x1 + 12, x2 + 46} U22_A(x1) = max{7, x1 - 13} U31_A(x1,x2) = max{78, x1 + 73, x2 + 38} U41_A(x1,x2,x3) = max{156, x3 + 121} U42_A(x1,x2) = max{158, x2 + 130} isNatIList_A(x1) = max{118, x1 + 117} U51_A(x1,x2,x3) = max{x1 + 48, x2 + 67, x3 + 68} U52_A(x1,x2) = max{x1 + 46, x2 + 68} U53_A(x1) = max{81, x1 + 1} U61_A(x1,x2) = max{59, x2 + 54} The next rules are strictly ordered: p5, p9 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U12(X)) -> mark#(X) p2: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p3: a__isNatIListKind#(cons(V1,V2)) -> a__isNatKind#(V1) p4: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p5: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p6: a__and#(tt(),X) -> mark#(X) p7: mark#(and(X1,X2)) -> mark#(X1) p8: mark#(U32(X)) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p5, p6, p7, p8} {p4} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U12(X)) -> mark#(X) p2: mark#(U32(X)) -> mark#(X) p3: mark#(and(X1,X2)) -> mark#(X1) p4: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p5: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p6: a__and#(tt(),X) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 15 U12_A(x1) = max{84, x1 + 1} U32_A(x1) = max{6, x1} and_A(x1,x2) = max{47, x1, x2 + 17} isNatIListKind_A(x1) = 8 a__isNatIListKind#_A(x1) = 23 cons_A(x1,x2) = max{x1 + 25, x2 + 45} a__and#_A(x1,x2) = max{22, x1 - 52, x2 + 15} a__isNatKind_A(x1) = 55 tt_A = 53 a__zeros_A = 50 |0|_A = 24 zeros_A = 3 a__U11_A(x1,x2) = max{130, x1 + 83, x2 + 84} a__U12_A(x1) = max{131, x1 + 1} a__isNatList_A(x1) = x1 + 83 a__U21_A(x1,x2) = max{x1 + 51, x2 + 79} a__U22_A(x1) = max{53, x1 - 59} a__isNat_A(x1) = max{138, x1 + 111} a__U31_A(x1,x2) = x2 + 87 a__U32_A(x1) = max{53, x1} a__U41_A(x1,x2,x3) = max{139, x2 + 112, x3 + 132} a__U42_A(x1,x2) = max{139, x1 + 1, x2 + 132} a__U43_A(x1) = max{47, x1} a__isNatIList_A(x1) = max{139, x1 + 87} a__U51_A(x1,x2,x3) = max{x1 + 53, x3 + 128} a__U52_A(x1,x2) = x2 + 128 a__U53_A(x1) = max{108, x1 + 45} a__U61_A(x1,x2) = max{50, x1 - 120, x2 + 18} s_A(x1) = max{50, x1 - 32} a__length_A(x1) = max{50, x1 - 27} mark_A(x1) = max{49, x1 + 47} length_A(x1) = max{18, x1 - 27} a__isNatIListKind_A(x1) = 55 a__and_A(x1,x2) = max{48, x1, x2 + 47} nil_A = 50 isNat_A(x1) = max{91, x1 + 71} isNatKind_A(x1) = 29 U11_A(x1,x2) = max{85, x1 + 83, x2 + 37} isNatList_A(x1) = x1 + 83 U21_A(x1,x2) = max{x1 + 51, x2 + 79} U22_A(x1) = max{6, x1 - 59} U31_A(x1,x2) = max{87, x2 + 40} U41_A(x1,x2,x3) = max{133, x2 + 65, x3 + 85} U42_A(x1,x2) = max{139, x1 + 1, x2 + 85} U43_A(x1) = max{2, x1} isNatIList_A(x1) = max{92, x1 + 40} U51_A(x1,x2,x3) = max{x1 + 53, x3 + 81} U52_A(x1,x2) = x2 + 110 U53_A(x1) = max{108, x1 + 45} U61_A(x1,x2) = max{19, x1 - 120, x2 + 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#(U32(X)) -> mark#(X) p2: mark#(and(X1,X2)) -> mark#(X1) p3: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p4: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p5: a__and#(tt(),X) -> mark#(X) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(U32(X)) -> mark#(X) p2: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p3: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p4: a__and#(tt(),X) -> mark#(X) p5: mark#(and(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 3 U32_A(x1) = max{13, x1 + 7} isNatIListKind_A(x1) = 0 a__isNatIListKind#_A(x1) = 3 cons_A(x1,x2) = max{0, x1 - 5, x2 - 11} a__and#_A(x1,x2) = max{x1 - 9, x2 + 3} a__isNatKind_A(x1) = 12 tt_A = 10 and_A(x1,x2) = max{x1, x2 + 6} a__zeros_A = 7 |0|_A = 1 zeros_A = 0 a__U11_A(x1,x2) = max{9, x1} a__U12_A(x1) = max{10, x1 - 2} a__isNatList_A(x1) = 12 a__U21_A(x1,x2) = max{9, x1} a__U22_A(x1) = max{10, x1 - 2} a__isNat_A(x1) = 12 a__U31_A(x1,x2) = max{x1 + 7, x2 + 19} a__U32_A(x1) = max{13, x1 + 7} a__U41_A(x1,x2,x3) = max{x1, x2 + 12, x3 + 5} a__U42_A(x1,x2) = max{11, x1, x2 + 5} a__U43_A(x1) = 10 a__isNatIList_A(x1) = x1 + 19 a__U51_A(x1,x2,x3) = max{12, x1} a__U52_A(x1,x2) = max{7, x1} a__U53_A(x1) = max{10, x1 - 2} a__U61_A(x1,x2) = 7 s_A(x1) = 1 a__length_A(x1) = max{8, x1} mark_A(x1) = max{12, x1 + 6} length_A(x1) = max{1, x1} a__isNatIListKind_A(x1) = 12 a__and_A(x1,x2) = max{x1, x2 + 12} nil_A = 0 isNat_A(x1) = 0 isNatKind_A(x1) = 0 U11_A(x1,x2) = x1 U12_A(x1) = max{0, x1 - 2} isNatList_A(x1) = 0 U21_A(x1,x2) = x1 U22_A(x1) = max{0, x1 - 2} U31_A(x1,x2) = max{x1 + 7, x2 + 13} U41_A(x1,x2,x3) = max{x1, x2 + 6, x3 + 4} U42_A(x1,x2) = max{x1, x2 + 5} U43_A(x1) = 3 isNatIList_A(x1) = x1 + 13 U51_A(x1,x2,x3) = x1 U52_A(x1,x2) = x1 U53_A(x1) = max{0, x1 - 2} U61_A(x1,x2) = 0 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#(isNatIListKind(X)) -> a__isNatIListKind#(X) p2: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p3: a__and#(tt(),X) -> mark#(X) p4: mark#(and(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p2: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p3: a__and#(tt(),X) -> mark#(X) p4: mark#(and(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = max{0, x1 - 38} isNatIListKind_A(x1) = x1 + 67 a__isNatIListKind#_A(x1) = x1 + 29 cons_A(x1,x2) = max{x1 + 14, x2 + 41} a__and#_A(x1,x2) = max{2, x1 - 36, x2 + 1} a__isNatKind_A(x1) = x1 + 79 tt_A = 42 and_A(x1,x2) = max{x1 + 9, x2 + 38} a__zeros_A = 41 |0|_A = 1 zeros_A = 0 a__U11_A(x1,x2) = max{41, x1} a__U12_A(x1) = max{42, x1 - 11} a__isNatList_A(x1) = 53 a__U21_A(x1,x2) = max{79, x2 + 54} a__U22_A(x1) = 42 a__isNat_A(x1) = x1 + 78 a__U31_A(x1,x2) = 43 a__U32_A(x1) = max{42, x1 - 10} a__U41_A(x1,x2,x3) = 43 a__U42_A(x1,x2) = 43 a__U43_A(x1) = max{41, x1} a__isNatIList_A(x1) = 43 a__U51_A(x1,x2,x3) = 43 a__U52_A(x1,x2) = 42 a__U53_A(x1) = max{42, x1 - 11} a__U61_A(x1,x2) = max{52, x2 + 25} s_A(x1) = max{26, x1} a__length_A(x1) = max{52, x1} mark_A(x1) = max{52, x1 + 25} length_A(x1) = max{1, x1} a__isNatIListKind_A(x1) = x1 + 78 a__and_A(x1,x2) = max{x1 + 9, x2 + 52} nil_A = 0 isNat_A(x1) = x1 + 53 isNatKind_A(x1) = x1 + 54 U11_A(x1,x2) = x1 U12_A(x1) = max{0, x1 - 11} isNatList_A(x1) = 28 U21_A(x1,x2) = x2 + 54 U22_A(x1) = 16 U31_A(x1,x2) = 0 U32_A(x1) = max{0, x1 - 10} U41_A(x1,x2,x3) = 17 U42_A(x1,x2) = 0 U43_A(x1) = max{1, x1} isNatIList_A(x1) = 0 U51_A(x1,x2,x3) = 0 U52_A(x1,x2) = 0 U53_A(x1) = max{0, x1 - 11} U61_A(x1,x2) = max{26, x2} The next rules are strictly ordered: p3 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(isNatIListKind(X)) -> a__isNatIListKind#(X) p2: a__isNatIListKind#(cons(V1,V2)) -> a__and#(a__isNatKind(V1),isNatIListKind(V2)) p3: mark#(and(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p3} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(and(X1,X2)) -> mark#(X1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The set of usable rules consists of (no rules) Take the reduction pair: max/plus interpretations on natural numbers: mark#_A(x1) = x1 and_A(x1,x2) = max{x1 + 1, x2 + 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__isNatKind#(s(V1)) -> a__isNatKind#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The set of usable rules consists of (no rules) Take the monotone reduction pair: max/plus interpretations on natural numbers: a__isNatKind#_A(x1) = x1 s_A(x1) = x1 + 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__U11#(tt(),V1) -> a__isNatList#(V1) p2: a__isNatList#(cons(V1,V2)) -> a__U51#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p3: a__U51#(tt(),V1,V2) -> a__U52#(a__isNat(V1),V2) p4: a__U52#(tt(),V2) -> a__isNatList#(V2) p5: a__U51#(tt(),V1,V2) -> a__isNat#(V1) p6: a__isNat#(length(V1)) -> a__U11#(a__isNatIListKind(V1),V1) p7: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p8: a__U21#(tt(),V1) -> a__isNat#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: a__U11#_A(x1,x2) = max{x1 - 41, x2 + 129} tt_A = 42 a__isNatList#_A(x1) = x1 + 129 cons_A(x1,x2) = max{x1 + 4, x2 + 53} a__U51#_A(x1,x2,x3) = max{x1 + 40, x2 + 99, x3 + 182} a__and_A(x1,x2) = max{x1 - 5, x2 + 53} a__isNatKind_A(x1) = 93 isNatIListKind_A(x1) = 35 a__U52#_A(x1,x2) = max{x1 + 5, x2 + 129} a__isNat_A(x1) = max{39, x1 + 30} a__isNat#_A(x1) = x1 + 99 length_A(x1) = x1 + 30 a__isNatIListKind_A(x1) = 88 s_A(x1) = max{39, x1} a__U21#_A(x1,x2) = max{x1 + 5, x2 + 99} a__zeros_A = 53 |0|_A = 39 zeros_A = 0 a__U12_A(x1) = max{42, x1 - 12} a__U22_A(x1) = 43 a__U31_A(x1,x2) = max{x1 - 47, x2 + 42} a__U32_A(x1) = 42 a__isNatList_A(x1) = max{41, x1 + 26} a__U41_A(x1,x2,x3) = max{53, x2 + 37} a__U42_A(x1,x2) = max{42, x1} a__U43_A(x1) = 42 a__isNatIList_A(x1) = x1 + 42 a__U51_A(x1,x2,x3) = max{79, x2 + 30, x3 + 25} a__U52_A(x1,x2) = max{39, x1, x2 + 25} a__U53_A(x1) = max{42, x1 - 1} a__U61_A(x1,x2) = x2 + 83 a__length_A(x1) = x1 + 30 mark_A(x1) = x1 + 53 nil_A = 39 and_A(x1,x2) = max{37, x1 - 5, x2} isNat_A(x1) = max{35, x1 - 14} isNatKind_A(x1) = 53 U12_A(x1) = max{0, x1 - 12} isNatList_A(x1) = max{41, x1 - 27} U22_A(x1) = 0 U31_A(x1,x2) = max{42, x1 - 47, x2 - 11} U32_A(x1) = 0 U41_A(x1,x2,x3) = max{0, x2 - 16} U42_A(x1,x2) = x1 U43_A(x1) = 3 isNatIList_A(x1) = x1 + 42 U51_A(x1,x2,x3) = max{79, x2 - 23, x3 - 28} U52_A(x1,x2) = max{x1, x2 - 28} U53_A(x1) = max{0, x1 - 1} U61_A(x1,x2) = x2 + 30 a__U11_A(x1,x2) = max{60, x2 + 42} a__U21_A(x1,x2) = max{56, x2 + 18} U11_A(x1,x2) = max{7, x2 - 11} U21_A(x1,x2) = max{19, x2 + 2} The next rules are strictly ordered: p3 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),V1) -> a__isNatList#(V1) p2: a__isNatList#(cons(V1,V2)) -> a__U51#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p3: a__U52#(tt(),V2) -> a__isNatList#(V2) p4: a__U51#(tt(),V1,V2) -> a__isNat#(V1) p5: a__isNat#(length(V1)) -> a__U11#(a__isNatIListKind(V1),V1) p6: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p7: a__U21#(tt(),V1) -> a__isNat#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p4, p5, p6, p7} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),V1) -> a__isNatList#(V1) p2: a__isNatList#(cons(V1,V2)) -> a__U51#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p3: a__U51#(tt(),V1,V2) -> a__isNat#(V1) p4: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p5: a__U21#(tt(),V1) -> a__isNat#(V1) p6: a__isNat#(length(V1)) -> a__U11#(a__isNatIListKind(V1),V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: a__U11#_A(x1,x2) = max{x1 - 34, x2 + 59} tt_A = 33 a__isNatList#_A(x1) = x1 + 59 cons_A(x1,x2) = max{x1 + 1, x2 + 63} a__U51#_A(x1,x2,x3) = max{x1 - 6, x2 + 60, x3 + 29} a__and_A(x1,x2) = max{x1 - 10, x2 + 63} a__isNatKind_A(x1) = 63 isNatIListKind_A(x1) = 0 a__isNat#_A(x1) = x1 + 60 s_A(x1) = max{52, x1} a__U21#_A(x1,x2) = max{x1 - 4, x2 + 60} length_A(x1) = max{10, x1 + 9} a__isNatIListKind_A(x1) = 63 a__zeros_A = 63 |0|_A = 53 zeros_A = 0 a__U11_A(x1,x2) = x1 a__U12_A(x1) = 33 a__isNatList_A(x1) = x1 + 62 a__U21_A(x1,x2) = max{31, x1} a__U22_A(x1) = max{33, x1 - 31} a__isNat_A(x1) = 63 a__U31_A(x1,x2) = max{25, x1} a__U32_A(x1) = 33 a__U41_A(x1,x2,x3) = max{63, x1} a__U42_A(x1,x2) = max{32, x1} a__U43_A(x1) = 33 a__isNatIList_A(x1) = max{63, x1 - 76} a__U51_A(x1,x2,x3) = max{x1, x2 - 23, x3 + 63} a__U52_A(x1,x2) = max{23, x1, x2 - 1} a__U53_A(x1) = 33 a__U61_A(x1,x2) = max{x1, x2 + 72} a__length_A(x1) = max{71, x1 + 9} mark_A(x1) = x1 + 63 nil_A = 25 and_A(x1,x2) = max{8, x1 - 10, x2} isNat_A(x1) = 19 isNatKind_A(x1) = 0 U11_A(x1,x2) = x1 U12_A(x1) = 0 isNatList_A(x1) = max{33, x1 - 1} U21_A(x1,x2) = x1 U22_A(x1) = max{0, x1 - 31} U31_A(x1,x2) = x1 U32_A(x1) = 0 U41_A(x1,x2,x3) = x1 U42_A(x1,x2) = x1 U43_A(x1) = 0 isNatIList_A(x1) = max{0, x1 - 139} U51_A(x1,x2,x3) = max{x1, x2 - 23, x3} U52_A(x1,x2) = max{x1, x2 - 40} U53_A(x1) = 0 U61_A(x1,x2) = max{x1, x2 + 9} 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__U11#(tt(),V1) -> a__isNatList#(V1) p2: a__isNatList#(cons(V1,V2)) -> a__U51#(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) p3: a__U51#(tt(),V1,V2) -> a__isNat#(V1) p4: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p5: a__U21#(tt(),V1) -> a__isNat#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p4, p5} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p2: a__U21#(tt(),V1) -> a__isNat#(V1) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: a__isNat#_A(x1) = max{0, x1 - 6} s_A(x1) = max{24, x1 + 7} a__U21#_A(x1,x2) = max{x1 - 51, x2} a__isNatKind_A(x1) = 52 tt_A = 52 a__zeros_A = 52 cons_A(x1,x2) = x2 + 52 |0|_A = 53 zeros_A = 0 a__U11_A(x1,x2) = max{36, x1} a__U12_A(x1) = 52 a__isNatList_A(x1) = max{35, x1 + 19} a__U21_A(x1,x2) = max{35, x1} a__U22_A(x1) = max{52, x1 - 16} a__isNat_A(x1) = 52 a__U31_A(x1,x2) = max{53, x1 - 1, x2 + 37} a__U32_A(x1) = max{53, x1 + 18} a__U41_A(x1,x2,x3) = 102 a__U42_A(x1,x2) = 102 a__U43_A(x1) = 102 a__isNatIList_A(x1) = max{53, x1 + 51} a__U51_A(x1,x2,x3) = max{x1 + 18, x3 + 53} a__U52_A(x1,x2) = max{x1, x2 + 53} a__U53_A(x1) = 53 a__U61_A(x1,x2) = max{x1 + 13, x2 + 54} a__length_A(x1) = max{47, x1 + 6} mark_A(x1) = max{52, x1 + 35} length_A(x1) = max{23, x1 + 6} a__isNatIListKind_A(x1) = 52 a__and_A(x1,x2) = max{45, x1, x2 + 35} isNatIListKind_A(x1) = 10 nil_A = 53 and_A(x1,x2) = max{x1, x2} isNat_A(x1) = 10 isNatKind_A(x1) = 0 U11_A(x1,x2) = max{17, x1} U12_A(x1) = 52 isNatList_A(x1) = max{20, x1 + 19} U21_A(x1,x2) = max{17, x1} U22_A(x1) = max{17, x1 - 16} U31_A(x1,x2) = max{53, x1 - 1, x2 + 37} U32_A(x1) = max{35, x1 + 18} U41_A(x1,x2,x3) = 102 U42_A(x1,x2) = 102 U43_A(x1) = 102 isNatIList_A(x1) = max{52, x1 + 51} U51_A(x1,x2,x3) = max{53, x1 + 18, x3 + 35} U52_A(x1,x2) = max{x1, x2 + 18} U53_A(x1) = 53 U61_A(x1,x2) = max{x1 + 13, x2 + 54} The next rules are strictly ordered: p1, p2 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__length#(cons(N,L)) -> a__U61#(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) p2: a__U61#(tt(),L) -> a__length#(mark(L)) and R consists of: r1: a__zeros() -> cons(|0|(),zeros()) r2: a__U11(tt(),V1) -> a__U12(a__isNatList(V1)) r3: a__U12(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),V) -> a__U32(a__isNatList(V)) r7: a__U32(tt()) -> tt() r8: a__U41(tt(),V1,V2) -> a__U42(a__isNat(V1),V2) r9: a__U42(tt(),V2) -> a__U43(a__isNatIList(V2)) r10: a__U43(tt()) -> tt() r11: a__U51(tt(),V1,V2) -> a__U52(a__isNat(V1),V2) r12: a__U52(tt(),V2) -> a__U53(a__isNatList(V2)) r13: a__U53(tt()) -> tt() r14: a__U61(tt(),L) -> s(a__length(mark(L))) r15: a__and(tt(),X) -> mark(X) r16: a__isNat(|0|()) -> tt() r17: a__isNat(length(V1)) -> a__U11(a__isNatIListKind(V1),V1) r18: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r19: a__isNatIList(V) -> a__U31(a__isNatIListKind(V),V) r20: a__isNatIList(zeros()) -> tt() r21: a__isNatIList(cons(V1,V2)) -> a__U41(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r22: a__isNatIListKind(nil()) -> tt() r23: a__isNatIListKind(zeros()) -> tt() r24: a__isNatIListKind(cons(V1,V2)) -> a__and(a__isNatKind(V1),isNatIListKind(V2)) r25: a__isNatKind(|0|()) -> tt() r26: a__isNatKind(length(V1)) -> a__isNatIListKind(V1) r27: a__isNatKind(s(V1)) -> a__isNatKind(V1) r28: a__isNatList(nil()) -> tt() r29: a__isNatList(cons(V1,V2)) -> a__U51(a__and(a__isNatKind(V1),isNatIListKind(V2)),V1,V2) r30: a__length(nil()) -> |0|() r31: a__length(cons(N,L)) -> a__U61(a__and(a__and(a__isNatList(L),isNatIListKind(L)),and(isNat(N),isNatKind(N))),L) r32: mark(zeros()) -> a__zeros() r33: mark(U11(X1,X2)) -> a__U11(mark(X1),X2) r34: mark(U12(X)) -> a__U12(mark(X)) r35: mark(isNatList(X)) -> a__isNatList(X) r36: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r37: mark(U22(X)) -> a__U22(mark(X)) r38: mark(isNat(X)) -> a__isNat(X) r39: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r40: mark(U32(X)) -> a__U32(mark(X)) r41: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r42: mark(U42(X1,X2)) -> a__U42(mark(X1),X2) r43: mark(U43(X)) -> a__U43(mark(X)) r44: mark(isNatIList(X)) -> a__isNatIList(X) r45: mark(U51(X1,X2,X3)) -> a__U51(mark(X1),X2,X3) r46: mark(U52(X1,X2)) -> a__U52(mark(X1),X2) r47: mark(U53(X)) -> a__U53(mark(X)) r48: mark(U61(X1,X2)) -> a__U61(mark(X1),X2) r49: mark(length(X)) -> a__length(mark(X)) r50: mark(and(X1,X2)) -> a__and(mark(X1),X2) r51: mark(isNatIListKind(X)) -> a__isNatIListKind(X) r52: mark(isNatKind(X)) -> a__isNatKind(X) r53: mark(cons(X1,X2)) -> cons(mark(X1),X2) r54: mark(|0|()) -> |0|() r55: mark(tt()) -> tt() r56: mark(s(X)) -> s(mark(X)) r57: mark(nil()) -> nil() r58: a__zeros() -> zeros() r59: a__U11(X1,X2) -> U11(X1,X2) r60: a__U12(X) -> U12(X) r61: a__isNatList(X) -> isNatList(X) r62: a__U21(X1,X2) -> U21(X1,X2) r63: a__U22(X) -> U22(X) r64: a__isNat(X) -> isNat(X) r65: a__U31(X1,X2) -> U31(X1,X2) r66: a__U32(X) -> U32(X) r67: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r68: a__U42(X1,X2) -> U42(X1,X2) r69: a__U43(X) -> U43(X) r70: a__isNatIList(X) -> isNatIList(X) r71: a__U51(X1,X2,X3) -> U51(X1,X2,X3) r72: a__U52(X1,X2) -> U52(X1,X2) r73: a__U53(X) -> U53(X) r74: a__U61(X1,X2) -> U61(X1,X2) r75: a__length(X) -> length(X) r76: a__and(X1,X2) -> and(X1,X2) r77: a__isNatIListKind(X) -> isNatIListKind(X) r78: a__isNatKind(X) -> isNatKind(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, 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, r77, r78 Take the reduction pair: max/plus interpretations on natural numbers: a__length#_A(x1) = max{0, x1 - 20} cons_A(x1,x2) = max{x1 + 43, x2 + 109} a__U61#_A(x1,x2) = max{x1 - 19, x2 + 59} a__and_A(x1,x2) = max{x1, x2 + 78} a__isNatList_A(x1) = max{18, x1} isNatIListKind_A(x1) = 0 and_A(x1,x2) = max{21, x1, x2} isNat_A(x1) = 0 isNatKind_A(x1) = 0 tt_A = 109 mark_A(x1) = max{109, x1 + 78} a__zeros_A = 109 |0|_A = 0 zeros_A = 0 a__U11_A(x1,x2) = max{108, x1} a__U12_A(x1) = 109 a__U21_A(x1,x2) = 109 a__U22_A(x1) = 109 a__isNat_A(x1) = 109 a__U31_A(x1,x2) = max{109, x2} a__U32_A(x1) = max{109, x1 - 1} a__U41_A(x1,x2,x3) = max{230, x1 + 199, x2 + 152} a__U42_A(x1,x2) = max{107, x1} a__U43_A(x1) = 109 a__isNatIList_A(x1) = max{308, x1 + 109} a__U51_A(x1,x2,x3) = x3 + 109 a__U52_A(x1,x2) = max{x1, x2 - 1} a__U53_A(x1) = max{109, x1 - 1} a__U61_A(x1,x2) = max{110, x2 + 62} s_A(x1) = 63 a__length_A(x1) = max{48, x1 + 8} length_A(x1) = max{48, x1 + 8} a__isNatIListKind_A(x1) = 109 a__isNatKind_A(x1) = 109 nil_A = 110 U11_A(x1,x2) = x1 U12_A(x1) = 0 U21_A(x1,x2) = 0 U22_A(x1) = 0 U31_A(x1,x2) = max{0, x2 - 63} U32_A(x1) = max{0, x1 - 1} U41_A(x1,x2,x3) = max{230, x1 + 199, x2 + 152} U42_A(x1,x2) = x1 U43_A(x1) = 0 isNatIList_A(x1) = max{230, x1 + 109} U51_A(x1,x2,x3) = max{43, x3 + 31} U52_A(x1,x2) = max{x1, x2 - 79} U53_A(x1) = max{0, x1 - 1} U61_A(x1,x2) = x2 + 62 isNatList_A(x1) = x1 The next rules are strictly ordered: p1, p2 We remove them from the problem. Then no dependency pair remains.