YES We show the termination of the TRS R: a__U11(tt(),V1,V2) -> a__U12(a__isNat(V1),V2) a__U12(tt(),V2) -> a__U13(a__isNat(V2)) a__U13(tt()) -> tt() a__U21(tt(),V1) -> a__U22(a__isNat(V1)) a__U22(tt()) -> tt() a__U31(tt(),N) -> mark(N) a__U41(tt(),M,N) -> s(a__plus(mark(N),mark(M))) a__and(tt(),X) -> mark(X) a__isNat(|0|()) -> tt() a__isNat(plus(V1,V2)) -> a__U11(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) a__isNatKind(|0|()) -> tt() a__isNatKind(plus(V1,V2)) -> a__and(a__isNatKind(V1),isNatKind(V2)) a__isNatKind(s(V1)) -> a__isNatKind(V1) a__plus(N,|0|()) -> a__U31(a__and(a__isNat(N),isNatKind(N)),N) a__plus(N,s(M)) -> a__U41(a__and(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) mark(U11(X1,X2,X3)) -> a__U11(mark(X1),X2,X3) mark(U12(X1,X2)) -> a__U12(mark(X1),X2) mark(isNat(X)) -> a__isNat(X) mark(U13(X)) -> a__U13(mark(X)) mark(U21(X1,X2)) -> a__U21(mark(X1),X2) mark(U22(X)) -> a__U22(mark(X)) mark(U31(X1,X2)) -> a__U31(mark(X1),X2) mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNatKind(X)) -> a__isNatKind(X) mark(tt()) -> tt() mark(s(X)) -> s(mark(X)) mark(|0|()) -> |0|() a__U11(X1,X2,X3) -> U11(X1,X2,X3) a__U12(X1,X2) -> U12(X1,X2) a__isNat(X) -> isNat(X) a__U13(X) -> U13(X) a__U21(X1,X2) -> U21(X1,X2) a__U22(X) -> U22(X) a__U31(X1,X2) -> U31(X1,X2) a__U41(X1,X2,X3) -> U41(X1,X2,X3) a__plus(X1,X2) -> plus(X1,X2) a__and(X1,X2) -> and(X1,X2) a__isNatKind(X) -> isNatKind(X) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),V1,V2) -> a__U12#(a__isNat(V1),V2) p2: a__U11#(tt(),V1,V2) -> a__isNat#(V1) p3: a__U12#(tt(),V2) -> a__U13#(a__isNat(V2)) p4: a__U12#(tt(),V2) -> a__isNat#(V2) p5: a__U21#(tt(),V1) -> a__U22#(a__isNat(V1)) p6: a__U21#(tt(),V1) -> a__isNat#(V1) p7: a__U31#(tt(),N) -> mark#(N) p8: a__U41#(tt(),M,N) -> a__plus#(mark(N),mark(M)) p9: a__U41#(tt(),M,N) -> mark#(N) p10: a__U41#(tt(),M,N) -> mark#(M) p11: a__and#(tt(),X) -> mark#(X) p12: a__isNat#(plus(V1,V2)) -> a__U11#(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) p13: a__isNat#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p14: a__isNat#(plus(V1,V2)) -> a__isNatKind#(V1) p15: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p16: a__isNat#(s(V1)) -> a__isNatKind#(V1) p17: a__isNatKind#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p18: a__isNatKind#(plus(V1,V2)) -> a__isNatKind#(V1) p19: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p20: a__plus#(N,|0|()) -> a__U31#(a__and(a__isNat(N),isNatKind(N)),N) p21: a__plus#(N,|0|()) -> a__and#(a__isNat(N),isNatKind(N)) p22: a__plus#(N,|0|()) -> a__isNat#(N) p23: a__plus#(N,s(M)) -> a__U41#(a__and(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) p24: a__plus#(N,s(M)) -> a__and#(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))) p25: a__plus#(N,s(M)) -> a__and#(a__isNat(M),isNatKind(M)) p26: a__plus#(N,s(M)) -> a__isNat#(M) p27: mark#(U11(X1,X2,X3)) -> a__U11#(mark(X1),X2,X3) p28: mark#(U11(X1,X2,X3)) -> mark#(X1) p29: mark#(U12(X1,X2)) -> a__U12#(mark(X1),X2) p30: mark#(U12(X1,X2)) -> mark#(X1) p31: mark#(isNat(X)) -> a__isNat#(X) p32: mark#(U13(X)) -> a__U13#(mark(X)) p33: mark#(U13(X)) -> mark#(X) p34: mark#(U21(X1,X2)) -> a__U21#(mark(X1),X2) p35: mark#(U21(X1,X2)) -> mark#(X1) p36: mark#(U22(X)) -> a__U22#(mark(X)) p37: mark#(U22(X)) -> mark#(X) p38: mark#(U31(X1,X2)) -> a__U31#(mark(X1),X2) p39: mark#(U31(X1,X2)) -> mark#(X1) p40: mark#(U41(X1,X2,X3)) -> a__U41#(mark(X1),X2,X3) p41: mark#(U41(X1,X2,X3)) -> mark#(X1) p42: mark#(plus(X1,X2)) -> a__plus#(mark(X1),mark(X2)) p43: mark#(plus(X1,X2)) -> mark#(X1) p44: mark#(plus(X1,X2)) -> mark#(X2) p45: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p46: mark#(and(X1,X2)) -> mark#(X1) p47: mark#(isNatKind(X)) -> a__isNatKind#(X) p48: mark#(s(X)) -> mark#(X) and R consists of: r1: a__U11(tt(),V1,V2) -> a__U12(a__isNat(V1),V2) r2: a__U12(tt(),V2) -> a__U13(a__isNat(V2)) r3: a__U13(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),N) -> mark(N) r7: a__U41(tt(),M,N) -> s(a__plus(mark(N),mark(M))) r8: a__and(tt(),X) -> mark(X) r9: a__isNat(|0|()) -> tt() r10: a__isNat(plus(V1,V2)) -> a__U11(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) r11: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r12: a__isNatKind(|0|()) -> tt() r13: a__isNatKind(plus(V1,V2)) -> a__and(a__isNatKind(V1),isNatKind(V2)) r14: a__isNatKind(s(V1)) -> a__isNatKind(V1) r15: a__plus(N,|0|()) -> a__U31(a__and(a__isNat(N),isNatKind(N)),N) r16: a__plus(N,s(M)) -> a__U41(a__and(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) r17: mark(U11(X1,X2,X3)) -> a__U11(mark(X1),X2,X3) r18: mark(U12(X1,X2)) -> a__U12(mark(X1),X2) r19: mark(isNat(X)) -> a__isNat(X) r20: mark(U13(X)) -> a__U13(mark(X)) r21: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r22: mark(U22(X)) -> a__U22(mark(X)) r23: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r24: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r25: mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) r26: mark(and(X1,X2)) -> a__and(mark(X1),X2) r27: mark(isNatKind(X)) -> a__isNatKind(X) r28: mark(tt()) -> tt() r29: mark(s(X)) -> s(mark(X)) r30: mark(|0|()) -> |0|() r31: a__U11(X1,X2,X3) -> U11(X1,X2,X3) r32: a__U12(X1,X2) -> U12(X1,X2) r33: a__isNat(X) -> isNat(X) r34: a__U13(X) -> U13(X) r35: a__U21(X1,X2) -> U21(X1,X2) r36: a__U22(X) -> U22(X) r37: a__U31(X1,X2) -> U31(X1,X2) r38: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r39: a__plus(X1,X2) -> plus(X1,X2) r40: a__and(X1,X2) -> and(X1,X2) r41: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p4, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p33, p34, p35, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),V1,V2) -> a__U12#(a__isNat(V1),V2) p2: a__U12#(tt(),V2) -> a__isNat#(V2) p3: a__isNat#(s(V1)) -> a__isNatKind#(V1) p4: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p5: a__isNatKind#(plus(V1,V2)) -> a__isNatKind#(V1) p6: a__isNatKind#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(s(X)) -> mark#(X) p9: mark#(isNatKind(X)) -> a__isNatKind#(X) p10: mark#(and(X1,X2)) -> mark#(X1) p11: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p12: mark#(plus(X1,X2)) -> mark#(X2) p13: mark#(plus(X1,X2)) -> mark#(X1) p14: mark#(plus(X1,X2)) -> a__plus#(mark(X1),mark(X2)) p15: a__plus#(N,s(M)) -> a__isNat#(M) p16: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p17: a__U21#(tt(),V1) -> a__isNat#(V1) p18: a__isNat#(plus(V1,V2)) -> a__isNatKind#(V1) p19: a__isNat#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p20: a__isNat#(plus(V1,V2)) -> a__U11#(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) p21: a__U11#(tt(),V1,V2) -> a__isNat#(V1) p22: a__plus#(N,s(M)) -> a__and#(a__isNat(M),isNatKind(M)) p23: a__plus#(N,s(M)) -> a__and#(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))) p24: a__plus#(N,s(M)) -> a__U41#(a__and(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) p25: a__U41#(tt(),M,N) -> mark#(M) p26: mark#(U41(X1,X2,X3)) -> mark#(X1) p27: mark#(U41(X1,X2,X3)) -> a__U41#(mark(X1),X2,X3) p28: a__U41#(tt(),M,N) -> mark#(N) p29: mark#(U31(X1,X2)) -> mark#(X1) p30: mark#(U31(X1,X2)) -> a__U31#(mark(X1),X2) p31: a__U31#(tt(),N) -> mark#(N) p32: mark#(U22(X)) -> mark#(X) p33: mark#(U21(X1,X2)) -> mark#(X1) p34: mark#(U21(X1,X2)) -> a__U21#(mark(X1),X2) p35: mark#(U13(X)) -> mark#(X) p36: mark#(isNat(X)) -> a__isNat#(X) p37: mark#(U12(X1,X2)) -> mark#(X1) p38: mark#(U12(X1,X2)) -> a__U12#(mark(X1),X2) p39: mark#(U11(X1,X2,X3)) -> mark#(X1) p40: mark#(U11(X1,X2,X3)) -> a__U11#(mark(X1),X2,X3) p41: a__U41#(tt(),M,N) -> a__plus#(mark(N),mark(M)) p42: a__plus#(N,|0|()) -> a__isNat#(N) p43: a__plus#(N,|0|()) -> a__and#(a__isNat(N),isNatKind(N)) p44: a__plus#(N,|0|()) -> a__U31#(a__and(a__isNat(N),isNatKind(N)),N) and R consists of: r1: a__U11(tt(),V1,V2) -> a__U12(a__isNat(V1),V2) r2: a__U12(tt(),V2) -> a__U13(a__isNat(V2)) r3: a__U13(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),N) -> mark(N) r7: a__U41(tt(),M,N) -> s(a__plus(mark(N),mark(M))) r8: a__and(tt(),X) -> mark(X) r9: a__isNat(|0|()) -> tt() r10: a__isNat(plus(V1,V2)) -> a__U11(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) r11: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r12: a__isNatKind(|0|()) -> tt() r13: a__isNatKind(plus(V1,V2)) -> a__and(a__isNatKind(V1),isNatKind(V2)) r14: a__isNatKind(s(V1)) -> a__isNatKind(V1) r15: a__plus(N,|0|()) -> a__U31(a__and(a__isNat(N),isNatKind(N)),N) r16: a__plus(N,s(M)) -> a__U41(a__and(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) r17: mark(U11(X1,X2,X3)) -> a__U11(mark(X1),X2,X3) r18: mark(U12(X1,X2)) -> a__U12(mark(X1),X2) r19: mark(isNat(X)) -> a__isNat(X) r20: mark(U13(X)) -> a__U13(mark(X)) r21: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r22: mark(U22(X)) -> a__U22(mark(X)) r23: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r24: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r25: mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) r26: mark(and(X1,X2)) -> a__and(mark(X1),X2) r27: mark(isNatKind(X)) -> a__isNatKind(X) r28: mark(tt()) -> tt() r29: mark(s(X)) -> s(mark(X)) r30: mark(|0|()) -> |0|() r31: a__U11(X1,X2,X3) -> U11(X1,X2,X3) r32: a__U12(X1,X2) -> U12(X1,X2) r33: a__isNat(X) -> isNat(X) r34: a__U13(X) -> U13(X) r35: a__U21(X1,X2) -> U21(X1,X2) r36: a__U22(X) -> U22(X) r37: a__U31(X1,X2) -> U31(X1,X2) r38: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r39: a__plus(X1,X2) -> plus(X1,X2) r40: a__and(X1,X2) -> and(X1,X2) r41: 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 Take the reduction pair: lexicographic combination of reduction pairs: 1. matrix interpretations: carrier: N^1 order: standard order interpretations: a__U11#_A(x1,x2,x3) = 0 tt_A() = 0 a__U12#_A(x1,x2) = 0 a__isNat_A(x1) = 0 a__isNat#_A(x1) = 0 s_A(x1) = x1 + 1 a__isNatKind#_A(x1) = 0 plus_A(x1,x2) = x1 + x2 + 1 a__and#_A(x1,x2) = x2 a__isNatKind_A(x1) = 0 isNatKind_A(x1) = 0 mark#_A(x1) = x1 and_A(x1,x2) = x1 + x2 mark_A(x1) = x1 a__plus#_A(x1,x2) = x1 + x2 + 1 a__U21#_A(x1,x2) = 0 a__and_A(x1,x2) = x1 + x2 isNat_A(x1) = 0 a__U41#_A(x1,x2,x3) = x2 + x3 + 2 U41_A(x1,x2,x3) = x1 + x2 + x3 + 2 U31_A(x1,x2) = x1 + x2 + 2 a__U31#_A(x1,x2) = x2 + 2 U22_A(x1) = x1 U21_A(x1,x2) = x1 U13_A(x1) = x1 U12_A(x1,x2) = x1 U11_A(x1,x2,x3) = x1 |0|_A() = 1 a__U11_A(x1,x2,x3) = x1 a__U12_A(x1,x2) = x1 a__U13_A(x1) = x1 a__U21_A(x1,x2) = x1 a__U22_A(x1) = x1 a__U31_A(x1,x2) = x1 + x2 + 2 a__U41_A(x1,x2,x3) = x1 + x2 + x3 + 2 a__plus_A(x1,x2) = x1 + x2 + 1 2. matrix interpretations: carrier: N^1 order: standard order interpretations: a__U11#_A(x1,x2,x3) = 1 tt_A() = 2 a__U12#_A(x1,x2) = 1 a__isNat_A(x1) = 5 a__isNat#_A(x1) = 1 s_A(x1) = 1 a__isNatKind#_A(x1) = 1 plus_A(x1,x2) = 3 a__and#_A(x1,x2) = 1 a__isNatKind_A(x1) = 3 isNatKind_A(x1) = 1 mark#_A(x1) = 1 and_A(x1,x2) = x2 + 1 mark_A(x1) = x1 + 2 a__plus#_A(x1,x2) = 1 a__U21#_A(x1,x2) = 1 a__and_A(x1,x2) = x2 + 2 isNat_A(x1) = 4 a__U41#_A(x1,x2,x3) = 0 U41_A(x1,x2,x3) = 1 U31_A(x1,x2) = 2 a__U31#_A(x1,x2) = 1 U22_A(x1) = 2 U21_A(x1,x2) = 3 U13_A(x1) = 1 U12_A(x1,x2) = 2 U11_A(x1,x2,x3) = 3 |0|_A() = 1 a__U11_A(x1,x2,x3) = 4 a__U12_A(x1,x2) = 3 a__U13_A(x1) = 2 a__U21_A(x1,x2) = 4 a__U22_A(x1) = 3 a__U31_A(x1,x2) = 3 a__U41_A(x1,x2,x3) = 2 a__plus_A(x1,x2) = 4 The next rules are strictly ordered: p8, p12, p13, p15, p22, p23, p24, p25, p26, p27, p28, p29, p31, p41, p42, p43 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),V1,V2) -> a__U12#(a__isNat(V1),V2) p2: a__U12#(tt(),V2) -> a__isNat#(V2) p3: a__isNat#(s(V1)) -> a__isNatKind#(V1) p4: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p5: a__isNatKind#(plus(V1,V2)) -> a__isNatKind#(V1) p6: a__isNatKind#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p7: a__and#(tt(),X) -> mark#(X) p8: mark#(isNatKind(X)) -> a__isNatKind#(X) p9: mark#(and(X1,X2)) -> mark#(X1) p10: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p11: mark#(plus(X1,X2)) -> a__plus#(mark(X1),mark(X2)) p12: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p13: a__U21#(tt(),V1) -> a__isNat#(V1) p14: a__isNat#(plus(V1,V2)) -> a__isNatKind#(V1) p15: a__isNat#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p16: a__isNat#(plus(V1,V2)) -> a__U11#(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) p17: a__U11#(tt(),V1,V2) -> a__isNat#(V1) p18: mark#(U31(X1,X2)) -> a__U31#(mark(X1),X2) p19: mark#(U22(X)) -> mark#(X) p20: mark#(U21(X1,X2)) -> mark#(X1) p21: mark#(U21(X1,X2)) -> a__U21#(mark(X1),X2) p22: mark#(U13(X)) -> mark#(X) p23: mark#(isNat(X)) -> a__isNat#(X) p24: mark#(U12(X1,X2)) -> mark#(X1) p25: mark#(U12(X1,X2)) -> a__U12#(mark(X1),X2) p26: mark#(U11(X1,X2,X3)) -> mark#(X1) p27: mark#(U11(X1,X2,X3)) -> a__U11#(mark(X1),X2,X3) p28: a__plus#(N,|0|()) -> a__U31#(a__and(a__isNat(N),isNatKind(N)),N) and R consists of: r1: a__U11(tt(),V1,V2) -> a__U12(a__isNat(V1),V2) r2: a__U12(tt(),V2) -> a__U13(a__isNat(V2)) r3: a__U13(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),N) -> mark(N) r7: a__U41(tt(),M,N) -> s(a__plus(mark(N),mark(M))) r8: a__and(tt(),X) -> mark(X) r9: a__isNat(|0|()) -> tt() r10: a__isNat(plus(V1,V2)) -> a__U11(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) r11: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r12: a__isNatKind(|0|()) -> tt() r13: a__isNatKind(plus(V1,V2)) -> a__and(a__isNatKind(V1),isNatKind(V2)) r14: a__isNatKind(s(V1)) -> a__isNatKind(V1) r15: a__plus(N,|0|()) -> a__U31(a__and(a__isNat(N),isNatKind(N)),N) r16: a__plus(N,s(M)) -> a__U41(a__and(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) r17: mark(U11(X1,X2,X3)) -> a__U11(mark(X1),X2,X3) r18: mark(U12(X1,X2)) -> a__U12(mark(X1),X2) r19: mark(isNat(X)) -> a__isNat(X) r20: mark(U13(X)) -> a__U13(mark(X)) r21: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r22: mark(U22(X)) -> a__U22(mark(X)) r23: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r24: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r25: mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) r26: mark(and(X1,X2)) -> a__and(mark(X1),X2) r27: mark(isNatKind(X)) -> a__isNatKind(X) r28: mark(tt()) -> tt() r29: mark(s(X)) -> s(mark(X)) r30: mark(|0|()) -> |0|() r31: a__U11(X1,X2,X3) -> U11(X1,X2,X3) r32: a__U12(X1,X2) -> U12(X1,X2) r33: a__isNat(X) -> isNat(X) r34: a__U13(X) -> U13(X) r35: a__U21(X1,X2) -> U21(X1,X2) r36: a__U22(X) -> U22(X) r37: a__U31(X1,X2) -> U31(X1,X2) r38: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r39: a__plus(X1,X2) -> plus(X1,X2) r40: a__and(X1,X2) -> and(X1,X2) r41: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p14, p15, p16, p17, p19, p20, p21, p22, p23, p24, p25, p26, p27} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__U11#(tt(),V1,V2) -> a__U12#(a__isNat(V1),V2) p2: a__U12#(tt(),V2) -> a__isNat#(V2) p3: a__isNat#(plus(V1,V2)) -> a__U11#(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) p4: a__U11#(tt(),V1,V2) -> a__isNat#(V1) p5: a__isNat#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p6: a__and#(tt(),X) -> mark#(X) p7: mark#(U11(X1,X2,X3)) -> a__U11#(mark(X1),X2,X3) p8: mark#(U11(X1,X2,X3)) -> mark#(X1) p9: mark#(U12(X1,X2)) -> a__U12#(mark(X1),X2) p10: mark#(U12(X1,X2)) -> mark#(X1) p11: mark#(isNat(X)) -> a__isNat#(X) p12: a__isNat#(plus(V1,V2)) -> a__isNatKind#(V1) p13: a__isNatKind#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p14: a__isNatKind#(plus(V1,V2)) -> a__isNatKind#(V1) p15: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p16: a__isNat#(s(V1)) -> a__U21#(a__isNatKind(V1),V1) p17: a__U21#(tt(),V1) -> a__isNat#(V1) p18: a__isNat#(s(V1)) -> a__isNatKind#(V1) p19: mark#(U13(X)) -> mark#(X) p20: mark#(U21(X1,X2)) -> a__U21#(mark(X1),X2) p21: mark#(U21(X1,X2)) -> mark#(X1) p22: mark#(U22(X)) -> mark#(X) p23: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p24: mark#(and(X1,X2)) -> mark#(X1) p25: mark#(isNatKind(X)) -> a__isNatKind#(X) and R consists of: r1: a__U11(tt(),V1,V2) -> a__U12(a__isNat(V1),V2) r2: a__U12(tt(),V2) -> a__U13(a__isNat(V2)) r3: a__U13(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),N) -> mark(N) r7: a__U41(tt(),M,N) -> s(a__plus(mark(N),mark(M))) r8: a__and(tt(),X) -> mark(X) r9: a__isNat(|0|()) -> tt() r10: a__isNat(plus(V1,V2)) -> a__U11(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) r11: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r12: a__isNatKind(|0|()) -> tt() r13: a__isNatKind(plus(V1,V2)) -> a__and(a__isNatKind(V1),isNatKind(V2)) r14: a__isNatKind(s(V1)) -> a__isNatKind(V1) r15: a__plus(N,|0|()) -> a__U31(a__and(a__isNat(N),isNatKind(N)),N) r16: a__plus(N,s(M)) -> a__U41(a__and(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) r17: mark(U11(X1,X2,X3)) -> a__U11(mark(X1),X2,X3) r18: mark(U12(X1,X2)) -> a__U12(mark(X1),X2) r19: mark(isNat(X)) -> a__isNat(X) r20: mark(U13(X)) -> a__U13(mark(X)) r21: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r22: mark(U22(X)) -> a__U22(mark(X)) r23: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r24: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r25: mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) r26: mark(and(X1,X2)) -> a__and(mark(X1),X2) r27: mark(isNatKind(X)) -> a__isNatKind(X) r28: mark(tt()) -> tt() r29: mark(s(X)) -> s(mark(X)) r30: mark(|0|()) -> |0|() r31: a__U11(X1,X2,X3) -> U11(X1,X2,X3) r32: a__U12(X1,X2) -> U12(X1,X2) r33: a__isNat(X) -> isNat(X) r34: a__U13(X) -> U13(X) r35: a__U21(X1,X2) -> U21(X1,X2) r36: a__U22(X) -> U22(X) r37: a__U31(X1,X2) -> U31(X1,X2) r38: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r39: a__plus(X1,X2) -> plus(X1,X2) r40: a__and(X1,X2) -> and(X1,X2) r41: 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 Take the reduction pair: lexicographic combination of reduction pairs: 1. matrix interpretations: carrier: N^1 order: standard order interpretations: a__U11#_A(x1,x2,x3) = x2 + x3 + 2 tt_A() = 0 a__U12#_A(x1,x2) = x2 + 1 a__isNat_A(x1) = x1 + 1 a__isNat#_A(x1) = x1 plus_A(x1,x2) = x1 + x2 + 4 a__and_A(x1,x2) = x1 + x2 a__isNatKind_A(x1) = 0 isNatKind_A(x1) = 0 a__and#_A(x1,x2) = x2 + 2 mark#_A(x1) = x1 + 2 U11_A(x1,x2,x3) = x1 + x2 + x3 + 5 mark_A(x1) = x1 U12_A(x1,x2) = x1 + x2 + 3 isNat_A(x1) = x1 + 1 a__isNatKind#_A(x1) = 2 s_A(x1) = x1 + 3 a__U21#_A(x1,x2) = x2 + 2 U13_A(x1) = x1 + 1 U21_A(x1,x2) = x1 + x2 + 3 U22_A(x1) = x1 + 1 and_A(x1,x2) = x1 + x2 a__U11_A(x1,x2,x3) = x1 + x2 + x3 + 5 a__U12_A(x1,x2) = x1 + x2 + 3 a__U13_A(x1) = x1 + 1 a__U21_A(x1,x2) = x1 + x2 + 3 a__U22_A(x1) = x1 + 1 a__U31_A(x1,x2) = x2 + 1 a__U41_A(x1,x2,x3) = x2 + x3 + 7 a__plus_A(x1,x2) = x1 + x2 + 4 |0|_A() = 1 U31_A(x1,x2) = x2 + 1 U41_A(x1,x2,x3) = x2 + x3 + 7 2. matrix interpretations: carrier: N^1 order: standard order interpretations: a__U11#_A(x1,x2,x3) = x2 + 2 tt_A() = 2 a__U12#_A(x1,x2) = 0 a__isNat_A(x1) = 3 a__isNat#_A(x1) = x1 + 1 plus_A(x1,x2) = x1 + 4 a__and_A(x1,x2) = x1 + x2 a__isNatKind_A(x1) = 2 isNatKind_A(x1) = 0 a__and#_A(x1,x2) = x2 + 6 mark#_A(x1) = x1 + 6 U11_A(x1,x2,x3) = 1 mark_A(x1) = x1 + 2 U12_A(x1,x2) = x1 + 1 isNat_A(x1) = 2 a__isNatKind#_A(x1) = 6 s_A(x1) = 2 a__U21#_A(x1,x2) = 2 U13_A(x1) = x1 + 1 U21_A(x1,x2) = x1 + 2 U22_A(x1) = x1 + 2 and_A(x1,x2) = x1 + x2 a__U11_A(x1,x2,x3) = 2 a__U12_A(x1,x2) = x1 + 1 a__U13_A(x1) = x1 + 1 a__U21_A(x1,x2) = x1 + 2 a__U22_A(x1) = x1 + 2 a__U31_A(x1,x2) = x2 + 5 a__U41_A(x1,x2,x3) = x3 + 3 a__plus_A(x1,x2) = x1 + 4 |0|_A() = 1 U31_A(x1,x2) = x2 + 4 U41_A(x1,x2,x3) = x3 + 2 The next rules are strictly ordered: p1, p2, p3, p4, p5, p7, p8, p9, p10, p11, p12, p16, p17, p18, p19, p20, p21, p22 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: a__and#(tt(),X) -> mark#(X) p2: a__isNatKind#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p3: a__isNatKind#(plus(V1,V2)) -> a__isNatKind#(V1) p4: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p5: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) p6: mark#(and(X1,X2)) -> mark#(X1) p7: mark#(isNatKind(X)) -> a__isNatKind#(X) and R consists of: r1: a__U11(tt(),V1,V2) -> a__U12(a__isNat(V1),V2) r2: a__U12(tt(),V2) -> a__U13(a__isNat(V2)) r3: a__U13(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),N) -> mark(N) r7: a__U41(tt(),M,N) -> s(a__plus(mark(N),mark(M))) r8: a__and(tt(),X) -> mark(X) r9: a__isNat(|0|()) -> tt() r10: a__isNat(plus(V1,V2)) -> a__U11(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) r11: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r12: a__isNatKind(|0|()) -> tt() r13: a__isNatKind(plus(V1,V2)) -> a__and(a__isNatKind(V1),isNatKind(V2)) r14: a__isNatKind(s(V1)) -> a__isNatKind(V1) r15: a__plus(N,|0|()) -> a__U31(a__and(a__isNat(N),isNatKind(N)),N) r16: a__plus(N,s(M)) -> a__U41(a__and(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) r17: mark(U11(X1,X2,X3)) -> a__U11(mark(X1),X2,X3) r18: mark(U12(X1,X2)) -> a__U12(mark(X1),X2) r19: mark(isNat(X)) -> a__isNat(X) r20: mark(U13(X)) -> a__U13(mark(X)) r21: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r22: mark(U22(X)) -> a__U22(mark(X)) r23: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r24: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r25: mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) r26: mark(and(X1,X2)) -> a__and(mark(X1),X2) r27: mark(isNatKind(X)) -> a__isNatKind(X) r28: mark(tt()) -> tt() r29: mark(s(X)) -> s(mark(X)) r30: mark(|0|()) -> |0|() r31: a__U11(X1,X2,X3) -> U11(X1,X2,X3) r32: a__U12(X1,X2) -> U12(X1,X2) r33: a__isNat(X) -> isNat(X) r34: a__U13(X) -> U13(X) r35: a__U21(X1,X2) -> U21(X1,X2) r36: a__U22(X) -> U22(X) r37: a__U31(X1,X2) -> U31(X1,X2) r38: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r39: a__plus(X1,X2) -> plus(X1,X2) r40: a__and(X1,X2) -> and(X1,X2) r41: a__isNatKind(X) -> isNatKind(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: a__and#(tt(),X) -> mark#(X) p2: mark#(isNatKind(X)) -> a__isNatKind#(X) p3: a__isNatKind#(s(V1)) -> a__isNatKind#(V1) p4: a__isNatKind#(plus(V1,V2)) -> a__isNatKind#(V1) p5: a__isNatKind#(plus(V1,V2)) -> a__and#(a__isNatKind(V1),isNatKind(V2)) p6: mark#(and(X1,X2)) -> mark#(X1) p7: mark#(and(X1,X2)) -> a__and#(mark(X1),X2) and R consists of: r1: a__U11(tt(),V1,V2) -> a__U12(a__isNat(V1),V2) r2: a__U12(tt(),V2) -> a__U13(a__isNat(V2)) r3: a__U13(tt()) -> tt() r4: a__U21(tt(),V1) -> a__U22(a__isNat(V1)) r5: a__U22(tt()) -> tt() r6: a__U31(tt(),N) -> mark(N) r7: a__U41(tt(),M,N) -> s(a__plus(mark(N),mark(M))) r8: a__and(tt(),X) -> mark(X) r9: a__isNat(|0|()) -> tt() r10: a__isNat(plus(V1,V2)) -> a__U11(a__and(a__isNatKind(V1),isNatKind(V2)),V1,V2) r11: a__isNat(s(V1)) -> a__U21(a__isNatKind(V1),V1) r12: a__isNatKind(|0|()) -> tt() r13: a__isNatKind(plus(V1,V2)) -> a__and(a__isNatKind(V1),isNatKind(V2)) r14: a__isNatKind(s(V1)) -> a__isNatKind(V1) r15: a__plus(N,|0|()) -> a__U31(a__and(a__isNat(N),isNatKind(N)),N) r16: a__plus(N,s(M)) -> a__U41(a__and(a__and(a__isNat(M),isNatKind(M)),and(isNat(N),isNatKind(N))),M,N) r17: mark(U11(X1,X2,X3)) -> a__U11(mark(X1),X2,X3) r18: mark(U12(X1,X2)) -> a__U12(mark(X1),X2) r19: mark(isNat(X)) -> a__isNat(X) r20: mark(U13(X)) -> a__U13(mark(X)) r21: mark(U21(X1,X2)) -> a__U21(mark(X1),X2) r22: mark(U22(X)) -> a__U22(mark(X)) r23: mark(U31(X1,X2)) -> a__U31(mark(X1),X2) r24: mark(U41(X1,X2,X3)) -> a__U41(mark(X1),X2,X3) r25: mark(plus(X1,X2)) -> a__plus(mark(X1),mark(X2)) r26: mark(and(X1,X2)) -> a__and(mark(X1),X2) r27: mark(isNatKind(X)) -> a__isNatKind(X) r28: mark(tt()) -> tt() r29: mark(s(X)) -> s(mark(X)) r30: mark(|0|()) -> |0|() r31: a__U11(X1,X2,X3) -> U11(X1,X2,X3) r32: a__U12(X1,X2) -> U12(X1,X2) r33: a__isNat(X) -> isNat(X) r34: a__U13(X) -> U13(X) r35: a__U21(X1,X2) -> U21(X1,X2) r36: a__U22(X) -> U22(X) r37: a__U31(X1,X2) -> U31(X1,X2) r38: a__U41(X1,X2,X3) -> U41(X1,X2,X3) r39: a__plus(X1,X2) -> plus(X1,X2) r40: a__and(X1,X2) -> and(X1,X2) r41: 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 Take the reduction pair: lexicographic combination of reduction pairs: 1. matrix interpretations: carrier: N^1 order: standard order interpretations: a__and#_A(x1,x2) = x2 + 1 tt_A() = 1 mark#_A(x1) = x1 isNatKind_A(x1) = x1 + 1 a__isNatKind#_A(x1) = x1 + 1 s_A(x1) = x1 + 2 plus_A(x1,x2) = x1 + x2 + 4 a__isNatKind_A(x1) = x1 + 1 and_A(x1,x2) = x1 + x2 + 2 mark_A(x1) = x1 a__U11_A(x1,x2,x3) = x2 + 5 a__U12_A(x1,x2) = 5 a__isNat_A(x1) = x1 + 1 a__U13_A(x1) = 2 a__U21_A(x1,x2) = x2 + 2 a__U22_A(x1) = 1 a__U31_A(x1,x2) = x2 + 1 a__U41_A(x1,x2,x3) = x2 + x3 + 6 a__plus_A(x1,x2) = x1 + x2 + 4 a__and_A(x1,x2) = x1 + x2 + 2 |0|_A() = 1 isNat_A(x1) = x1 + 1 U11_A(x1,x2,x3) = x2 + 5 U12_A(x1,x2) = 5 U13_A(x1) = 2 U21_A(x1,x2) = x2 + 2 U22_A(x1) = 1 U31_A(x1,x2) = x2 + 1 U41_A(x1,x2,x3) = x2 + x3 + 6 2. matrix interpretations: carrier: N^1 order: standard order interpretations: a__and#_A(x1,x2) = x2 + 2 tt_A() = 4 mark#_A(x1) = x1 + 1 isNatKind_A(x1) = 0 a__isNatKind#_A(x1) = 0 s_A(x1) = 1 plus_A(x1,x2) = 2 a__isNatKind_A(x1) = 1 and_A(x1,x2) = x2 + 2 mark_A(x1) = x1 + 4 a__U11_A(x1,x2,x3) = 3 a__U12_A(x1,x2) = 3 a__isNat_A(x1) = 3 a__U13_A(x1) = 2 a__U21_A(x1,x2) = x2 + 4 a__U22_A(x1) = 5 a__U31_A(x1,x2) = 2 a__U41_A(x1,x2,x3) = 2 a__plus_A(x1,x2) = 3 a__and_A(x1,x2) = x2 + 3 |0|_A() = 1 isNat_A(x1) = 1 U11_A(x1,x2,x3) = 1 U12_A(x1,x2) = 1 U13_A(x1) = 1 U21_A(x1,x2) = x2 + 1 U22_A(x1) = 2 U31_A(x1,x2) = 1 U41_A(x1,x2,x3) = 1 The next rules are strictly ordered: p1, p2, p3, p4, p5, p6, p7 We remove them from the problem. Then no dependency pair remains.