/export/starexec/sandbox2/solver/bin/starexec_run_FirstOrder /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES We consider the system theBenchmark. We are asked to determine termination of the following first-order TRS. 0 : [] --> o U11 : [o * o * o] --> o U12 : [o * o * o] --> o U13 : [o * o * o] --> o U14 : [o * o * o] --> o U15 : [o * o] --> o U16 : [o] --> o U21 : [o * o] --> o U22 : [o * o] --> o U23 : [o] --> o U31 : [o * o] --> o U32 : [o] --> o U41 : [o] --> o U51 : [o * o] --> o U52 : [o * o] --> o U61 : [o * o * o] --> o U62 : [o * o * o] --> o U63 : [o * o * o] --> o U64 : [o * o * o] --> o active : [o] --> o isNat : [o] --> o isNatKind : [o] --> o mark : [o] --> o plus : [o * o] --> o s : [o] --> o tt : [] --> o active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) U11(mark(X), Y, Z) => U11(X, Y, Z) U11(X, mark(Y), Z) => U11(X, Y, Z) U11(X, Y, mark(Z)) => U11(X, Y, Z) U11(active(X), Y, Z) => U11(X, Y, Z) U11(X, active(Y), Z) => U11(X, Y, Z) U11(X, Y, active(Z)) => U11(X, Y, Z) U12(mark(X), Y, Z) => U12(X, Y, Z) U12(X, mark(Y), Z) => U12(X, Y, Z) U12(X, Y, mark(Z)) => U12(X, Y, Z) U12(active(X), Y, Z) => U12(X, Y, Z) U12(X, active(Y), Z) => U12(X, Y, Z) U12(X, Y, active(Z)) => U12(X, Y, Z) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U13(mark(X), Y, Z) => U13(X, Y, Z) U13(X, mark(Y), Z) => U13(X, Y, Z) U13(X, Y, mark(Z)) => U13(X, Y, Z) U13(active(X), Y, Z) => U13(X, Y, Z) U13(X, active(Y), Z) => U13(X, Y, Z) U13(X, Y, active(Z)) => U13(X, Y, Z) U14(mark(X), Y, Z) => U14(X, Y, Z) U14(X, mark(Y), Z) => U14(X, Y, Z) U14(X, Y, mark(Z)) => U14(X, Y, Z) U14(active(X), Y, Z) => U14(X, Y, Z) U14(X, active(Y), Z) => U14(X, Y, Z) U14(X, Y, active(Z)) => U14(X, Y, Z) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) isNat(mark(X)) => isNat(X) isNat(active(X)) => isNat(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U21(mark(X), Y) => U21(X, Y) U21(X, mark(Y)) => U21(X, Y) U21(active(X), Y) => U21(X, Y) U21(X, active(Y)) => U21(X, Y) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U23(mark(X)) => U23(X) U23(active(X)) => U23(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) U51(mark(X), Y) => U51(X, Y) U51(X, mark(Y)) => U51(X, Y) U51(active(X), Y) => U51(X, Y) U51(X, active(Y)) => U51(X, Y) U52(mark(X), Y) => U52(X, Y) U52(X, mark(Y)) => U52(X, Y) U52(active(X), Y) => U52(X, Y) U52(X, active(Y)) => U52(X, Y) U61(mark(X), Y, Z) => U61(X, Y, Z) U61(X, mark(Y), Z) => U61(X, Y, Z) U61(X, Y, mark(Z)) => U61(X, Y, Z) U61(active(X), Y, Z) => U61(X, Y, Z) U61(X, active(Y), Z) => U61(X, Y, Z) U61(X, Y, active(Z)) => U61(X, Y, Z) U62(mark(X), Y, Z) => U62(X, Y, Z) U62(X, mark(Y), Z) => U62(X, Y, Z) U62(X, Y, mark(Z)) => U62(X, Y, Z) U62(active(X), Y, Z) => U62(X, Y, Z) U62(X, active(Y), Z) => U62(X, Y, Z) U62(X, Y, active(Z)) => U62(X, Y, Z) U63(mark(X), Y, Z) => U63(X, Y, Z) U63(X, mark(Y), Z) => U63(X, Y, Z) U63(X, Y, mark(Z)) => U63(X, Y, Z) U63(active(X), Y, Z) => U63(X, Y, Z) U63(X, active(Y), Z) => U63(X, Y, Z) U63(X, Y, active(Z)) => U63(X, Y, Z) U64(mark(X), Y, Z) => U64(X, Y, Z) U64(X, mark(Y), Z) => U64(X, Y, Z) U64(X, Y, mark(Z)) => U64(X, Y, Z) U64(active(X), Y, Z) => U64(X, Y, Z) U64(X, active(Y), Z) => U64(X, Y, Z) U64(X, Y, active(Z)) => U64(X, Y, Z) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) We use the dependency pair framework as described in [Kop12, Ch. 6/7], with static dependency pairs (see [KusIsoSakBla09] and the adaptation for AFSMs in [Kop12, Ch. 7.8]). We thus obtain the following dependency pair problem (P_0, R_0, minimal, formative): Dependency Pairs P_0: 0] active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) 1] active#(U11(tt, X, Y)) =#> U12#(isNatKind(X), X, Y) 2] active#(U11(tt, X, Y)) =#> isNatKind#(X) 3] active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) 4] active#(U12(tt, X, Y)) =#> U13#(isNatKind(Y), X, Y) 5] active#(U12(tt, X, Y)) =#> isNatKind#(Y) 6] active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) 7] active#(U13(tt, X, Y)) =#> U14#(isNatKind(Y), X, Y) 8] active#(U13(tt, X, Y)) =#> isNatKind#(Y) 9] active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) 10] active#(U14(tt, X, Y)) =#> U15#(isNat(X), Y) 11] active#(U14(tt, X, Y)) =#> isNat#(X) 12] active#(U15(tt, X)) =#> mark#(U16(isNat(X))) 13] active#(U15(tt, X)) =#> U16#(isNat(X)) 14] active#(U15(tt, X)) =#> isNat#(X) 15] active#(U16(tt)) =#> mark#(tt) 16] active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) 17] active#(U21(tt, X)) =#> U22#(isNatKind(X), X) 18] active#(U21(tt, X)) =#> isNatKind#(X) 19] active#(U22(tt, X)) =#> mark#(U23(isNat(X))) 20] active#(U22(tt, X)) =#> U23#(isNat(X)) 21] active#(U22(tt, X)) =#> isNat#(X) 22] active#(U23(tt)) =#> mark#(tt) 23] active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) 24] active#(U31(tt, X)) =#> U32#(isNatKind(X)) 25] active#(U31(tt, X)) =#> isNatKind#(X) 26] active#(U32(tt)) =#> mark#(tt) 27] active#(U41(tt)) =#> mark#(tt) 28] active#(U51(tt, X)) =#> mark#(U52(isNatKind(X), X)) 29] active#(U51(tt, X)) =#> U52#(isNatKind(X), X) 30] active#(U51(tt, X)) =#> isNatKind#(X) 31] active#(U52(tt, X)) =#> mark#(X) 32] active#(U61(tt, X, Y)) =#> mark#(U62(isNatKind(X), X, Y)) 33] active#(U61(tt, X, Y)) =#> U62#(isNatKind(X), X, Y) 34] active#(U61(tt, X, Y)) =#> isNatKind#(X) 35] active#(U62(tt, X, Y)) =#> mark#(U63(isNat(Y), X, Y)) 36] active#(U62(tt, X, Y)) =#> U63#(isNat(Y), X, Y) 37] active#(U62(tt, X, Y)) =#> isNat#(Y) 38] active#(U63(tt, X, Y)) =#> mark#(U64(isNatKind(Y), X, Y)) 39] active#(U63(tt, X, Y)) =#> U64#(isNatKind(Y), X, Y) 40] active#(U63(tt, X, Y)) =#> isNatKind#(Y) 41] active#(U64(tt, X, Y)) =#> mark#(s(plus(Y, X))) 42] active#(U64(tt, X, Y)) =#> s#(plus(Y, X)) 43] active#(U64(tt, X, Y)) =#> plus#(Y, X) 44] active#(isNat(0)) =#> mark#(tt) 45] active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) 46] active#(isNat(plus(X, Y))) =#> U11#(isNatKind(X), X, Y) 47] active#(isNat(plus(X, Y))) =#> isNatKind#(X) 48] active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) 49] active#(isNat(s(X))) =#> U21#(isNatKind(X), X) 50] active#(isNat(s(X))) =#> isNatKind#(X) 51] active#(isNatKind(0)) =#> mark#(tt) 52] active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) 53] active#(isNatKind(plus(X, Y))) =#> U31#(isNatKind(X), Y) 54] active#(isNatKind(plus(X, Y))) =#> isNatKind#(X) 55] active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) 56] active#(isNatKind(s(X))) =#> U41#(isNatKind(X)) 57] active#(isNatKind(s(X))) =#> isNatKind#(X) 58] active#(plus(X, 0)) =#> mark#(U51(isNat(X), X)) 59] active#(plus(X, 0)) =#> U51#(isNat(X), X) 60] active#(plus(X, 0)) =#> isNat#(X) 61] active#(plus(X, s(Y))) =#> mark#(U61(isNat(Y), Y, X)) 62] active#(plus(X, s(Y))) =#> U61#(isNat(Y), Y, X) 63] active#(plus(X, s(Y))) =#> isNat#(Y) 64] mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) 65] mark#(U11(X, Y, Z)) =#> U11#(mark(X), Y, Z) 66] mark#(U11(X, Y, Z)) =#> mark#(X) 67] mark#(tt) =#> active#(tt) 68] mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) 69] mark#(U12(X, Y, Z)) =#> U12#(mark(X), Y, Z) 70] mark#(U12(X, Y, Z)) =#> mark#(X) 71] mark#(isNatKind(X)) =#> active#(isNatKind(X)) 72] mark#(isNatKind(X)) =#> isNatKind#(X) 73] mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) 74] mark#(U13(X, Y, Z)) =#> U13#(mark(X), Y, Z) 75] mark#(U13(X, Y, Z)) =#> mark#(X) 76] mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) 77] mark#(U14(X, Y, Z)) =#> U14#(mark(X), Y, Z) 78] mark#(U14(X, Y, Z)) =#> mark#(X) 79] mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) 80] mark#(U15(X, Y)) =#> U15#(mark(X), Y) 81] mark#(U15(X, Y)) =#> mark#(X) 82] mark#(isNat(X)) =#> active#(isNat(X)) 83] mark#(isNat(X)) =#> isNat#(X) 84] mark#(U16(X)) =#> active#(U16(mark(X))) 85] mark#(U16(X)) =#> U16#(mark(X)) 86] mark#(U16(X)) =#> mark#(X) 87] mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) 88] mark#(U21(X, Y)) =#> U21#(mark(X), Y) 89] mark#(U21(X, Y)) =#> mark#(X) 90] mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) 91] mark#(U22(X, Y)) =#> U22#(mark(X), Y) 92] mark#(U22(X, Y)) =#> mark#(X) 93] mark#(U23(X)) =#> active#(U23(mark(X))) 94] mark#(U23(X)) =#> U23#(mark(X)) 95] mark#(U23(X)) =#> mark#(X) 96] mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) 97] mark#(U31(X, Y)) =#> U31#(mark(X), Y) 98] mark#(U31(X, Y)) =#> mark#(X) 99] mark#(U32(X)) =#> active#(U32(mark(X))) 100] mark#(U32(X)) =#> U32#(mark(X)) 101] mark#(U32(X)) =#> mark#(X) 102] mark#(U41(X)) =#> active#(U41(mark(X))) 103] mark#(U41(X)) =#> U41#(mark(X)) 104] mark#(U41(X)) =#> mark#(X) 105] mark#(U51(X, Y)) =#> active#(U51(mark(X), Y)) 106] mark#(U51(X, Y)) =#> U51#(mark(X), Y) 107] mark#(U51(X, Y)) =#> mark#(X) 108] mark#(U52(X, Y)) =#> active#(U52(mark(X), Y)) 109] mark#(U52(X, Y)) =#> U52#(mark(X), Y) 110] mark#(U52(X, Y)) =#> mark#(X) 111] mark#(U61(X, Y, Z)) =#> active#(U61(mark(X), Y, Z)) 112] mark#(U61(X, Y, Z)) =#> U61#(mark(X), Y, Z) 113] mark#(U61(X, Y, Z)) =#> mark#(X) 114] mark#(U62(X, Y, Z)) =#> active#(U62(mark(X), Y, Z)) 115] mark#(U62(X, Y, Z)) =#> U62#(mark(X), Y, Z) 116] mark#(U62(X, Y, Z)) =#> mark#(X) 117] mark#(U63(X, Y, Z)) =#> active#(U63(mark(X), Y, Z)) 118] mark#(U63(X, Y, Z)) =#> U63#(mark(X), Y, Z) 119] mark#(U63(X, Y, Z)) =#> mark#(X) 120] mark#(U64(X, Y, Z)) =#> active#(U64(mark(X), Y, Z)) 121] mark#(U64(X, Y, Z)) =#> U64#(mark(X), Y, Z) 122] mark#(U64(X, Y, Z)) =#> mark#(X) 123] mark#(s(X)) =#> active#(s(mark(X))) 124] mark#(s(X)) =#> s#(mark(X)) 125] mark#(s(X)) =#> mark#(X) 126] mark#(plus(X, Y)) =#> active#(plus(mark(X), mark(Y))) 127] mark#(plus(X, Y)) =#> plus#(mark(X), mark(Y)) 128] mark#(plus(X, Y)) =#> mark#(X) 129] mark#(plus(X, Y)) =#> mark#(Y) 130] mark#(0) =#> active#(0) 131] U11#(mark(X), Y, Z) =#> U11#(X, Y, Z) 132] U11#(X, mark(Y), Z) =#> U11#(X, Y, Z) 133] U11#(X, Y, mark(Z)) =#> U11#(X, Y, Z) 134] U11#(active(X), Y, Z) =#> U11#(X, Y, Z) 135] U11#(X, active(Y), Z) =#> U11#(X, Y, Z) 136] U11#(X, Y, active(Z)) =#> U11#(X, Y, Z) 137] U12#(mark(X), Y, Z) =#> U12#(X, Y, Z) 138] U12#(X, mark(Y), Z) =#> U12#(X, Y, Z) 139] U12#(X, Y, mark(Z)) =#> U12#(X, Y, Z) 140] U12#(active(X), Y, Z) =#> U12#(X, Y, Z) 141] U12#(X, active(Y), Z) =#> U12#(X, Y, Z) 142] U12#(X, Y, active(Z)) =#> U12#(X, Y, Z) 143] isNatKind#(mark(X)) =#> isNatKind#(X) 144] isNatKind#(active(X)) =#> isNatKind#(X) 145] U13#(mark(X), Y, Z) =#> U13#(X, Y, Z) 146] U13#(X, mark(Y), Z) =#> U13#(X, Y, Z) 147] U13#(X, Y, mark(Z)) =#> U13#(X, Y, Z) 148] U13#(active(X), Y, Z) =#> U13#(X, Y, Z) 149] U13#(X, active(Y), Z) =#> U13#(X, Y, Z) 150] U13#(X, Y, active(Z)) =#> U13#(X, Y, Z) 151] U14#(mark(X), Y, Z) =#> U14#(X, Y, Z) 152] U14#(X, mark(Y), Z) =#> U14#(X, Y, Z) 153] U14#(X, Y, mark(Z)) =#> U14#(X, Y, Z) 154] U14#(active(X), Y, Z) =#> U14#(X, Y, Z) 155] U14#(X, active(Y), Z) =#> U14#(X, Y, Z) 156] U14#(X, Y, active(Z)) =#> U14#(X, Y, Z) 157] U15#(mark(X), Y) =#> U15#(X, Y) 158] U15#(X, mark(Y)) =#> U15#(X, Y) 159] U15#(active(X), Y) =#> U15#(X, Y) 160] U15#(X, active(Y)) =#> U15#(X, Y) 161] isNat#(mark(X)) =#> isNat#(X) 162] isNat#(active(X)) =#> isNat#(X) 163] U16#(mark(X)) =#> U16#(X) 164] U16#(active(X)) =#> U16#(X) 165] U21#(mark(X), Y) =#> U21#(X, Y) 166] U21#(X, mark(Y)) =#> U21#(X, Y) 167] U21#(active(X), Y) =#> U21#(X, Y) 168] U21#(X, active(Y)) =#> U21#(X, Y) 169] U22#(mark(X), Y) =#> U22#(X, Y) 170] U22#(X, mark(Y)) =#> U22#(X, Y) 171] U22#(active(X), Y) =#> U22#(X, Y) 172] U22#(X, active(Y)) =#> U22#(X, Y) 173] U23#(mark(X)) =#> U23#(X) 174] U23#(active(X)) =#> U23#(X) 175] U31#(mark(X), Y) =#> U31#(X, Y) 176] U31#(X, mark(Y)) =#> U31#(X, Y) 177] U31#(active(X), Y) =#> U31#(X, Y) 178] U31#(X, active(Y)) =#> U31#(X, Y) 179] U32#(mark(X)) =#> U32#(X) 180] U32#(active(X)) =#> U32#(X) 181] U41#(mark(X)) =#> U41#(X) 182] U41#(active(X)) =#> U41#(X) 183] U51#(mark(X), Y) =#> U51#(X, Y) 184] U51#(X, mark(Y)) =#> U51#(X, Y) 185] U51#(active(X), Y) =#> U51#(X, Y) 186] U51#(X, active(Y)) =#> U51#(X, Y) 187] U52#(mark(X), Y) =#> U52#(X, Y) 188] U52#(X, mark(Y)) =#> U52#(X, Y) 189] U52#(active(X), Y) =#> U52#(X, Y) 190] U52#(X, active(Y)) =#> U52#(X, Y) 191] U61#(mark(X), Y, Z) =#> U61#(X, Y, Z) 192] U61#(X, mark(Y), Z) =#> U61#(X, Y, Z) 193] U61#(X, Y, mark(Z)) =#> U61#(X, Y, Z) 194] U61#(active(X), Y, Z) =#> U61#(X, Y, Z) 195] U61#(X, active(Y), Z) =#> U61#(X, Y, Z) 196] U61#(X, Y, active(Z)) =#> U61#(X, Y, Z) 197] U62#(mark(X), Y, Z) =#> U62#(X, Y, Z) 198] U62#(X, mark(Y), Z) =#> U62#(X, Y, Z) 199] U62#(X, Y, mark(Z)) =#> U62#(X, Y, Z) 200] U62#(active(X), Y, Z) =#> U62#(X, Y, Z) 201] U62#(X, active(Y), Z) =#> U62#(X, Y, Z) 202] U62#(X, Y, active(Z)) =#> U62#(X, Y, Z) 203] U63#(mark(X), Y, Z) =#> U63#(X, Y, Z) 204] U63#(X, mark(Y), Z) =#> U63#(X, Y, Z) 205] U63#(X, Y, mark(Z)) =#> U63#(X, Y, Z) 206] U63#(active(X), Y, Z) =#> U63#(X, Y, Z) 207] U63#(X, active(Y), Z) =#> U63#(X, Y, Z) 208] U63#(X, Y, active(Z)) =#> U63#(X, Y, Z) 209] U64#(mark(X), Y, Z) =#> U64#(X, Y, Z) 210] U64#(X, mark(Y), Z) =#> U64#(X, Y, Z) 211] U64#(X, Y, mark(Z)) =#> U64#(X, Y, Z) 212] U64#(active(X), Y, Z) =#> U64#(X, Y, Z) 213] U64#(X, active(Y), Z) =#> U64#(X, Y, Z) 214] U64#(X, Y, active(Z)) =#> U64#(X, Y, Z) 215] s#(mark(X)) =#> s#(X) 216] s#(active(X)) =#> s#(X) 217] plus#(mark(X), Y) =#> plus#(X, Y) 218] plus#(X, mark(Y)) =#> plus#(X, Y) 219] plus#(active(X), Y) =#> plus#(X, Y) 220] plus#(X, active(Y)) =#> plus#(X, Y) Rules R_0: active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) U11(mark(X), Y, Z) => U11(X, Y, Z) U11(X, mark(Y), Z) => U11(X, Y, Z) U11(X, Y, mark(Z)) => U11(X, Y, Z) U11(active(X), Y, Z) => U11(X, Y, Z) U11(X, active(Y), Z) => U11(X, Y, Z) U11(X, Y, active(Z)) => U11(X, Y, Z) U12(mark(X), Y, Z) => U12(X, Y, Z) U12(X, mark(Y), Z) => U12(X, Y, Z) U12(X, Y, mark(Z)) => U12(X, Y, Z) U12(active(X), Y, Z) => U12(X, Y, Z) U12(X, active(Y), Z) => U12(X, Y, Z) U12(X, Y, active(Z)) => U12(X, Y, Z) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U13(mark(X), Y, Z) => U13(X, Y, Z) U13(X, mark(Y), Z) => U13(X, Y, Z) U13(X, Y, mark(Z)) => U13(X, Y, Z) U13(active(X), Y, Z) => U13(X, Y, Z) U13(X, active(Y), Z) => U13(X, Y, Z) U13(X, Y, active(Z)) => U13(X, Y, Z) U14(mark(X), Y, Z) => U14(X, Y, Z) U14(X, mark(Y), Z) => U14(X, Y, Z) U14(X, Y, mark(Z)) => U14(X, Y, Z) U14(active(X), Y, Z) => U14(X, Y, Z) U14(X, active(Y), Z) => U14(X, Y, Z) U14(X, Y, active(Z)) => U14(X, Y, Z) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) isNat(mark(X)) => isNat(X) isNat(active(X)) => isNat(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U21(mark(X), Y) => U21(X, Y) U21(X, mark(Y)) => U21(X, Y) U21(active(X), Y) => U21(X, Y) U21(X, active(Y)) => U21(X, Y) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U23(mark(X)) => U23(X) U23(active(X)) => U23(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) U51(mark(X), Y) => U51(X, Y) U51(X, mark(Y)) => U51(X, Y) U51(active(X), Y) => U51(X, Y) U51(X, active(Y)) => U51(X, Y) U52(mark(X), Y) => U52(X, Y) U52(X, mark(Y)) => U52(X, Y) U52(active(X), Y) => U52(X, Y) U52(X, active(Y)) => U52(X, Y) U61(mark(X), Y, Z) => U61(X, Y, Z) U61(X, mark(Y), Z) => U61(X, Y, Z) U61(X, Y, mark(Z)) => U61(X, Y, Z) U61(active(X), Y, Z) => U61(X, Y, Z) U61(X, active(Y), Z) => U61(X, Y, Z) U61(X, Y, active(Z)) => U61(X, Y, Z) U62(mark(X), Y, Z) => U62(X, Y, Z) U62(X, mark(Y), Z) => U62(X, Y, Z) U62(X, Y, mark(Z)) => U62(X, Y, Z) U62(active(X), Y, Z) => U62(X, Y, Z) U62(X, active(Y), Z) => U62(X, Y, Z) U62(X, Y, active(Z)) => U62(X, Y, Z) U63(mark(X), Y, Z) => U63(X, Y, Z) U63(X, mark(Y), Z) => U63(X, Y, Z) U63(X, Y, mark(Z)) => U63(X, Y, Z) U63(active(X), Y, Z) => U63(X, Y, Z) U63(X, active(Y), Z) => U63(X, Y, Z) U63(X, Y, active(Z)) => U63(X, Y, Z) U64(mark(X), Y, Z) => U64(X, Y, Z) U64(X, mark(Y), Z) => U64(X, Y, Z) U64(X, Y, mark(Z)) => U64(X, Y, Z) U64(active(X), Y, Z) => U64(X, Y, Z) U64(X, active(Y), Z) => U64(X, Y, Z) U64(X, Y, active(Z)) => U64(X, Y, Z) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) Thus, the original system is terminating if (P_0, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_0, R_0, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 68, 69, 70 * 1 : 138, 139, 141, 142 * 2 : 143, 144 * 3 : 73, 74, 75 * 4 : 146, 147, 149, 150 * 5 : 143, 144 * 6 : 76, 77, 78 * 7 : 152, 153, 155, 156 * 8 : 143, 144 * 9 : 79, 80, 81 * 10 : 158, 160 * 11 : 161, 162 * 12 : 84, 85, 86 * 13 : * 14 : 161, 162 * 15 : 67 * 16 : 90, 91, 92 * 17 : 170, 172 * 18 : 143, 144 * 19 : 93, 94, 95 * 20 : * 21 : 161, 162 * 22 : 67 * 23 : 99, 100, 101 * 24 : * 25 : 143, 144 * 26 : 67 * 27 : 67 * 28 : 108, 109, 110 * 29 : 188, 190 * 30 : 143, 144 * 31 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 32 : 114, 115, 116 * 33 : 198, 199, 201, 202 * 34 : 143, 144 * 35 : 117, 118, 119 * 36 : 204, 205, 207, 208 * 37 : 161, 162 * 38 : 120, 121, 122 * 39 : 210, 211, 213, 214 * 40 : 143, 144 * 41 : 123, 124, 125 * 42 : * 43 : 217, 218, 219, 220 * 44 : 67 * 45 : 64, 65, 66 * 46 : 132, 133, 135, 136 * 47 : 143, 144 * 48 : 87, 88, 89 * 49 : 166, 168 * 50 : 143, 144 * 51 : 67 * 52 : 96, 97, 98 * 53 : 176, 178 * 54 : 143, 144 * 55 : 102, 103, 104 * 56 : * 57 : 143, 144 * 58 : 105, 106, 107 * 59 : 184, 186 * 60 : 161, 162 * 61 : 111, 112, 113 * 62 : 192, 193, 195, 196 * 63 : 161, 162 * 64 : 0, 1, 2 * 65 : 131, 132, 133, 134, 135, 136 * 66 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 67 : * 68 : 3, 4, 5 * 69 : 137, 138, 139, 140, 141, 142 * 70 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 71 : 51, 52, 53, 54, 55, 56, 57 * 72 : 143, 144 * 73 : 6, 7, 8 * 74 : 145, 146, 147, 148, 149, 150 * 75 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 76 : 9, 10, 11 * 77 : 151, 152, 153, 154, 155, 156 * 78 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 79 : 12, 13, 14 * 80 : 157, 158, 159, 160 * 81 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 82 : 44, 45, 46, 47, 48, 49, 50 * 83 : 161, 162 * 84 : 15 * 85 : 163, 164 * 86 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 87 : 16, 17, 18 * 88 : 165, 166, 167, 168 * 89 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 90 : 19, 20, 21 * 91 : 169, 170, 171, 172 * 92 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 93 : 22 * 94 : 173, 174 * 95 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 96 : 23, 24, 25 * 97 : 175, 176, 177, 178 * 98 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 99 : 26 * 100 : 179, 180 * 101 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 102 : 27 * 103 : 181, 182 * 104 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 105 : 28, 29, 30 * 106 : 183, 184, 185, 186 * 107 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 108 : 31 * 109 : 187, 188, 189, 190 * 110 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 111 : 32, 33, 34 * 112 : 191, 192, 193, 194, 195, 196 * 113 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 114 : 35, 36, 37 * 115 : 197, 198, 199, 200, 201, 202 * 116 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 117 : 38, 39, 40 * 118 : 203, 204, 205, 206, 207, 208 * 119 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 120 : 41, 42, 43 * 121 : 209, 210, 211, 212, 213, 214 * 122 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 123 : * 124 : 215, 216 * 125 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 126 : 58, 59, 60, 61, 62, 63 * 127 : 217, 218, 219, 220 * 128 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 129 : 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 * 130 : * 131 : 131, 132, 133, 134, 135, 136 * 132 : 131, 132, 133, 134, 135, 136 * 133 : 131, 132, 133, 134, 135, 136 * 134 : 131, 132, 133, 134, 135, 136 * 135 : 131, 132, 133, 134, 135, 136 * 136 : 131, 132, 133, 134, 135, 136 * 137 : 137, 138, 139, 140, 141, 142 * 138 : 137, 138, 139, 140, 141, 142 * 139 : 137, 138, 139, 140, 141, 142 * 140 : 137, 138, 139, 140, 141, 142 * 141 : 137, 138, 139, 140, 141, 142 * 142 : 137, 138, 139, 140, 141, 142 * 143 : 143, 144 * 144 : 143, 144 * 145 : 145, 146, 147, 148, 149, 150 * 146 : 145, 146, 147, 148, 149, 150 * 147 : 145, 146, 147, 148, 149, 150 * 148 : 145, 146, 147, 148, 149, 150 * 149 : 145, 146, 147, 148, 149, 150 * 150 : 145, 146, 147, 148, 149, 150 * 151 : 151, 152, 153, 154, 155, 156 * 152 : 151, 152, 153, 154, 155, 156 * 153 : 151, 152, 153, 154, 155, 156 * 154 : 151, 152, 153, 154, 155, 156 * 155 : 151, 152, 153, 154, 155, 156 * 156 : 151, 152, 153, 154, 155, 156 * 157 : 157, 158, 159, 160 * 158 : 157, 158, 159, 160 * 159 : 157, 158, 159, 160 * 160 : 157, 158, 159, 160 * 161 : 161, 162 * 162 : 161, 162 * 163 : 163, 164 * 164 : 163, 164 * 165 : 165, 166, 167, 168 * 166 : 165, 166, 167, 168 * 167 : 165, 166, 167, 168 * 168 : 165, 166, 167, 168 * 169 : 169, 170, 171, 172 * 170 : 169, 170, 171, 172 * 171 : 169, 170, 171, 172 * 172 : 169, 170, 171, 172 * 173 : 173, 174 * 174 : 173, 174 * 175 : 175, 176, 177, 178 * 176 : 175, 176, 177, 178 * 177 : 175, 176, 177, 178 * 178 : 175, 176, 177, 178 * 179 : 179, 180 * 180 : 179, 180 * 181 : 181, 182 * 182 : 181, 182 * 183 : 183, 184, 185, 186 * 184 : 183, 184, 185, 186 * 185 : 183, 184, 185, 186 * 186 : 183, 184, 185, 186 * 187 : 187, 188, 189, 190 * 188 : 187, 188, 189, 190 * 189 : 187, 188, 189, 190 * 190 : 187, 188, 189, 190 * 191 : 191, 192, 193, 194, 195, 196 * 192 : 191, 192, 193, 194, 195, 196 * 193 : 191, 192, 193, 194, 195, 196 * 194 : 191, 192, 193, 194, 195, 196 * 195 : 191, 192, 193, 194, 195, 196 * 196 : 191, 192, 193, 194, 195, 196 * 197 : 197, 198, 199, 200, 201, 202 * 198 : 197, 198, 199, 200, 201, 202 * 199 : 197, 198, 199, 200, 201, 202 * 200 : 197, 198, 199, 200, 201, 202 * 201 : 197, 198, 199, 200, 201, 202 * 202 : 197, 198, 199, 200, 201, 202 * 203 : 203, 204, 205, 206, 207, 208 * 204 : 203, 204, 205, 206, 207, 208 * 205 : 203, 204, 205, 206, 207, 208 * 206 : 203, 204, 205, 206, 207, 208 * 207 : 203, 204, 205, 206, 207, 208 * 208 : 203, 204, 205, 206, 207, 208 * 209 : 209, 210, 211, 212, 213, 214 * 210 : 209, 210, 211, 212, 213, 214 * 211 : 209, 210, 211, 212, 213, 214 * 212 : 209, 210, 211, 212, 213, 214 * 213 : 209, 210, 211, 212, 213, 214 * 214 : 209, 210, 211, 212, 213, 214 * 215 : 215, 216 * 216 : 215, 216 * 217 : 217, 218, 219, 220 * 218 : 217, 218, 219, 220 * 219 : 217, 218, 219, 220 * 220 : 217, 218, 219, 220 This graph has the following strongly connected components: P_1: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(U51(tt, X)) =#> mark#(U52(isNatKind(X), X)) active#(U52(tt, X)) =#> mark#(X) active#(U61(tt, X, Y)) =#> mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) =#> mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) =#> mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) =#> mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) active#(plus(X, 0)) =#> mark#(U51(isNat(X), X)) active#(plus(X, s(Y))) =#> mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) mark#(U51(X, Y)) =#> active#(U51(mark(X), Y)) mark#(U51(X, Y)) =#> mark#(X) mark#(U52(X, Y)) =#> active#(U52(mark(X), Y)) mark#(U52(X, Y)) =#> mark#(X) mark#(U61(X, Y, Z)) =#> active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) =#> mark#(X) mark#(U62(X, Y, Z)) =#> active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) =#> mark#(X) mark#(U63(X, Y, Z)) =#> active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) =#> mark#(X) mark#(U64(X, Y, Z)) =#> active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) =#> mark#(X) mark#(s(X)) =#> mark#(X) mark#(plus(X, Y)) =#> active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) P_2: U11#(mark(X), Y, Z) =#> U11#(X, Y, Z) U11#(X, mark(Y), Z) =#> U11#(X, Y, Z) U11#(X, Y, mark(Z)) =#> U11#(X, Y, Z) U11#(active(X), Y, Z) =#> U11#(X, Y, Z) U11#(X, active(Y), Z) =#> U11#(X, Y, Z) U11#(X, Y, active(Z)) =#> U11#(X, Y, Z) P_3: U12#(mark(X), Y, Z) =#> U12#(X, Y, Z) U12#(X, mark(Y), Z) =#> U12#(X, Y, Z) U12#(X, Y, mark(Z)) =#> U12#(X, Y, Z) U12#(active(X), Y, Z) =#> U12#(X, Y, Z) U12#(X, active(Y), Z) =#> U12#(X, Y, Z) U12#(X, Y, active(Z)) =#> U12#(X, Y, Z) P_4: isNatKind#(mark(X)) =#> isNatKind#(X) isNatKind#(active(X)) =#> isNatKind#(X) P_5: U13#(mark(X), Y, Z) =#> U13#(X, Y, Z) U13#(X, mark(Y), Z) =#> U13#(X, Y, Z) U13#(X, Y, mark(Z)) =#> U13#(X, Y, Z) U13#(active(X), Y, Z) =#> U13#(X, Y, Z) U13#(X, active(Y), Z) =#> U13#(X, Y, Z) U13#(X, Y, active(Z)) =#> U13#(X, Y, Z) P_6: U14#(mark(X), Y, Z) =#> U14#(X, Y, Z) U14#(X, mark(Y), Z) =#> U14#(X, Y, Z) U14#(X, Y, mark(Z)) =#> U14#(X, Y, Z) U14#(active(X), Y, Z) =#> U14#(X, Y, Z) U14#(X, active(Y), Z) =#> U14#(X, Y, Z) U14#(X, Y, active(Z)) =#> U14#(X, Y, Z) P_7: U15#(mark(X), Y) =#> U15#(X, Y) U15#(X, mark(Y)) =#> U15#(X, Y) U15#(active(X), Y) =#> U15#(X, Y) U15#(X, active(Y)) =#> U15#(X, Y) P_8: isNat#(mark(X)) =#> isNat#(X) isNat#(active(X)) =#> isNat#(X) P_9: U16#(mark(X)) =#> U16#(X) U16#(active(X)) =#> U16#(X) P_10: U21#(mark(X), Y) =#> U21#(X, Y) U21#(X, mark(Y)) =#> U21#(X, Y) U21#(active(X), Y) =#> U21#(X, Y) U21#(X, active(Y)) =#> U21#(X, Y) P_11: U22#(mark(X), Y) =#> U22#(X, Y) U22#(X, mark(Y)) =#> U22#(X, Y) U22#(active(X), Y) =#> U22#(X, Y) U22#(X, active(Y)) =#> U22#(X, Y) P_12: U23#(mark(X)) =#> U23#(X) U23#(active(X)) =#> U23#(X) P_13: U31#(mark(X), Y) =#> U31#(X, Y) U31#(X, mark(Y)) =#> U31#(X, Y) U31#(active(X), Y) =#> U31#(X, Y) U31#(X, active(Y)) =#> U31#(X, Y) P_14: U32#(mark(X)) =#> U32#(X) U32#(active(X)) =#> U32#(X) P_15: U41#(mark(X)) =#> U41#(X) U41#(active(X)) =#> U41#(X) P_16: U51#(mark(X), Y) =#> U51#(X, Y) U51#(X, mark(Y)) =#> U51#(X, Y) U51#(active(X), Y) =#> U51#(X, Y) U51#(X, active(Y)) =#> U51#(X, Y) P_17: U52#(mark(X), Y) =#> U52#(X, Y) U52#(X, mark(Y)) =#> U52#(X, Y) U52#(active(X), Y) =#> U52#(X, Y) U52#(X, active(Y)) =#> U52#(X, Y) P_18: U61#(mark(X), Y, Z) =#> U61#(X, Y, Z) U61#(X, mark(Y), Z) =#> U61#(X, Y, Z) U61#(X, Y, mark(Z)) =#> U61#(X, Y, Z) U61#(active(X), Y, Z) =#> U61#(X, Y, Z) U61#(X, active(Y), Z) =#> U61#(X, Y, Z) U61#(X, Y, active(Z)) =#> U61#(X, Y, Z) P_19: U62#(mark(X), Y, Z) =#> U62#(X, Y, Z) U62#(X, mark(Y), Z) =#> U62#(X, Y, Z) U62#(X, Y, mark(Z)) =#> U62#(X, Y, Z) U62#(active(X), Y, Z) =#> U62#(X, Y, Z) U62#(X, active(Y), Z) =#> U62#(X, Y, Z) U62#(X, Y, active(Z)) =#> U62#(X, Y, Z) P_20: U63#(mark(X), Y, Z) =#> U63#(X, Y, Z) U63#(X, mark(Y), Z) =#> U63#(X, Y, Z) U63#(X, Y, mark(Z)) =#> U63#(X, Y, Z) U63#(active(X), Y, Z) =#> U63#(X, Y, Z) U63#(X, active(Y), Z) =#> U63#(X, Y, Z) U63#(X, Y, active(Z)) =#> U63#(X, Y, Z) P_21: U64#(mark(X), Y, Z) =#> U64#(X, Y, Z) U64#(X, mark(Y), Z) =#> U64#(X, Y, Z) U64#(X, Y, mark(Z)) =#> U64#(X, Y, Z) U64#(active(X), Y, Z) =#> U64#(X, Y, Z) U64#(X, active(Y), Z) =#> U64#(X, Y, Z) U64#(X, Y, active(Z)) =#> U64#(X, Y, Z) P_22: s#(mark(X)) =#> s#(X) s#(active(X)) =#> s#(X) P_23: plus#(mark(X), Y) =#> plus#(X, Y) plus#(X, mark(Y)) =#> plus#(X, Y) plus#(active(X), Y) =#> plus#(X, Y) plus#(X, active(Y)) =#> plus#(X, Y) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_0, R_0, m, f) by (P_1, R_0, m, f), (P_2, R_0, m, f), (P_3, R_0, m, f), (P_4, R_0, m, f), (P_5, R_0, m, f), (P_6, R_0, m, f), (P_7, R_0, m, f), (P_8, R_0, m, f), (P_9, R_0, m, f), (P_10, R_0, m, f), (P_11, R_0, m, f), (P_12, R_0, m, f), (P_13, R_0, m, f), (P_14, R_0, m, f), (P_15, R_0, m, f), (P_16, R_0, m, f), (P_17, R_0, m, f), (P_18, R_0, m, f), (P_19, R_0, m, f), (P_20, R_0, m, f), (P_21, R_0, m, f), (P_22, R_0, m, f) and (P_23, R_0, m, f). Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative), (P_19, R_0, minimal, formative), (P_20, R_0, minimal, formative), (P_21, R_0, minimal, formative), (P_22, R_0, minimal, formative) and (P_23, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_23, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(plus#) = 1 Thus, we can orient the dependency pairs as follows: nu(plus#(mark(X), Y)) = mark(X) |> X = nu(plus#(X, Y)) nu(plus#(X, mark(Y))) = X = X = nu(plus#(X, Y)) nu(plus#(active(X), Y)) = active(X) |> X = nu(plus#(X, Y)) nu(plus#(X, active(Y))) = X = X = nu(plus#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_23, R_0, minimal, f) by (P_24, R_0, minimal, f), where P_24 contains: plus#(X, mark(Y)) =#> plus#(X, Y) plus#(X, active(Y)) =#> plus#(X, Y) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative), (P_19, R_0, minimal, formative), (P_20, R_0, minimal, formative), (P_21, R_0, minimal, formative), (P_22, R_0, minimal, formative) and (P_24, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_24, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(plus#) = 2 Thus, we can orient the dependency pairs as follows: nu(plus#(X, mark(Y))) = mark(Y) |> Y = nu(plus#(X, Y)) nu(plus#(X, active(Y))) = active(Y) |> Y = nu(plus#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_24, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative), (P_19, R_0, minimal, formative), (P_20, R_0, minimal, formative), (P_21, R_0, minimal, formative) and (P_22, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_22, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(s#) = 1 Thus, we can orient the dependency pairs as follows: nu(s#(mark(X))) = mark(X) |> X = nu(s#(X)) nu(s#(active(X))) = active(X) |> X = nu(s#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_22, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative), (P_19, R_0, minimal, formative), (P_20, R_0, minimal, formative) and (P_21, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_21, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U64#) = 1 Thus, we can orient the dependency pairs as follows: nu(U64#(mark(X), Y, Z)) = mark(X) |> X = nu(U64#(X, Y, Z)) nu(U64#(X, mark(Y), Z)) = X = X = nu(U64#(X, Y, Z)) nu(U64#(X, Y, mark(Z))) = X = X = nu(U64#(X, Y, Z)) nu(U64#(active(X), Y, Z)) = active(X) |> X = nu(U64#(X, Y, Z)) nu(U64#(X, active(Y), Z)) = X = X = nu(U64#(X, Y, Z)) nu(U64#(X, Y, active(Z))) = X = X = nu(U64#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_21, R_0, minimal, f) by (P_25, R_0, minimal, f), where P_25 contains: U64#(X, mark(Y), Z) =#> U64#(X, Y, Z) U64#(X, Y, mark(Z)) =#> U64#(X, Y, Z) U64#(X, active(Y), Z) =#> U64#(X, Y, Z) U64#(X, Y, active(Z)) =#> U64#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative), (P_19, R_0, minimal, formative), (P_20, R_0, minimal, formative) and (P_25, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_25, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U64#) = 2 Thus, we can orient the dependency pairs as follows: nu(U64#(X, mark(Y), Z)) = mark(Y) |> Y = nu(U64#(X, Y, Z)) nu(U64#(X, Y, mark(Z))) = Y = Y = nu(U64#(X, Y, Z)) nu(U64#(X, active(Y), Z)) = active(Y) |> Y = nu(U64#(X, Y, Z)) nu(U64#(X, Y, active(Z))) = Y = Y = nu(U64#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_25, R_0, minimal, f) by (P_26, R_0, minimal, f), where P_26 contains: U64#(X, Y, mark(Z)) =#> U64#(X, Y, Z) U64#(X, Y, active(Z)) =#> U64#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative), (P_19, R_0, minimal, formative), (P_20, R_0, minimal, formative) and (P_26, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_26, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U64#) = 3 Thus, we can orient the dependency pairs as follows: nu(U64#(X, Y, mark(Z))) = mark(Z) |> Z = nu(U64#(X, Y, Z)) nu(U64#(X, Y, active(Z))) = active(Z) |> Z = nu(U64#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_26, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative), (P_19, R_0, minimal, formative) and (P_20, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_20, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U63#) = 1 Thus, we can orient the dependency pairs as follows: nu(U63#(mark(X), Y, Z)) = mark(X) |> X = nu(U63#(X, Y, Z)) nu(U63#(X, mark(Y), Z)) = X = X = nu(U63#(X, Y, Z)) nu(U63#(X, Y, mark(Z))) = X = X = nu(U63#(X, Y, Z)) nu(U63#(active(X), Y, Z)) = active(X) |> X = nu(U63#(X, Y, Z)) nu(U63#(X, active(Y), Z)) = X = X = nu(U63#(X, Y, Z)) nu(U63#(X, Y, active(Z))) = X = X = nu(U63#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_20, R_0, minimal, f) by (P_27, R_0, minimal, f), where P_27 contains: U63#(X, mark(Y), Z) =#> U63#(X, Y, Z) U63#(X, Y, mark(Z)) =#> U63#(X, Y, Z) U63#(X, active(Y), Z) =#> U63#(X, Y, Z) U63#(X, Y, active(Z)) =#> U63#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative), (P_19, R_0, minimal, formative) and (P_27, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_27, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U63#) = 2 Thus, we can orient the dependency pairs as follows: nu(U63#(X, mark(Y), Z)) = mark(Y) |> Y = nu(U63#(X, Y, Z)) nu(U63#(X, Y, mark(Z))) = Y = Y = nu(U63#(X, Y, Z)) nu(U63#(X, active(Y), Z)) = active(Y) |> Y = nu(U63#(X, Y, Z)) nu(U63#(X, Y, active(Z))) = Y = Y = nu(U63#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_27, R_0, minimal, f) by (P_28, R_0, minimal, f), where P_28 contains: U63#(X, Y, mark(Z)) =#> U63#(X, Y, Z) U63#(X, Y, active(Z)) =#> U63#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative), (P_19, R_0, minimal, formative) and (P_28, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_28, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U63#) = 3 Thus, we can orient the dependency pairs as follows: nu(U63#(X, Y, mark(Z))) = mark(Z) |> Z = nu(U63#(X, Y, Z)) nu(U63#(X, Y, active(Z))) = active(Z) |> Z = nu(U63#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_28, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative) and (P_19, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_19, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U62#) = 1 Thus, we can orient the dependency pairs as follows: nu(U62#(mark(X), Y, Z)) = mark(X) |> X = nu(U62#(X, Y, Z)) nu(U62#(X, mark(Y), Z)) = X = X = nu(U62#(X, Y, Z)) nu(U62#(X, Y, mark(Z))) = X = X = nu(U62#(X, Y, Z)) nu(U62#(active(X), Y, Z)) = active(X) |> X = nu(U62#(X, Y, Z)) nu(U62#(X, active(Y), Z)) = X = X = nu(U62#(X, Y, Z)) nu(U62#(X, Y, active(Z))) = X = X = nu(U62#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_19, R_0, minimal, f) by (P_29, R_0, minimal, f), where P_29 contains: U62#(X, mark(Y), Z) =#> U62#(X, Y, Z) U62#(X, Y, mark(Z)) =#> U62#(X, Y, Z) U62#(X, active(Y), Z) =#> U62#(X, Y, Z) U62#(X, Y, active(Z)) =#> U62#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative) and (P_29, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_29, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U62#) = 2 Thus, we can orient the dependency pairs as follows: nu(U62#(X, mark(Y), Z)) = mark(Y) |> Y = nu(U62#(X, Y, Z)) nu(U62#(X, Y, mark(Z))) = Y = Y = nu(U62#(X, Y, Z)) nu(U62#(X, active(Y), Z)) = active(Y) |> Y = nu(U62#(X, Y, Z)) nu(U62#(X, Y, active(Z))) = Y = Y = nu(U62#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_29, R_0, minimal, f) by (P_30, R_0, minimal, f), where P_30 contains: U62#(X, Y, mark(Z)) =#> U62#(X, Y, Z) U62#(X, Y, active(Z)) =#> U62#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative), (P_18, R_0, minimal, formative) and (P_30, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_30, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U62#) = 3 Thus, we can orient the dependency pairs as follows: nu(U62#(X, Y, mark(Z))) = mark(Z) |> Z = nu(U62#(X, Y, Z)) nu(U62#(X, Y, active(Z))) = active(Z) |> Z = nu(U62#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_30, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative) and (P_18, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_18, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U61#) = 1 Thus, we can orient the dependency pairs as follows: nu(U61#(mark(X), Y, Z)) = mark(X) |> X = nu(U61#(X, Y, Z)) nu(U61#(X, mark(Y), Z)) = X = X = nu(U61#(X, Y, Z)) nu(U61#(X, Y, mark(Z))) = X = X = nu(U61#(X, Y, Z)) nu(U61#(active(X), Y, Z)) = active(X) |> X = nu(U61#(X, Y, Z)) nu(U61#(X, active(Y), Z)) = X = X = nu(U61#(X, Y, Z)) nu(U61#(X, Y, active(Z))) = X = X = nu(U61#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_18, R_0, minimal, f) by (P_31, R_0, minimal, f), where P_31 contains: U61#(X, mark(Y), Z) =#> U61#(X, Y, Z) U61#(X, Y, mark(Z)) =#> U61#(X, Y, Z) U61#(X, active(Y), Z) =#> U61#(X, Y, Z) U61#(X, Y, active(Z)) =#> U61#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative) and (P_31, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_31, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U61#) = 2 Thus, we can orient the dependency pairs as follows: nu(U61#(X, mark(Y), Z)) = mark(Y) |> Y = nu(U61#(X, Y, Z)) nu(U61#(X, Y, mark(Z))) = Y = Y = nu(U61#(X, Y, Z)) nu(U61#(X, active(Y), Z)) = active(Y) |> Y = nu(U61#(X, Y, Z)) nu(U61#(X, Y, active(Z))) = Y = Y = nu(U61#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_31, R_0, minimal, f) by (P_32, R_0, minimal, f), where P_32 contains: U61#(X, Y, mark(Z)) =#> U61#(X, Y, Z) U61#(X, Y, active(Z)) =#> U61#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative), (P_17, R_0, minimal, formative) and (P_32, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_32, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U61#) = 3 Thus, we can orient the dependency pairs as follows: nu(U61#(X, Y, mark(Z))) = mark(Z) |> Z = nu(U61#(X, Y, Z)) nu(U61#(X, Y, active(Z))) = active(Z) |> Z = nu(U61#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_32, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative) and (P_17, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_17, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U52#) = 1 Thus, we can orient the dependency pairs as follows: nu(U52#(mark(X), Y)) = mark(X) |> X = nu(U52#(X, Y)) nu(U52#(X, mark(Y))) = X = X = nu(U52#(X, Y)) nu(U52#(active(X), Y)) = active(X) |> X = nu(U52#(X, Y)) nu(U52#(X, active(Y))) = X = X = nu(U52#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_17, R_0, minimal, f) by (P_33, R_0, minimal, f), where P_33 contains: U52#(X, mark(Y)) =#> U52#(X, Y) U52#(X, active(Y)) =#> U52#(X, Y) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative), (P_16, R_0, minimal, formative) and (P_33, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_33, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U52#) = 2 Thus, we can orient the dependency pairs as follows: nu(U52#(X, mark(Y))) = mark(Y) |> Y = nu(U52#(X, Y)) nu(U52#(X, active(Y))) = active(Y) |> Y = nu(U52#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_33, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative) and (P_16, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_16, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U51#) = 1 Thus, we can orient the dependency pairs as follows: nu(U51#(mark(X), Y)) = mark(X) |> X = nu(U51#(X, Y)) nu(U51#(X, mark(Y))) = X = X = nu(U51#(X, Y)) nu(U51#(active(X), Y)) = active(X) |> X = nu(U51#(X, Y)) nu(U51#(X, active(Y))) = X = X = nu(U51#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_16, R_0, minimal, f) by (P_34, R_0, minimal, f), where P_34 contains: U51#(X, mark(Y)) =#> U51#(X, Y) U51#(X, active(Y)) =#> U51#(X, Y) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative), (P_15, R_0, minimal, formative) and (P_34, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_34, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U51#) = 2 Thus, we can orient the dependency pairs as follows: nu(U51#(X, mark(Y))) = mark(Y) |> Y = nu(U51#(X, Y)) nu(U51#(X, active(Y))) = active(Y) |> Y = nu(U51#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_34, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative), (P_14, R_0, minimal, formative) and (P_15, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_15, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U41#) = 1 Thus, we can orient the dependency pairs as follows: nu(U41#(mark(X))) = mark(X) |> X = nu(U41#(X)) nu(U41#(active(X))) = active(X) |> X = nu(U41#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_15, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative), (P_13, R_0, minimal, formative) and (P_14, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_14, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U32#) = 1 Thus, we can orient the dependency pairs as follows: nu(U32#(mark(X))) = mark(X) |> X = nu(U32#(X)) nu(U32#(active(X))) = active(X) |> X = nu(U32#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_14, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative) and (P_13, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_13, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U31#) = 1 Thus, we can orient the dependency pairs as follows: nu(U31#(mark(X), Y)) = mark(X) |> X = nu(U31#(X, Y)) nu(U31#(X, mark(Y))) = X = X = nu(U31#(X, Y)) nu(U31#(active(X), Y)) = active(X) |> X = nu(U31#(X, Y)) nu(U31#(X, active(Y))) = X = X = nu(U31#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_13, R_0, minimal, f) by (P_35, R_0, minimal, f), where P_35 contains: U31#(X, mark(Y)) =#> U31#(X, Y) U31#(X, active(Y)) =#> U31#(X, Y) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative), (P_12, R_0, minimal, formative) and (P_35, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_35, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U31#) = 2 Thus, we can orient the dependency pairs as follows: nu(U31#(X, mark(Y))) = mark(Y) |> Y = nu(U31#(X, Y)) nu(U31#(X, active(Y))) = active(Y) |> Y = nu(U31#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_35, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative), (P_11, R_0, minimal, formative) and (P_12, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_12, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U23#) = 1 Thus, we can orient the dependency pairs as follows: nu(U23#(mark(X))) = mark(X) |> X = nu(U23#(X)) nu(U23#(active(X))) = active(X) |> X = nu(U23#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_12, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative) and (P_11, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_11, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U22#) = 1 Thus, we can orient the dependency pairs as follows: nu(U22#(mark(X), Y)) = mark(X) |> X = nu(U22#(X, Y)) nu(U22#(X, mark(Y))) = X = X = nu(U22#(X, Y)) nu(U22#(active(X), Y)) = active(X) |> X = nu(U22#(X, Y)) nu(U22#(X, active(Y))) = X = X = nu(U22#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_11, R_0, minimal, f) by (P_36, R_0, minimal, f), where P_36 contains: U22#(X, mark(Y)) =#> U22#(X, Y) U22#(X, active(Y)) =#> U22#(X, Y) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative), (P_10, R_0, minimal, formative) and (P_36, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_36, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U22#) = 2 Thus, we can orient the dependency pairs as follows: nu(U22#(X, mark(Y))) = mark(Y) |> Y = nu(U22#(X, Y)) nu(U22#(X, active(Y))) = active(Y) |> Y = nu(U22#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_36, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative) and (P_10, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_10, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U21#) = 1 Thus, we can orient the dependency pairs as follows: nu(U21#(mark(X), Y)) = mark(X) |> X = nu(U21#(X, Y)) nu(U21#(X, mark(Y))) = X = X = nu(U21#(X, Y)) nu(U21#(active(X), Y)) = active(X) |> X = nu(U21#(X, Y)) nu(U21#(X, active(Y))) = X = X = nu(U21#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_10, R_0, minimal, f) by (P_37, R_0, minimal, f), where P_37 contains: U21#(X, mark(Y)) =#> U21#(X, Y) U21#(X, active(Y)) =#> U21#(X, Y) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative), (P_9, R_0, minimal, formative) and (P_37, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_37, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U21#) = 2 Thus, we can orient the dependency pairs as follows: nu(U21#(X, mark(Y))) = mark(Y) |> Y = nu(U21#(X, Y)) nu(U21#(X, active(Y))) = active(Y) |> Y = nu(U21#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_37, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative), (P_8, R_0, minimal, formative) and (P_9, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_9, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U16#) = 1 Thus, we can orient the dependency pairs as follows: nu(U16#(mark(X))) = mark(X) |> X = nu(U16#(X)) nu(U16#(active(X))) = active(X) |> X = nu(U16#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_9, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative), (P_7, R_0, minimal, formative) and (P_8, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_8, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(isNat#) = 1 Thus, we can orient the dependency pairs as follows: nu(isNat#(mark(X))) = mark(X) |> X = nu(isNat#(X)) nu(isNat#(active(X))) = active(X) |> X = nu(isNat#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_8, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative) and (P_7, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_7, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U15#) = 1 Thus, we can orient the dependency pairs as follows: nu(U15#(mark(X), Y)) = mark(X) |> X = nu(U15#(X, Y)) nu(U15#(X, mark(Y))) = X = X = nu(U15#(X, Y)) nu(U15#(active(X), Y)) = active(X) |> X = nu(U15#(X, Y)) nu(U15#(X, active(Y))) = X = X = nu(U15#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_7, R_0, minimal, f) by (P_38, R_0, minimal, f), where P_38 contains: U15#(X, mark(Y)) =#> U15#(X, Y) U15#(X, active(Y)) =#> U15#(X, Y) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative), (P_6, R_0, minimal, formative) and (P_38, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_38, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U15#) = 2 Thus, we can orient the dependency pairs as follows: nu(U15#(X, mark(Y))) = mark(Y) |> Y = nu(U15#(X, Y)) nu(U15#(X, active(Y))) = active(Y) |> Y = nu(U15#(X, Y)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_38, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative) and (P_6, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_6, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U14#) = 1 Thus, we can orient the dependency pairs as follows: nu(U14#(mark(X), Y, Z)) = mark(X) |> X = nu(U14#(X, Y, Z)) nu(U14#(X, mark(Y), Z)) = X = X = nu(U14#(X, Y, Z)) nu(U14#(X, Y, mark(Z))) = X = X = nu(U14#(X, Y, Z)) nu(U14#(active(X), Y, Z)) = active(X) |> X = nu(U14#(X, Y, Z)) nu(U14#(X, active(Y), Z)) = X = X = nu(U14#(X, Y, Z)) nu(U14#(X, Y, active(Z))) = X = X = nu(U14#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_6, R_0, minimal, f) by (P_39, R_0, minimal, f), where P_39 contains: U14#(X, mark(Y), Z) =#> U14#(X, Y, Z) U14#(X, Y, mark(Z)) =#> U14#(X, Y, Z) U14#(X, active(Y), Z) =#> U14#(X, Y, Z) U14#(X, Y, active(Z)) =#> U14#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative) and (P_39, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_39, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U14#) = 2 Thus, we can orient the dependency pairs as follows: nu(U14#(X, mark(Y), Z)) = mark(Y) |> Y = nu(U14#(X, Y, Z)) nu(U14#(X, Y, mark(Z))) = Y = Y = nu(U14#(X, Y, Z)) nu(U14#(X, active(Y), Z)) = active(Y) |> Y = nu(U14#(X, Y, Z)) nu(U14#(X, Y, active(Z))) = Y = Y = nu(U14#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_39, R_0, minimal, f) by (P_40, R_0, minimal, f), where P_40 contains: U14#(X, Y, mark(Z)) =#> U14#(X, Y, Z) U14#(X, Y, active(Z)) =#> U14#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative), (P_5, R_0, minimal, formative) and (P_40, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_40, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U14#) = 3 Thus, we can orient the dependency pairs as follows: nu(U14#(X, Y, mark(Z))) = mark(Z) |> Z = nu(U14#(X, Y, Z)) nu(U14#(X, Y, active(Z))) = active(Z) |> Z = nu(U14#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_40, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative) and (P_5, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_5, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U13#) = 1 Thus, we can orient the dependency pairs as follows: nu(U13#(mark(X), Y, Z)) = mark(X) |> X = nu(U13#(X, Y, Z)) nu(U13#(X, mark(Y), Z)) = X = X = nu(U13#(X, Y, Z)) nu(U13#(X, Y, mark(Z))) = X = X = nu(U13#(X, Y, Z)) nu(U13#(active(X), Y, Z)) = active(X) |> X = nu(U13#(X, Y, Z)) nu(U13#(X, active(Y), Z)) = X = X = nu(U13#(X, Y, Z)) nu(U13#(X, Y, active(Z))) = X = X = nu(U13#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_5, R_0, minimal, f) by (P_41, R_0, minimal, f), where P_41 contains: U13#(X, mark(Y), Z) =#> U13#(X, Y, Z) U13#(X, Y, mark(Z)) =#> U13#(X, Y, Z) U13#(X, active(Y), Z) =#> U13#(X, Y, Z) U13#(X, Y, active(Z)) =#> U13#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative) and (P_41, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_41, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U13#) = 2 Thus, we can orient the dependency pairs as follows: nu(U13#(X, mark(Y), Z)) = mark(Y) |> Y = nu(U13#(X, Y, Z)) nu(U13#(X, Y, mark(Z))) = Y = Y = nu(U13#(X, Y, Z)) nu(U13#(X, active(Y), Z)) = active(Y) |> Y = nu(U13#(X, Y, Z)) nu(U13#(X, Y, active(Z))) = Y = Y = nu(U13#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_41, R_0, minimal, f) by (P_42, R_0, minimal, f), where P_42 contains: U13#(X, Y, mark(Z)) =#> U13#(X, Y, Z) U13#(X, Y, active(Z)) =#> U13#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative), (P_4, R_0, minimal, formative) and (P_42, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_42, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U13#) = 3 Thus, we can orient the dependency pairs as follows: nu(U13#(X, Y, mark(Z))) = mark(Z) |> Z = nu(U13#(X, Y, Z)) nu(U13#(X, Y, active(Z))) = active(Z) |> Z = nu(U13#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_42, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative), (P_3, R_0, minimal, formative) and (P_4, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_4, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(isNatKind#) = 1 Thus, we can orient the dependency pairs as follows: nu(isNatKind#(mark(X))) = mark(X) |> X = nu(isNatKind#(X)) nu(isNatKind#(active(X))) = active(X) |> X = nu(isNatKind#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_4, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative) and (P_3, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_3, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U12#) = 1 Thus, we can orient the dependency pairs as follows: nu(U12#(mark(X), Y, Z)) = mark(X) |> X = nu(U12#(X, Y, Z)) nu(U12#(X, mark(Y), Z)) = X = X = nu(U12#(X, Y, Z)) nu(U12#(X, Y, mark(Z))) = X = X = nu(U12#(X, Y, Z)) nu(U12#(active(X), Y, Z)) = active(X) |> X = nu(U12#(X, Y, Z)) nu(U12#(X, active(Y), Z)) = X = X = nu(U12#(X, Y, Z)) nu(U12#(X, Y, active(Z))) = X = X = nu(U12#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_3, R_0, minimal, f) by (P_43, R_0, minimal, f), where P_43 contains: U12#(X, mark(Y), Z) =#> U12#(X, Y, Z) U12#(X, Y, mark(Z)) =#> U12#(X, Y, Z) U12#(X, active(Y), Z) =#> U12#(X, Y, Z) U12#(X, Y, active(Z)) =#> U12#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative) and (P_43, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_43, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U12#) = 2 Thus, we can orient the dependency pairs as follows: nu(U12#(X, mark(Y), Z)) = mark(Y) |> Y = nu(U12#(X, Y, Z)) nu(U12#(X, Y, mark(Z))) = Y = Y = nu(U12#(X, Y, Z)) nu(U12#(X, active(Y), Z)) = active(Y) |> Y = nu(U12#(X, Y, Z)) nu(U12#(X, Y, active(Z))) = Y = Y = nu(U12#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_43, R_0, minimal, f) by (P_44, R_0, minimal, f), where P_44 contains: U12#(X, Y, mark(Z)) =#> U12#(X, Y, Z) U12#(X, Y, active(Z)) =#> U12#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative), (P_2, R_0, minimal, formative) and (P_44, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_44, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U12#) = 3 Thus, we can orient the dependency pairs as follows: nu(U12#(X, Y, mark(Z))) = mark(Z) |> Z = nu(U12#(X, Y, Z)) nu(U12#(X, Y, active(Z))) = active(Z) |> Z = nu(U12#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_44, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if each of (P_1, R_0, minimal, formative) and (P_2, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_2, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U11#) = 1 Thus, we can orient the dependency pairs as follows: nu(U11#(mark(X), Y, Z)) = mark(X) |> X = nu(U11#(X, Y, Z)) nu(U11#(X, mark(Y), Z)) = X = X = nu(U11#(X, Y, Z)) nu(U11#(X, Y, mark(Z))) = X = X = nu(U11#(X, Y, Z)) nu(U11#(active(X), Y, Z)) = active(X) |> X = nu(U11#(X, Y, Z)) nu(U11#(X, active(Y), Z)) = X = X = nu(U11#(X, Y, Z)) nu(U11#(X, Y, active(Z))) = X = X = nu(U11#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_2, R_0, minimal, f) by (P_45, R_0, minimal, f), where P_45 contains: U11#(X, mark(Y), Z) =#> U11#(X, Y, Z) U11#(X, Y, mark(Z)) =#> U11#(X, Y, Z) U11#(X, active(Y), Z) =#> U11#(X, Y, Z) U11#(X, Y, active(Z)) =#> U11#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative) and (P_45, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_45, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U11#) = 2 Thus, we can orient the dependency pairs as follows: nu(U11#(X, mark(Y), Z)) = mark(Y) |> Y = nu(U11#(X, Y, Z)) nu(U11#(X, Y, mark(Z))) = Y = Y = nu(U11#(X, Y, Z)) nu(U11#(X, active(Y), Z)) = active(Y) |> Y = nu(U11#(X, Y, Z)) nu(U11#(X, Y, active(Z))) = Y = Y = nu(U11#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_45, R_0, minimal, f) by (P_46, R_0, minimal, f), where P_46 contains: U11#(X, Y, mark(Z)) =#> U11#(X, Y, Z) U11#(X, Y, active(Z)) =#> U11#(X, Y, Z) Thus, the original system is terminating if each of (P_1, R_0, minimal, formative) and (P_46, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_46, R_0, minimal, formative). We apply the subterm criterion with the following projection function: nu(U11#) = 3 Thus, we can orient the dependency pairs as follows: nu(U11#(X, Y, mark(Z))) = mark(Z) |> Z = nu(U11#(X, Y, Z)) nu(U11#(X, Y, active(Z))) = active(Z) |> Z = nu(U11#(X, Y, Z)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_46, R_0, minimal, f) by ({}, R_0, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. Thus, the original system is terminating if (P_1, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_1, R_0, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U11(tt, X, Y)) >? mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) >? mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >? mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >? mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >? mark#(U16(isNat(X))) active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >? mark#(U23(isNat(X))) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(U51(tt, X)) >? mark#(U52(isNatKind(X), X)) active#(U52(tt, X)) >? mark#(X) active#(U61(tt, X, Y)) >? mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) >? mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) >? mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) >? mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) >? mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) active#(plus(X, 0)) >? mark#(U51(isNat(X), X)) active#(plus(X, s(Y))) >? mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) >? active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) >? mark#(X) mark#(U12(X, Y, Z)) >? active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >? mark#(X) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U13(X, Y, Z)) >? active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >? mark#(X) mark#(U14(X, Y, Z)) >? active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >? mark#(X) mark#(U15(X, Y)) >? active#(U15(mark(X), Y)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? active#(U22(mark(X), Y)) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) mark#(U51(X, Y)) >? active#(U51(mark(X), Y)) mark#(U51(X, Y)) >? mark#(X) mark#(U52(X, Y)) >? active#(U52(mark(X), Y)) mark#(U52(X, Y)) >? mark#(X) mark#(U61(X, Y, Z)) >? active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) >? mark#(X) mark#(U62(X, Y, Z)) >? active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) >? mark#(X) mark#(U63(X, Y, Z)) >? active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) >? mark#(X) mark#(U64(X, Y, Z)) >? active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) >? mark#(X) mark#(s(X)) >? mark#(X) mark#(plus(X, Y)) >? active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) U11(mark(X), Y, Z) >= U11(X, Y, Z) U11(X, mark(Y), Z) >= U11(X, Y, Z) U11(X, Y, mark(Z)) >= U11(X, Y, Z) U11(active(X), Y, Z) >= U11(X, Y, Z) U11(X, active(Y), Z) >= U11(X, Y, Z) U11(X, Y, active(Z)) >= U11(X, Y, Z) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) U51(mark(X), Y) >= U51(X, Y) U51(X, mark(Y)) >= U51(X, Y) U51(active(X), Y) >= U51(X, Y) U51(X, active(Y)) >= U51(X, Y) U52(mark(X), Y) >= U52(X, Y) U52(X, mark(Y)) >= U52(X, Y) U52(active(X), Y) >= U52(X, Y) U52(X, active(Y)) >= U52(X, Y) U61(mark(X), Y, Z) >= U61(X, Y, Z) U61(X, mark(Y), Z) >= U61(X, Y, Z) U61(X, Y, mark(Z)) >= U61(X, Y, Z) U61(active(X), Y, Z) >= U61(X, Y, Z) U61(X, active(Y), Z) >= U61(X, Y, Z) U61(X, Y, active(Z)) >= U61(X, Y, Z) U62(mark(X), Y, Z) >= U62(X, Y, Z) U62(X, mark(Y), Z) >= U62(X, Y, Z) U62(X, Y, mark(Z)) >= U62(X, Y, Z) U62(active(X), Y, Z) >= U62(X, Y, Z) U62(X, active(Y), Z) >= U62(X, Y, Z) U62(X, Y, active(Z)) >= U62(X, Y, Z) U63(mark(X), Y, Z) >= U63(X, Y, Z) U63(X, mark(Y), Z) >= U63(X, Y, Z) U63(X, Y, mark(Z)) >= U63(X, Y, Z) U63(active(X), Y, Z) >= U63(X, Y, Z) U63(X, active(Y), Z) >= U63(X, Y, Z) U63(X, Y, active(Z)) >= U63(X, Y, Z) U64(mark(X), Y, Z) >= U64(X, Y, Z) U64(X, mark(Y), Z) >= U64(X, Y, Z) U64(X, Y, mark(Z)) >= U64(X, Y, Z) U64(active(X), Y, Z) >= U64(X, Y, Z) U64(X, active(Y), Z) >= U64(X, Y, Z) U64(X, Y, active(Z)) >= U64(X, Y, Z) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 1 U11 = \y0y1y2.2y0 U12 = \y0y1y2.y0 U13 = \y0y1y2.2y0 U14 = \y0y1y2.2y0 U15 = \y0y1.y0 U16 = \y0.y0 U21 = \y0y1.2y0 U22 = \y0y1.2y0 U23 = \y0.y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.y1 + 2y0 U52 = \y0y1.y1 + 2y0 U61 = \y0y1y2.y1 + y2 + 2y0 U62 = \y0y1y2.y1 + y2 + 2y0 U63 = \y0y1y2.y1 + y2 + 2y0 U64 = \y0y1y2.y0 + y1 + y2 active = \y0.y0 active# = \y0.y0 isNat = \y0.0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.y0 plus = \y0y1.y0 + y1 s = \y0.y0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U12(isNatKind(_x0), _x0, _x1))]] [[active#(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U13(isNatKind(_x1), _x0, _x1))]] [[active#(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U14(isNatKind(_x1), _x0, _x1))]] [[active#(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U15(isNat(_x0), _x1))]] [[active#(U15(tt, _x0))]] = 0 >= 0 = [[mark#(U16(isNat(_x0)))]] [[active#(U21(tt, _x0))]] = 0 >= 0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U22(tt, _x0))]] = 0 >= 0 = [[mark#(U23(isNat(_x0)))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(U51(tt, _x0))]] = x0 >= x0 = [[mark#(U52(isNatKind(_x0), _x0))]] [[active#(U52(tt, _x0))]] = x0 >= x0 = [[mark#(_x0)]] [[active#(U61(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark#(U62(isNatKind(_x0), _x0, _x1))]] [[active#(U62(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark#(U63(isNat(_x1), _x0, _x1))]] [[active#(U63(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark#(U64(isNatKind(_x1), _x0, _x1))]] [[active#(U64(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark#(s(plus(_x1, _x0)))]] [[active#(isNat(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U11(isNatKind(_x0), _x0, _x1))]] [[active#(isNat(s(_x0)))]] = 0 >= 0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[active#(plus(_x0, 0))]] = 1 + x0 > x0 = [[mark#(U51(isNat(_x0), _x0))]] [[active#(plus(_x0, s(_x1)))]] = x0 + x1 >= x0 + x1 = [[mark#(U61(isNat(_x1), _x1, _x0))]] [[mark#(U11(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U11(mark(_x0), _x1, _x2))]] [[mark#(U11(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U12(_x0, _x1, _x2))]] = x0 >= x0 = [[active#(U12(mark(_x0), _x1, _x2))]] [[mark#(U12(_x0, _x1, _x2))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U13(mark(_x0), _x1, _x2))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U14(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U14(mark(_x0), _x1, _x2))]] [[mark#(U14(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U15(_x0, _x1))]] = x0 >= x0 = [[active#(U15(mark(_x0), _x1))]] [[mark#(U15(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 0 >= 0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U22(mark(_x0), _x1))]] [[mark#(U22(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U51(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active#(U51(mark(_x0), _x1))]] [[mark#(U51(_x0, _x1))]] = x1 + 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U52(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active#(U52(mark(_x0), _x1))]] [[mark#(U52(_x0, _x1))]] = x1 + 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U61(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active#(U61(mark(_x0), _x1, _x2))]] [[mark#(U61(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U62(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active#(U62(mark(_x0), _x1, _x2))]] [[mark#(U62(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U63(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active#(U63(mark(_x0), _x1, _x2))]] [[mark#(U63(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U64(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active#(U64(mark(_x0), _x1, _x2))]] [[mark#(U64(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 = [[mark#(_x0)]] [[mark#(s(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active#(plus(mark(_x0), mark(_x1)))]] [[mark#(plus(_x0, _x1))]] = x0 + x1 >= x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = x0 + x1 >= x1 = [[mark#(_x1)]] [[active(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U12(isNatKind(_x0), _x0, _x1))]] [[active(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U13(isNatKind(_x1), _x0, _x1))]] [[active(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U14(isNatKind(_x1), _x0, _x1))]] [[active(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U15(isNat(_x0), _x1))]] [[active(U15(tt, _x0))]] = 0 >= 0 = [[mark(U16(isNat(_x0)))]] [[active(U16(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U21(tt, _x0))]] = 0 >= 0 = [[mark(U22(isNatKind(_x0), _x0))]] [[active(U22(tt, _x0))]] = 0 >= 0 = [[mark(U23(isNat(_x0)))]] [[active(U23(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 0 >= 0 = [[mark(U32(isNatKind(_x0)))]] [[active(U32(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U51(tt, _x0))]] = x0 >= x0 = [[mark(U52(isNatKind(_x0), _x0))]] [[active(U52(tt, _x0))]] = x0 >= x0 = [[mark(_x0)]] [[active(U61(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark(U62(isNatKind(_x0), _x0, _x1))]] [[active(U62(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark(U63(isNat(_x1), _x0, _x1))]] [[active(U63(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark(U64(isNatKind(_x1), _x0, _x1))]] [[active(U64(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark(s(plus(_x1, _x0)))]] [[active(isNat(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNat(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U11(isNatKind(_x0), _x0, _x1))]] [[active(isNat(s(_x0)))]] = 0 >= 0 = [[mark(U21(isNatKind(_x0), _x0))]] [[active(isNatKind(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U31(isNatKind(_x0), _x1))]] [[active(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark(U41(isNatKind(_x0)))]] [[active(plus(_x0, 0))]] = 1 + x0 >= x0 = [[mark(U51(isNat(_x0), _x0))]] [[active(plus(_x0, s(_x1)))]] = x0 + x1 >= x0 + x1 = [[mark(U61(isNat(_x1), _x1, _x0))]] [[mark(U11(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U11(mark(_x0), _x1, _x2))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1, _x2))]] = x0 >= x0 = [[active(U12(mark(_x0), _x1, _x2))]] [[mark(isNatKind(_x0))]] = 0 >= 0 = [[active(isNatKind(_x0))]] [[mark(U13(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U13(mark(_x0), _x1, _x2))]] [[mark(U14(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U14(mark(_x0), _x1, _x2))]] [[mark(U15(_x0, _x1))]] = x0 >= x0 = [[active(U15(mark(_x0), _x1))]] [[mark(isNat(_x0))]] = 0 >= 0 = [[active(isNat(_x0))]] [[mark(U16(_x0))]] = x0 >= x0 = [[active(U16(mark(_x0)))]] [[mark(U21(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U21(mark(_x0), _x1))]] [[mark(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U22(mark(_x0), _x1))]] [[mark(U23(_x0))]] = x0 >= x0 = [[active(U23(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 >= x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0))]] = x0 >= x0 = [[active(U32(mark(_x0)))]] [[mark(U41(_x0))]] = x0 >= x0 = [[active(U41(mark(_x0)))]] [[mark(U51(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active(U51(mark(_x0), _x1))]] [[mark(U52(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active(U52(mark(_x0), _x1))]] [[mark(U61(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active(U61(mark(_x0), _x1, _x2))]] [[mark(U62(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active(U62(mark(_x0), _x1, _x2))]] [[mark(U63(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active(U63(mark(_x0), _x1, _x2))]] [[mark(U64(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U64(mark(_x0), _x1, _x2))]] [[mark(s(_x0))]] = x0 >= x0 = [[active(s(mark(_x0)))]] [[mark(plus(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(plus(mark(_x0), mark(_x1)))]] [[mark(0)]] = 1 >= 1 = [[active(0)]] [[U11(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U12(mark(_x0), _x1, _x2)]] = x0 >= x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, mark(_x1), _x2)]] = x0 >= x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, mark(_x2))]] = x0 >= x0 = [[U12(_x0, _x1, _x2)]] [[U12(active(_x0), _x1, _x2)]] = x0 >= x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, active(_x1), _x2)]] = x0 >= x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, active(_x2))]] = x0 >= x0 = [[U12(_x0, _x1, _x2)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U13(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U14(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U15(mark(_x0), _x1)]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(_x0, mark(_x1))]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(active(_x0), _x1)]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(_x0, active(_x1))]] = x0 >= x0 = [[U15(_x0, _x1)]] [[isNat(mark(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[isNat(active(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U21(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U23(mark(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U23(active(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U51(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U51(_x0, _x1)]] [[U51(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U51(_x0, _x1)]] [[U51(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U51(_x0, _x1)]] [[U51(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U51(_x0, _x1)]] [[U52(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U52(_x0, _x1)]] [[U52(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U52(_x0, _x1)]] [[U52(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U52(_x0, _x1)]] [[U52(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U52(_x0, _x1)]] [[U61(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, mark(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, _x1, mark(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U61(_x0, _x1, _x2)]] [[U61(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U61(_x0, _x1, _x2)]] [[U62(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, mark(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, _x1, mark(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U62(_x0, _x1, _x2)]] [[U62(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U62(_x0, _x1, _x2)]] [[U63(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, mark(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, _x1, mark(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U63(_x0, _x1, _x2)]] [[U63(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U63(_x0, _x1, _x2)]] [[U64(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U64(_x0, _x1, _x2)]] [[U64(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U64(_x0, _x1, _x2)]] [[s(mark(_x0))]] = x0 >= x0 = [[s(_x0)]] [[s(active(_x0))]] = x0 >= x0 = [[s(_x0)]] [[plus(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[plus(_x0, _x1)]] [[plus(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[plus(_x0, _x1)]] [[plus(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[plus(_x0, _x1)]] [[plus(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[plus(_x0, _x1)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_1, R_0, minimal, formative) by (P_47, R_0, minimal, formative), where P_47 consists of: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(U51(tt, X)) =#> mark#(U52(isNatKind(X), X)) active#(U52(tt, X)) =#> mark#(X) active#(U61(tt, X, Y)) =#> mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) =#> mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) =#> mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) =#> mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) active#(plus(X, s(Y))) =#> mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) mark#(U51(X, Y)) =#> active#(U51(mark(X), Y)) mark#(U51(X, Y)) =#> mark#(X) mark#(U52(X, Y)) =#> active#(U52(mark(X), Y)) mark#(U52(X, Y)) =#> mark#(X) mark#(U61(X, Y, Z)) =#> active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) =#> mark#(X) mark#(U62(X, Y, Z)) =#> active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) =#> mark#(X) mark#(U63(X, Y, Z)) =#> active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) =#> mark#(X) mark#(U64(X, Y, Z)) =#> active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) =#> mark#(X) mark#(s(X)) =#> mark#(X) mark#(plus(X, Y)) =#> active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) Thus, the original system is terminating if (P_47, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_47, R_0, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U11(tt, X, Y)) >? mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) >? mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >? mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >? mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >? mark#(U16(isNat(X))) active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >? mark#(U23(isNat(X))) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(U51(tt, X)) >? mark#(U52(isNatKind(X), X)) active#(U52(tt, X)) >? mark#(X) active#(U61(tt, X, Y)) >? mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) >? mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) >? mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) >? mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) >? mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) active#(plus(X, s(Y))) >? mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) >? active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) >? mark#(X) mark#(U12(X, Y, Z)) >? active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >? mark#(X) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U13(X, Y, Z)) >? active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >? mark#(X) mark#(U14(X, Y, Z)) >? active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >? mark#(X) mark#(U15(X, Y)) >? active#(U15(mark(X), Y)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? active#(U22(mark(X), Y)) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) mark#(U51(X, Y)) >? active#(U51(mark(X), Y)) mark#(U51(X, Y)) >? mark#(X) mark#(U52(X, Y)) >? active#(U52(mark(X), Y)) mark#(U52(X, Y)) >? mark#(X) mark#(U61(X, Y, Z)) >? active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) >? mark#(X) mark#(U62(X, Y, Z)) >? active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) >? mark#(X) mark#(U63(X, Y, Z)) >? active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) >? mark#(X) mark#(U64(X, Y, Z)) >? active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) >? mark#(X) mark#(s(X)) >? mark#(X) mark#(plus(X, Y)) >? active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) U11(mark(X), Y, Z) >= U11(X, Y, Z) U11(X, mark(Y), Z) >= U11(X, Y, Z) U11(X, Y, mark(Z)) >= U11(X, Y, Z) U11(active(X), Y, Z) >= U11(X, Y, Z) U11(X, active(Y), Z) >= U11(X, Y, Z) U11(X, Y, active(Z)) >= U11(X, Y, Z) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) U51(mark(X), Y) >= U51(X, Y) U51(X, mark(Y)) >= U51(X, Y) U51(active(X), Y) >= U51(X, Y) U51(X, active(Y)) >= U51(X, Y) U52(mark(X), Y) >= U52(X, Y) U52(X, mark(Y)) >= U52(X, Y) U52(active(X), Y) >= U52(X, Y) U52(X, active(Y)) >= U52(X, Y) U61(mark(X), Y, Z) >= U61(X, Y, Z) U61(X, mark(Y), Z) >= U61(X, Y, Z) U61(X, Y, mark(Z)) >= U61(X, Y, Z) U61(active(X), Y, Z) >= U61(X, Y, Z) U61(X, active(Y), Z) >= U61(X, Y, Z) U61(X, Y, active(Z)) >= U61(X, Y, Z) U62(mark(X), Y, Z) >= U62(X, Y, Z) U62(X, mark(Y), Z) >= U62(X, Y, Z) U62(X, Y, mark(Z)) >= U62(X, Y, Z) U62(active(X), Y, Z) >= U62(X, Y, Z) U62(X, active(Y), Z) >= U62(X, Y, Z) U62(X, Y, active(Z)) >= U62(X, Y, Z) U63(mark(X), Y, Z) >= U63(X, Y, Z) U63(X, mark(Y), Z) >= U63(X, Y, Z) U63(X, Y, mark(Z)) >= U63(X, Y, Z) U63(active(X), Y, Z) >= U63(X, Y, Z) U63(X, active(Y), Z) >= U63(X, Y, Z) U63(X, Y, active(Z)) >= U63(X, Y, Z) U64(mark(X), Y, Z) >= U64(X, Y, Z) U64(X, mark(Y), Z) >= U64(X, Y, Z) U64(X, Y, mark(Z)) >= U64(X, Y, Z) U64(active(X), Y, Z) >= U64(X, Y, Z) U64(X, active(Y), Z) >= U64(X, Y, Z) U64(X, Y, active(Z)) >= U64(X, Y, Z) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 1 U11 = \y0y1y2.2y0 U12 = \y0y1y2.2y0 U13 = \y0y1y2.2y0 U14 = \y0y1y2.y0 U15 = \y0y1.2y0 U16 = \y0.y0 U21 = \y0y1.2y0 U22 = \y0y1.2y0 U23 = \y0.y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.1 + y0 + y1 U52 = \y0y1.y0 + y1 U61 = \y0y1y2.y0 + 2y1 + 2y2 U62 = \y0y1y2.2y0 + 2y1 + 2y2 U63 = \y0y1y2.2y0 + 2y1 + 2y2 U64 = \y0y1y2.2y0 + 2y1 + 2y2 active = \y0.y0 active# = \y0.y0 isNat = \y0.0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.y0 plus = \y0y1.2y0 + 2y1 s = \y0.y0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U12(isNatKind(_x0), _x0, _x1))]] [[active#(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U13(isNatKind(_x1), _x0, _x1))]] [[active#(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U14(isNatKind(_x1), _x0, _x1))]] [[active#(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U15(isNat(_x0), _x1))]] [[active#(U15(tt, _x0))]] = 0 >= 0 = [[mark#(U16(isNat(_x0)))]] [[active#(U21(tt, _x0))]] = 0 >= 0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U22(tt, _x0))]] = 0 >= 0 = [[mark#(U23(isNat(_x0)))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(U51(tt, _x0))]] = 1 + x0 > x0 = [[mark#(U52(isNatKind(_x0), _x0))]] [[active#(U52(tt, _x0))]] = x0 >= x0 = [[mark#(_x0)]] [[active#(U61(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark#(U62(isNatKind(_x0), _x0, _x1))]] [[active#(U62(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark#(U63(isNat(_x1), _x0, _x1))]] [[active#(U63(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark#(U64(isNatKind(_x1), _x0, _x1))]] [[active#(U64(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark#(s(plus(_x1, _x0)))]] [[active#(isNat(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U11(isNatKind(_x0), _x0, _x1))]] [[active#(isNat(s(_x0)))]] = 0 >= 0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[active#(plus(_x0, s(_x1)))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark#(U61(isNat(_x1), _x1, _x0))]] [[mark#(U11(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U11(mark(_x0), _x1, _x2))]] [[mark#(U11(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U12(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U12(mark(_x0), _x1, _x2))]] [[mark#(U12(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U13(mark(_x0), _x1, _x2))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U14(_x0, _x1, _x2))]] = x0 >= x0 = [[active#(U14(mark(_x0), _x1, _x2))]] [[mark#(U14(_x0, _x1, _x2))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U15(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U15(mark(_x0), _x1))]] [[mark#(U15(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 0 >= 0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U22(mark(_x0), _x1))]] [[mark#(U22(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U51(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active#(U51(mark(_x0), _x1))]] [[mark#(U51(_x0, _x1))]] = 1 + x0 + x1 > x0 = [[mark#(_x0)]] [[mark#(U52(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active#(U52(mark(_x0), _x1))]] [[mark#(U52(_x0, _x1))]] = x0 + x1 >= x0 = [[mark#(_x0)]] [[mark#(U61(_x0, _x1, _x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[active#(U61(mark(_x0), _x1, _x2))]] [[mark#(U61(_x0, _x1, _x2))]] = x0 + 2x1 + 2x2 >= x0 = [[mark#(_x0)]] [[mark#(U62(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[active#(U62(mark(_x0), _x1, _x2))]] [[mark#(U62(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x0 = [[mark#(_x0)]] [[mark#(U63(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[active#(U63(mark(_x0), _x1, _x2))]] [[mark#(U63(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x0 = [[mark#(_x0)]] [[mark#(U64(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[active#(U64(mark(_x0), _x1, _x2))]] [[mark#(U64(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x0 = [[mark#(_x0)]] [[mark#(s(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[active#(plus(mark(_x0), mark(_x1)))]] [[mark#(plus(_x0, _x1))]] = 2x0 + 2x1 >= x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = 2x0 + 2x1 >= x1 = [[mark#(_x1)]] [[active(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U12(isNatKind(_x0), _x0, _x1))]] [[active(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U13(isNatKind(_x1), _x0, _x1))]] [[active(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U14(isNatKind(_x1), _x0, _x1))]] [[active(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U15(isNat(_x0), _x1))]] [[active(U15(tt, _x0))]] = 0 >= 0 = [[mark(U16(isNat(_x0)))]] [[active(U16(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U21(tt, _x0))]] = 0 >= 0 = [[mark(U22(isNatKind(_x0), _x0))]] [[active(U22(tt, _x0))]] = 0 >= 0 = [[mark(U23(isNat(_x0)))]] [[active(U23(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 0 >= 0 = [[mark(U32(isNatKind(_x0)))]] [[active(U32(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U51(tt, _x0))]] = 1 + x0 >= x0 = [[mark(U52(isNatKind(_x0), _x0))]] [[active(U52(tt, _x0))]] = x0 >= x0 = [[mark(_x0)]] [[active(U61(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U62(isNatKind(_x0), _x0, _x1))]] [[active(U62(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U63(isNat(_x1), _x0, _x1))]] [[active(U63(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U64(isNatKind(_x1), _x0, _x1))]] [[active(U64(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(s(plus(_x1, _x0)))]] [[active(isNat(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNat(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U11(isNatKind(_x0), _x0, _x1))]] [[active(isNat(s(_x0)))]] = 0 >= 0 = [[mark(U21(isNatKind(_x0), _x0))]] [[active(isNatKind(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U31(isNatKind(_x0), _x1))]] [[active(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark(U41(isNatKind(_x0)))]] [[active(plus(_x0, 0))]] = 2 + 2x0 >= 1 + x0 = [[mark(U51(isNat(_x0), _x0))]] [[active(plus(_x0, s(_x1)))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U61(isNat(_x1), _x1, _x0))]] [[mark(U11(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U11(mark(_x0), _x1, _x2))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U12(mark(_x0), _x1, _x2))]] [[mark(isNatKind(_x0))]] = 0 >= 0 = [[active(isNatKind(_x0))]] [[mark(U13(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U13(mark(_x0), _x1, _x2))]] [[mark(U14(_x0, _x1, _x2))]] = x0 >= x0 = [[active(U14(mark(_x0), _x1, _x2))]] [[mark(U15(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U15(mark(_x0), _x1))]] [[mark(isNat(_x0))]] = 0 >= 0 = [[active(isNat(_x0))]] [[mark(U16(_x0))]] = x0 >= x0 = [[active(U16(mark(_x0)))]] [[mark(U21(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U21(mark(_x0), _x1))]] [[mark(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U22(mark(_x0), _x1))]] [[mark(U23(_x0))]] = x0 >= x0 = [[active(U23(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 >= x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0))]] = x0 >= x0 = [[active(U32(mark(_x0)))]] [[mark(U41(_x0))]] = x0 >= x0 = [[active(U41(mark(_x0)))]] [[mark(U51(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U51(mark(_x0), _x1))]] [[mark(U52(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U52(mark(_x0), _x1))]] [[mark(U61(_x0, _x1, _x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[active(U61(mark(_x0), _x1, _x2))]] [[mark(U62(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[active(U62(mark(_x0), _x1, _x2))]] [[mark(U63(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[active(U63(mark(_x0), _x1, _x2))]] [[mark(U64(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[active(U64(mark(_x0), _x1, _x2))]] [[mark(s(_x0))]] = x0 >= x0 = [[active(s(mark(_x0)))]] [[mark(plus(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[active(plus(mark(_x0), mark(_x1)))]] [[mark(0)]] = 1 >= 1 = [[active(0)]] [[U11(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U12(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U13(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U14(mark(_x0), _x1, _x2)]] = x0 >= x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, mark(_x1), _x2)]] = x0 >= x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, mark(_x2))]] = x0 >= x0 = [[U14(_x0, _x1, _x2)]] [[U14(active(_x0), _x1, _x2)]] = x0 >= x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, active(_x1), _x2)]] = x0 >= x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, active(_x2))]] = x0 >= x0 = [[U14(_x0, _x1, _x2)]] [[U15(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U15(_x0, _x1)]] [[U15(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U15(_x0, _x1)]] [[U15(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U15(_x0, _x1)]] [[U15(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U15(_x0, _x1)]] [[isNat(mark(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[isNat(active(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U21(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U23(mark(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U23(active(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U51(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U51(_x0, _x1)]] [[U51(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U51(_x0, _x1)]] [[U51(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U51(_x0, _x1)]] [[U51(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U51(_x0, _x1)]] [[U52(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U52(_x0, _x1)]] [[U52(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U52(_x0, _x1)]] [[U52(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U52(_x0, _x1)]] [[U52(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U52(_x0, _x1)]] [[U61(mark(_x0), _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, mark(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(active(_x0), _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, active(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, _x1, active(_x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U62(mark(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, mark(_x1), _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, _x1, mark(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(active(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, active(_x1), _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, _x1, active(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U63(mark(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, mark(_x1), _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, _x1, mark(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(active(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, active(_x1), _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, _x1, active(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U64(mark(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, mark(_x1), _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, _x1, mark(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(active(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, active(_x1), _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, _x1, active(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[s(mark(_x0))]] = x0 >= x0 = [[s(_x0)]] [[s(active(_x0))]] = x0 >= x0 = [[s(_x0)]] [[plus(mark(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, mark(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(active(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, active(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[plus(_x0, _x1)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_47, R_0, minimal, formative) by (P_48, R_0, minimal, formative), where P_48 consists of: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(U52(tt, X)) =#> mark#(X) active#(U61(tt, X, Y)) =#> mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) =#> mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) =#> mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) =#> mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) active#(plus(X, s(Y))) =#> mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) mark#(U51(X, Y)) =#> active#(U51(mark(X), Y)) mark#(U52(X, Y)) =#> active#(U52(mark(X), Y)) mark#(U52(X, Y)) =#> mark#(X) mark#(U61(X, Y, Z)) =#> active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) =#> mark#(X) mark#(U62(X, Y, Z)) =#> active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) =#> mark#(X) mark#(U63(X, Y, Z)) =#> active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) =#> mark#(X) mark#(U64(X, Y, Z)) =#> active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) =#> mark#(X) mark#(s(X)) =#> mark#(X) mark#(plus(X, Y)) =#> active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) Thus, the original system is terminating if (P_48, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_48, R_0, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 20, 21 * 1 : 23, 24 * 2 : 25, 26 * 3 : 27, 28 * 4 : 30 * 5 : 33, 34 * 6 : 35 * 7 : 38 * 8 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 9 : 45, 46 * 10 : 47, 48 * 11 : 49, 50 * 12 : 51 * 13 : 18, 19 * 14 : 31, 32 * 15 : 36, 37 * 16 : 39 * 17 : 43, 44 * 18 : 0 * 19 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 20 : 1 * 21 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 22 : 15, 16 * 23 : 2 * 24 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 25 : 3 * 26 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 27 : 4 * 28 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 29 : 13, 14 * 30 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 31 : 5 * 32 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 33 : 6 * 34 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 35 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 36 : 7 * 37 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 38 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 39 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 40 : * 41 : 8 * 42 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 43 : 9 * 44 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 45 : 10 * 46 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 47 : 11 * 48 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 49 : 12 * 50 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 51 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 52 : 17 * 53 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 * 54 : 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 This graph has the following strongly connected components: P_49: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(U52(tt, X)) =#> mark#(X) active#(U61(tt, X, Y)) =#> mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) =#> mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) =#> mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) =#> mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) active#(plus(X, s(Y))) =#> mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) mark#(U52(X, Y)) =#> active#(U52(mark(X), Y)) mark#(U52(X, Y)) =#> mark#(X) mark#(U61(X, Y, Z)) =#> active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) =#> mark#(X) mark#(U62(X, Y, Z)) =#> active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) =#> mark#(X) mark#(U63(X, Y, Z)) =#> active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) =#> mark#(X) mark#(U64(X, Y, Z)) =#> active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) =#> mark#(X) mark#(s(X)) =#> mark#(X) mark#(plus(X, Y)) =#> active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_48, R_0, m, f) by (P_49, R_0, m, f). Thus, the original system is terminating if (P_49, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_49, R_0, minimal, formative). The formative rules of (P_49, R_0) are R_1 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) U11(mark(X), Y, Z) => U11(X, Y, Z) U11(X, mark(Y), Z) => U11(X, Y, Z) U11(X, Y, mark(Z)) => U11(X, Y, Z) U11(active(X), Y, Z) => U11(X, Y, Z) U11(X, active(Y), Z) => U11(X, Y, Z) U11(X, Y, active(Z)) => U11(X, Y, Z) U12(mark(X), Y, Z) => U12(X, Y, Z) U12(X, mark(Y), Z) => U12(X, Y, Z) U12(X, Y, mark(Z)) => U12(X, Y, Z) U12(active(X), Y, Z) => U12(X, Y, Z) U12(X, active(Y), Z) => U12(X, Y, Z) U12(X, Y, active(Z)) => U12(X, Y, Z) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U13(mark(X), Y, Z) => U13(X, Y, Z) U13(X, mark(Y), Z) => U13(X, Y, Z) U13(X, Y, mark(Z)) => U13(X, Y, Z) U13(active(X), Y, Z) => U13(X, Y, Z) U13(X, active(Y), Z) => U13(X, Y, Z) U13(X, Y, active(Z)) => U13(X, Y, Z) U14(mark(X), Y, Z) => U14(X, Y, Z) U14(X, mark(Y), Z) => U14(X, Y, Z) U14(X, Y, mark(Z)) => U14(X, Y, Z) U14(active(X), Y, Z) => U14(X, Y, Z) U14(X, active(Y), Z) => U14(X, Y, Z) U14(X, Y, active(Z)) => U14(X, Y, Z) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) isNat(mark(X)) => isNat(X) isNat(active(X)) => isNat(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U21(mark(X), Y) => U21(X, Y) U21(X, mark(Y)) => U21(X, Y) U21(active(X), Y) => U21(X, Y) U21(X, active(Y)) => U21(X, Y) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U23(mark(X)) => U23(X) U23(active(X)) => U23(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) U52(mark(X), Y) => U52(X, Y) U52(X, mark(Y)) => U52(X, Y) U52(active(X), Y) => U52(X, Y) U52(X, active(Y)) => U52(X, Y) U61(mark(X), Y, Z) => U61(X, Y, Z) U61(X, mark(Y), Z) => U61(X, Y, Z) U61(X, Y, mark(Z)) => U61(X, Y, Z) U61(active(X), Y, Z) => U61(X, Y, Z) U61(X, active(Y), Z) => U61(X, Y, Z) U61(X, Y, active(Z)) => U61(X, Y, Z) U62(mark(X), Y, Z) => U62(X, Y, Z) U62(X, mark(Y), Z) => U62(X, Y, Z) U62(X, Y, mark(Z)) => U62(X, Y, Z) U62(active(X), Y, Z) => U62(X, Y, Z) U62(X, active(Y), Z) => U62(X, Y, Z) U62(X, Y, active(Z)) => U62(X, Y, Z) U63(mark(X), Y, Z) => U63(X, Y, Z) U63(X, mark(Y), Z) => U63(X, Y, Z) U63(X, Y, mark(Z)) => U63(X, Y, Z) U63(active(X), Y, Z) => U63(X, Y, Z) U63(X, active(Y), Z) => U63(X, Y, Z) U63(X, Y, active(Z)) => U63(X, Y, Z) U64(mark(X), Y, Z) => U64(X, Y, Z) U64(X, mark(Y), Z) => U64(X, Y, Z) U64(X, Y, mark(Z)) => U64(X, Y, Z) U64(active(X), Y, Z) => U64(X, Y, Z) U64(X, active(Y), Z) => U64(X, Y, Z) U64(X, Y, active(Z)) => U64(X, Y, Z) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_49, R_0, minimal, formative) by (P_49, R_1, minimal, formative). Thus, the original system is terminating if (P_49, R_1, minimal, formative) is finite. We consider the dependency pair problem (P_49, R_1, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U11(tt, X, Y)) >? mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) >? mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >? mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >? mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >? mark#(U16(isNat(X))) active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >? mark#(U23(isNat(X))) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(U52(tt, X)) >? mark#(X) active#(U61(tt, X, Y)) >? mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) >? mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) >? mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) >? mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) >? mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) active#(plus(X, s(Y))) >? mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) >? active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) >? mark#(X) mark#(U12(X, Y, Z)) >? active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >? mark#(X) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U13(X, Y, Z)) >? active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >? mark#(X) mark#(U14(X, Y, Z)) >? active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >? mark#(X) mark#(U15(X, Y)) >? active#(U15(mark(X), Y)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? active#(U22(mark(X), Y)) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) mark#(U52(X, Y)) >? active#(U52(mark(X), Y)) mark#(U52(X, Y)) >? mark#(X) mark#(U61(X, Y, Z)) >? active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) >? mark#(X) mark#(U62(X, Y, Z)) >? active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) >? mark#(X) mark#(U63(X, Y, Z)) >? active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) >? mark#(X) mark#(U64(X, Y, Z)) >? active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) >? mark#(X) mark#(s(X)) >? mark#(X) mark#(plus(X, Y)) >? active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) U11(mark(X), Y, Z) >= U11(X, Y, Z) U11(X, mark(Y), Z) >= U11(X, Y, Z) U11(X, Y, mark(Z)) >= U11(X, Y, Z) U11(active(X), Y, Z) >= U11(X, Y, Z) U11(X, active(Y), Z) >= U11(X, Y, Z) U11(X, Y, active(Z)) >= U11(X, Y, Z) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) U52(mark(X), Y) >= U52(X, Y) U52(X, mark(Y)) >= U52(X, Y) U52(active(X), Y) >= U52(X, Y) U52(X, active(Y)) >= U52(X, Y) U61(mark(X), Y, Z) >= U61(X, Y, Z) U61(X, mark(Y), Z) >= U61(X, Y, Z) U61(X, Y, mark(Z)) >= U61(X, Y, Z) U61(active(X), Y, Z) >= U61(X, Y, Z) U61(X, active(Y), Z) >= U61(X, Y, Z) U61(X, Y, active(Z)) >= U61(X, Y, Z) U62(mark(X), Y, Z) >= U62(X, Y, Z) U62(X, mark(Y), Z) >= U62(X, Y, Z) U62(X, Y, mark(Z)) >= U62(X, Y, Z) U62(active(X), Y, Z) >= U62(X, Y, Z) U62(X, active(Y), Z) >= U62(X, Y, Z) U62(X, Y, active(Z)) >= U62(X, Y, Z) U63(mark(X), Y, Z) >= U63(X, Y, Z) U63(X, mark(Y), Z) >= U63(X, Y, Z) U63(X, Y, mark(Z)) >= U63(X, Y, Z) U63(active(X), Y, Z) >= U63(X, Y, Z) U63(X, active(Y), Z) >= U63(X, Y, Z) U63(X, Y, active(Z)) >= U63(X, Y, Z) U64(mark(X), Y, Z) >= U64(X, Y, Z) U64(X, mark(Y), Z) >= U64(X, Y, Z) U64(X, Y, mark(Z)) >= U64(X, Y, Z) U64(active(X), Y, Z) >= U64(X, Y, Z) U64(X, active(Y), Z) >= U64(X, Y, Z) U64(X, Y, active(Z)) >= U64(X, Y, Z) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 1 U11 = \y0y1y2.2y0 U12 = \y0y1y2.2y0 U13 = \y0y1y2.2y0 U14 = \y0y1y2.2y0 U15 = \y0y1.2y0 U16 = \y0.y0 U21 = \y0y1.2y0 U22 = \y0y1.2y0 U23 = \y0.y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.1 + y1 U52 = \y0y1.1 + y1 + 2y0 U61 = \y0y1y2.y0 + y1 + 2y2 U62 = \y0y1y2.y1 + 2y0 + 2y2 U63 = \y0y1y2.y0 + y1 + 2y2 U64 = \y0y1y2.y0 + y1 + 2y2 active = \y0.y0 active# = \y0.y0 isNat = \y0.0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.y0 plus = \y0y1.y1 + 2y0 s = \y0.y0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U12(isNatKind(_x0), _x0, _x1))]] [[active#(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U13(isNatKind(_x1), _x0, _x1))]] [[active#(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U14(isNatKind(_x1), _x0, _x1))]] [[active#(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U15(isNat(_x0), _x1))]] [[active#(U15(tt, _x0))]] = 0 >= 0 = [[mark#(U16(isNat(_x0)))]] [[active#(U21(tt, _x0))]] = 0 >= 0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U22(tt, _x0))]] = 0 >= 0 = [[mark#(U23(isNat(_x0)))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(U52(tt, _x0))]] = 1 + x0 > x0 = [[mark#(_x0)]] [[active#(U61(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark#(U62(isNatKind(_x0), _x0, _x1))]] [[active#(U62(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark#(U63(isNat(_x1), _x0, _x1))]] [[active#(U63(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark#(U64(isNatKind(_x1), _x0, _x1))]] [[active#(U64(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark#(s(plus(_x1, _x0)))]] [[active#(isNat(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U11(isNatKind(_x0), _x0, _x1))]] [[active#(isNat(s(_x0)))]] = 0 >= 0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[active#(plus(_x0, s(_x1)))]] = x1 + 2x0 >= x1 + 2x0 = [[mark#(U61(isNat(_x1), _x1, _x0))]] [[mark#(U11(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U11(mark(_x0), _x1, _x2))]] [[mark#(U11(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U12(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U12(mark(_x0), _x1, _x2))]] [[mark#(U12(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U13(mark(_x0), _x1, _x2))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U14(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U14(mark(_x0), _x1, _x2))]] [[mark#(U14(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U15(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U15(mark(_x0), _x1))]] [[mark#(U15(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 0 >= 0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U22(mark(_x0), _x1))]] [[mark#(U22(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U52(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[active#(U52(mark(_x0), _x1))]] [[mark#(U52(_x0, _x1))]] = 1 + x1 + 2x0 > x0 = [[mark#(_x0)]] [[mark#(U61(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active#(U61(mark(_x0), _x1, _x2))]] [[mark#(U61(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 = [[mark#(_x0)]] [[mark#(U62(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[active#(U62(mark(_x0), _x1, _x2))]] [[mark#(U62(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x0 = [[mark#(_x0)]] [[mark#(U63(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active#(U63(mark(_x0), _x1, _x2))]] [[mark#(U63(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 = [[mark#(_x0)]] [[mark#(U64(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active#(U64(mark(_x0), _x1, _x2))]] [[mark#(U64(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 = [[mark#(_x0)]] [[mark#(s(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active#(plus(mark(_x0), mark(_x1)))]] [[mark#(plus(_x0, _x1))]] = x1 + 2x0 >= x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = x1 + 2x0 >= x1 = [[mark#(_x1)]] [[active(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U12(isNatKind(_x0), _x0, _x1))]] [[active(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U13(isNatKind(_x1), _x0, _x1))]] [[active(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U14(isNatKind(_x1), _x0, _x1))]] [[active(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U15(isNat(_x0), _x1))]] [[active(U15(tt, _x0))]] = 0 >= 0 = [[mark(U16(isNat(_x0)))]] [[active(U16(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U21(tt, _x0))]] = 0 >= 0 = [[mark(U22(isNatKind(_x0), _x0))]] [[active(U22(tt, _x0))]] = 0 >= 0 = [[mark(U23(isNat(_x0)))]] [[active(U23(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 0 >= 0 = [[mark(U32(isNatKind(_x0)))]] [[active(U32(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U51(tt, _x0))]] = 1 + x0 >= 1 + x0 = [[mark(U52(isNatKind(_x0), _x0))]] [[active(U52(tt, _x0))]] = 1 + x0 >= x0 = [[mark(_x0)]] [[active(U61(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U62(isNatKind(_x0), _x0, _x1))]] [[active(U62(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U63(isNat(_x1), _x0, _x1))]] [[active(U63(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U64(isNatKind(_x1), _x0, _x1))]] [[active(U64(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(s(plus(_x1, _x0)))]] [[active(isNat(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNat(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U11(isNatKind(_x0), _x0, _x1))]] [[active(isNat(s(_x0)))]] = 0 >= 0 = [[mark(U21(isNatKind(_x0), _x0))]] [[active(isNatKind(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U31(isNatKind(_x0), _x1))]] [[active(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark(U41(isNatKind(_x0)))]] [[active(plus(_x0, 0))]] = 1 + 2x0 >= 1 + x0 = [[mark(U51(isNat(_x0), _x0))]] [[active(plus(_x0, s(_x1)))]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U61(isNat(_x1), _x1, _x0))]] [[mark(U11(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U11(mark(_x0), _x1, _x2))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U12(mark(_x0), _x1, _x2))]] [[mark(isNatKind(_x0))]] = 0 >= 0 = [[active(isNatKind(_x0))]] [[mark(U13(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U13(mark(_x0), _x1, _x2))]] [[mark(U14(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U14(mark(_x0), _x1, _x2))]] [[mark(U15(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U15(mark(_x0), _x1))]] [[mark(isNat(_x0))]] = 0 >= 0 = [[active(isNat(_x0))]] [[mark(U16(_x0))]] = x0 >= x0 = [[active(U16(mark(_x0)))]] [[mark(U21(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U21(mark(_x0), _x1))]] [[mark(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U22(mark(_x0), _x1))]] [[mark(U23(_x0))]] = x0 >= x0 = [[active(U23(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 >= x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0))]] = x0 >= x0 = [[active(U32(mark(_x0)))]] [[mark(U41(_x0))]] = x0 >= x0 = [[active(U41(mark(_x0)))]] [[mark(U51(_x0, _x1))]] = 1 + x1 >= 1 + x1 = [[active(U51(mark(_x0), _x1))]] [[mark(U52(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[active(U52(mark(_x0), _x1))]] [[mark(U61(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U61(mark(_x0), _x1, _x2))]] [[mark(U62(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[active(U62(mark(_x0), _x1, _x2))]] [[mark(U63(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U63(mark(_x0), _x1, _x2))]] [[mark(U64(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U64(mark(_x0), _x1, _x2))]] [[mark(s(_x0))]] = x0 >= x0 = [[active(s(mark(_x0)))]] [[mark(plus(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active(plus(mark(_x0), mark(_x1)))]] [[mark(0)]] = 1 >= 1 = [[active(0)]] [[U11(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U12(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U13(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U14(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U15(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U15(_x0, _x1)]] [[U15(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U15(_x0, _x1)]] [[U15(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U15(_x0, _x1)]] [[U15(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U15(_x0, _x1)]] [[isNat(mark(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[isNat(active(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U21(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U23(mark(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U23(active(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U52(mark(_x0), _x1)]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U52(_x0, _x1)]] [[U52(_x0, mark(_x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U52(_x0, _x1)]] [[U52(active(_x0), _x1)]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U52(_x0, _x1)]] [[U52(_x0, active(_x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U52(_x0, _x1)]] [[U61(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U61(_x0, _x1, _x2)]] [[U62(mark(_x0), _x1, _x2)]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, mark(_x1), _x2)]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, _x1, mark(_x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(active(_x0), _x1, _x2)]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, active(_x1), _x2)]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, _x1, active(_x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U62(_x0, _x1, _x2)]] [[U63(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U63(_x0, _x1, _x2)]] [[U64(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U64(_x0, _x1, _x2)]] [[s(mark(_x0))]] = x0 >= x0 = [[s(_x0)]] [[s(active(_x0))]] = x0 >= x0 = [[s(_x0)]] [[plus(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[plus(_x0, _x1)]] [[plus(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[plus(_x0, _x1)]] [[plus(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[plus(_x0, _x1)]] [[plus(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[plus(_x0, _x1)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_49, R_1, minimal, formative) by (P_50, R_1, minimal, formative), where P_50 consists of: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(U61(tt, X, Y)) =#> mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) =#> mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) =#> mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) =#> mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) active#(plus(X, s(Y))) =#> mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) mark#(U52(X, Y)) =#> active#(U52(mark(X), Y)) mark#(U61(X, Y, Z)) =#> active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) =#> mark#(X) mark#(U62(X, Y, Z)) =#> active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) =#> mark#(X) mark#(U63(X, Y, Z)) =#> active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) =#> mark#(X) mark#(U64(X, Y, Z)) =#> active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) =#> mark#(X) mark#(s(X)) =#> mark#(X) mark#(plus(X, Y)) =#> active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) Thus, the original system is terminating if (P_50, R_1, minimal, formative) is finite. We consider the dependency pair problem (P_50, R_1, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 19, 20 * 1 : 22, 23 * 2 : 24, 25 * 3 : 26, 27 * 4 : 29 * 5 : 32, 33 * 6 : 34 * 7 : 37 * 8 : 42, 43 * 9 : 44, 45 * 10 : 46, 47 * 11 : 48 * 12 : 17, 18 * 13 : 30, 31 * 14 : 35, 36 * 15 : 38 * 16 : 40, 41 * 17 : 0 * 18 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 19 : 1 * 20 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 21 : 14, 15 * 22 : 2 * 23 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 24 : 3 * 25 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 26 : 4 * 27 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 28 : 12, 13 * 29 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 30 : 5 * 31 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 32 : 6 * 33 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 34 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 35 : 7 * 36 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 37 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 38 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 39 : * 40 : 8 * 41 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 42 : 9 * 43 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 44 : 10 * 45 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 46 : 11 * 47 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 48 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 49 : 16 * 50 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 * 51 : 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 This graph has the following strongly connected components: P_51: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(U61(tt, X, Y)) =#> mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) =#> mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) =#> mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) =#> mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) active#(plus(X, s(Y))) =#> mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) mark#(U61(X, Y, Z)) =#> active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) =#> mark#(X) mark#(U62(X, Y, Z)) =#> active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) =#> mark#(X) mark#(U63(X, Y, Z)) =#> active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) =#> mark#(X) mark#(U64(X, Y, Z)) =#> active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) =#> mark#(X) mark#(s(X)) =#> mark#(X) mark#(plus(X, Y)) =#> active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_50, R_1, m, f) by (P_51, R_1, m, f). Thus, the original system is terminating if (P_51, R_1, minimal, formative) is finite. We consider the dependency pair problem (P_51, R_1, minimal, formative). The formative rules of (P_51, R_1) are R_2 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) U11(mark(X), Y, Z) => U11(X, Y, Z) U11(X, mark(Y), Z) => U11(X, Y, Z) U11(X, Y, mark(Z)) => U11(X, Y, Z) U11(active(X), Y, Z) => U11(X, Y, Z) U11(X, active(Y), Z) => U11(X, Y, Z) U11(X, Y, active(Z)) => U11(X, Y, Z) U12(mark(X), Y, Z) => U12(X, Y, Z) U12(X, mark(Y), Z) => U12(X, Y, Z) U12(X, Y, mark(Z)) => U12(X, Y, Z) U12(active(X), Y, Z) => U12(X, Y, Z) U12(X, active(Y), Z) => U12(X, Y, Z) U12(X, Y, active(Z)) => U12(X, Y, Z) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U13(mark(X), Y, Z) => U13(X, Y, Z) U13(X, mark(Y), Z) => U13(X, Y, Z) U13(X, Y, mark(Z)) => U13(X, Y, Z) U13(active(X), Y, Z) => U13(X, Y, Z) U13(X, active(Y), Z) => U13(X, Y, Z) U13(X, Y, active(Z)) => U13(X, Y, Z) U14(mark(X), Y, Z) => U14(X, Y, Z) U14(X, mark(Y), Z) => U14(X, Y, Z) U14(X, Y, mark(Z)) => U14(X, Y, Z) U14(active(X), Y, Z) => U14(X, Y, Z) U14(X, active(Y), Z) => U14(X, Y, Z) U14(X, Y, active(Z)) => U14(X, Y, Z) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) isNat(mark(X)) => isNat(X) isNat(active(X)) => isNat(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U21(mark(X), Y) => U21(X, Y) U21(X, mark(Y)) => U21(X, Y) U21(active(X), Y) => U21(X, Y) U21(X, active(Y)) => U21(X, Y) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U23(mark(X)) => U23(X) U23(active(X)) => U23(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) U61(mark(X), Y, Z) => U61(X, Y, Z) U61(X, mark(Y), Z) => U61(X, Y, Z) U61(X, Y, mark(Z)) => U61(X, Y, Z) U61(active(X), Y, Z) => U61(X, Y, Z) U61(X, active(Y), Z) => U61(X, Y, Z) U61(X, Y, active(Z)) => U61(X, Y, Z) U62(mark(X), Y, Z) => U62(X, Y, Z) U62(X, mark(Y), Z) => U62(X, Y, Z) U62(X, Y, mark(Z)) => U62(X, Y, Z) U62(active(X), Y, Z) => U62(X, Y, Z) U62(X, active(Y), Z) => U62(X, Y, Z) U62(X, Y, active(Z)) => U62(X, Y, Z) U63(mark(X), Y, Z) => U63(X, Y, Z) U63(X, mark(Y), Z) => U63(X, Y, Z) U63(X, Y, mark(Z)) => U63(X, Y, Z) U63(active(X), Y, Z) => U63(X, Y, Z) U63(X, active(Y), Z) => U63(X, Y, Z) U63(X, Y, active(Z)) => U63(X, Y, Z) U64(mark(X), Y, Z) => U64(X, Y, Z) U64(X, mark(Y), Z) => U64(X, Y, Z) U64(X, Y, mark(Z)) => U64(X, Y, Z) U64(active(X), Y, Z) => U64(X, Y, Z) U64(X, active(Y), Z) => U64(X, Y, Z) U64(X, Y, active(Z)) => U64(X, Y, Z) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_51, R_1, minimal, formative) by (P_51, R_2, minimal, formative). Thus, the original system is terminating if (P_51, R_2, minimal, formative) is finite. We consider the dependency pair problem (P_51, R_2, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U11(tt, X, Y)) >? mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) >? mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >? mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >? mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >? mark#(U16(isNat(X))) active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >? mark#(U23(isNat(X))) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(U61(tt, X, Y)) >? mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) >? mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) >? mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) >? mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) >? mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) active#(plus(X, s(Y))) >? mark#(U61(isNat(Y), Y, X)) mark#(U11(X, Y, Z)) >? active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) >? mark#(X) mark#(U12(X, Y, Z)) >? active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >? mark#(X) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U13(X, Y, Z)) >? active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >? mark#(X) mark#(U14(X, Y, Z)) >? active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >? mark#(X) mark#(U15(X, Y)) >? active#(U15(mark(X), Y)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? active#(U22(mark(X), Y)) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) mark#(U61(X, Y, Z)) >? active#(U61(mark(X), Y, Z)) mark#(U61(X, Y, Z)) >? mark#(X) mark#(U62(X, Y, Z)) >? active#(U62(mark(X), Y, Z)) mark#(U62(X, Y, Z)) >? mark#(X) mark#(U63(X, Y, Z)) >? active#(U63(mark(X), Y, Z)) mark#(U63(X, Y, Z)) >? mark#(X) mark#(U64(X, Y, Z)) >? active#(U64(mark(X), Y, Z)) mark#(U64(X, Y, Z)) >? mark#(X) mark#(s(X)) >? mark#(X) mark#(plus(X, Y)) >? active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) U11(mark(X), Y, Z) >= U11(X, Y, Z) U11(X, mark(Y), Z) >= U11(X, Y, Z) U11(X, Y, mark(Z)) >= U11(X, Y, Z) U11(active(X), Y, Z) >= U11(X, Y, Z) U11(X, active(Y), Z) >= U11(X, Y, Z) U11(X, Y, active(Z)) >= U11(X, Y, Z) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) U61(mark(X), Y, Z) >= U61(X, Y, Z) U61(X, mark(Y), Z) >= U61(X, Y, Z) U61(X, Y, mark(Z)) >= U61(X, Y, Z) U61(active(X), Y, Z) >= U61(X, Y, Z) U61(X, active(Y), Z) >= U61(X, Y, Z) U61(X, Y, active(Z)) >= U61(X, Y, Z) U62(mark(X), Y, Z) >= U62(X, Y, Z) U62(X, mark(Y), Z) >= U62(X, Y, Z) U62(X, Y, mark(Z)) >= U62(X, Y, Z) U62(active(X), Y, Z) >= U62(X, Y, Z) U62(X, active(Y), Z) >= U62(X, Y, Z) U62(X, Y, active(Z)) >= U62(X, Y, Z) U63(mark(X), Y, Z) >= U63(X, Y, Z) U63(X, mark(Y), Z) >= U63(X, Y, Z) U63(X, Y, mark(Z)) >= U63(X, Y, Z) U63(active(X), Y, Z) >= U63(X, Y, Z) U63(X, active(Y), Z) >= U63(X, Y, Z) U63(X, Y, active(Z)) >= U63(X, Y, Z) U64(mark(X), Y, Z) >= U64(X, Y, Z) U64(X, mark(Y), Z) >= U64(X, Y, Z) U64(X, Y, mark(Z)) >= U64(X, Y, Z) U64(active(X), Y, Z) >= U64(X, Y, Z) U64(X, active(Y), Z) >= U64(X, Y, Z) U64(X, Y, active(Z)) >= U64(X, Y, Z) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1y2.2y0 U12 = \y0y1y2.2y0 U13 = \y0y1y2.2y0 U14 = \y0y1y2.2y0 U15 = \y0y1.y0 U16 = \y0.2y0 U21 = \y0y1.2y0 U22 = \y0y1.2y0 U23 = \y0.2y0 U31 = \y0y1.y0 U32 = \y0.2y0 U41 = \y0.2y0 U51 = \y0y1.y1 U52 = \y0y1.y1 U61 = \y0y1y2.1 + y0 + y2 + 2y1 U62 = \y0y1y2.1 + y2 + 2y0 + 2y1 U63 = \y0y1y2.1 + y2 + 2y0 + 2y1 U64 = \y0y1y2.1 + y2 + 2y0 + 2y1 active = \y0.y0 active# = \y0.y0 isNat = \y0.0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.y0 plus = \y0y1.y0 + 2y1 s = \y0.1 + y0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U12(isNatKind(_x0), _x0, _x1))]] [[active#(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U13(isNatKind(_x1), _x0, _x1))]] [[active#(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U14(isNatKind(_x1), _x0, _x1))]] [[active#(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U15(isNat(_x0), _x1))]] [[active#(U15(tt, _x0))]] = 0 >= 0 = [[mark#(U16(isNat(_x0)))]] [[active#(U21(tt, _x0))]] = 0 >= 0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U22(tt, _x0))]] = 0 >= 0 = [[mark#(U23(isNat(_x0)))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(U61(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark#(U62(isNatKind(_x0), _x0, _x1))]] [[active#(U62(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark#(U63(isNat(_x1), _x0, _x1))]] [[active#(U63(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark#(U64(isNatKind(_x1), _x0, _x1))]] [[active#(U64(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark#(s(plus(_x1, _x0)))]] [[active#(isNat(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U11(isNatKind(_x0), _x0, _x1))]] [[active#(isNat(s(_x0)))]] = 0 >= 0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[active#(plus(_x0, s(_x1)))]] = 2 + x0 + 2x1 > 1 + x0 + 2x1 = [[mark#(U61(isNat(_x1), _x1, _x0))]] [[mark#(U11(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U11(mark(_x0), _x1, _x2))]] [[mark#(U11(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U12(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U12(mark(_x0), _x1, _x2))]] [[mark#(U12(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U13(mark(_x0), _x1, _x2))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U14(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active#(U14(mark(_x0), _x1, _x2))]] [[mark#(U14(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U15(_x0, _x1))]] = x0 >= x0 = [[active#(U15(mark(_x0), _x1))]] [[mark#(U15(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 0 >= 0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U22(mark(_x0), _x1))]] [[mark#(U22(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U61(_x0, _x1, _x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[active#(U61(mark(_x0), _x1, _x2))]] [[mark#(U61(_x0, _x1, _x2))]] = 1 + x0 + x2 + 2x1 > x0 = [[mark#(_x0)]] [[mark#(U62(_x0, _x1, _x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[active#(U62(mark(_x0), _x1, _x2))]] [[mark#(U62(_x0, _x1, _x2))]] = 1 + x2 + 2x0 + 2x1 > x0 = [[mark#(_x0)]] [[mark#(U63(_x0, _x1, _x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[active#(U63(mark(_x0), _x1, _x2))]] [[mark#(U63(_x0, _x1, _x2))]] = 1 + x2 + 2x0 + 2x1 > x0 = [[mark#(_x0)]] [[mark#(U64(_x0, _x1, _x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[active#(U64(mark(_x0), _x1, _x2))]] [[mark#(U64(_x0, _x1, _x2))]] = 1 + x2 + 2x0 + 2x1 > x0 = [[mark#(_x0)]] [[mark#(s(_x0))]] = 1 + x0 > x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active#(plus(mark(_x0), mark(_x1)))]] [[mark#(plus(_x0, _x1))]] = x0 + 2x1 >= x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = x0 + 2x1 >= x1 = [[mark#(_x1)]] [[active(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U12(isNatKind(_x0), _x0, _x1))]] [[active(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U13(isNatKind(_x1), _x0, _x1))]] [[active(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U14(isNatKind(_x1), _x0, _x1))]] [[active(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark(U15(isNat(_x0), _x1))]] [[active(U15(tt, _x0))]] = 0 >= 0 = [[mark(U16(isNat(_x0)))]] [[active(U16(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U21(tt, _x0))]] = 0 >= 0 = [[mark(U22(isNatKind(_x0), _x0))]] [[active(U22(tt, _x0))]] = 0 >= 0 = [[mark(U23(isNat(_x0)))]] [[active(U23(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 0 >= 0 = [[mark(U32(isNatKind(_x0)))]] [[active(U32(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U51(tt, _x0))]] = x0 >= x0 = [[mark(U52(isNatKind(_x0), _x0))]] [[active(U52(tt, _x0))]] = x0 >= x0 = [[mark(_x0)]] [[active(U61(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(U62(isNatKind(_x0), _x0, _x1))]] [[active(U62(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(U63(isNat(_x1), _x0, _x1))]] [[active(U63(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(U64(isNatKind(_x1), _x0, _x1))]] [[active(U64(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(s(plus(_x1, _x0)))]] [[active(isNat(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNat(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U11(isNatKind(_x0), _x0, _x1))]] [[active(isNat(s(_x0)))]] = 0 >= 0 = [[mark(U21(isNatKind(_x0), _x0))]] [[active(isNatKind(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U31(isNatKind(_x0), _x1))]] [[active(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark(U41(isNatKind(_x0)))]] [[active(plus(_x0, 0))]] = x0 >= x0 = [[mark(U51(isNat(_x0), _x0))]] [[active(plus(_x0, s(_x1)))]] = 2 + x0 + 2x1 >= 1 + x0 + 2x1 = [[mark(U61(isNat(_x1), _x1, _x0))]] [[mark(U11(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U11(mark(_x0), _x1, _x2))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U12(mark(_x0), _x1, _x2))]] [[mark(isNatKind(_x0))]] = 0 >= 0 = [[active(isNatKind(_x0))]] [[mark(U13(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U13(mark(_x0), _x1, _x2))]] [[mark(U14(_x0, _x1, _x2))]] = 2x0 >= 2x0 = [[active(U14(mark(_x0), _x1, _x2))]] [[mark(U15(_x0, _x1))]] = x0 >= x0 = [[active(U15(mark(_x0), _x1))]] [[mark(isNat(_x0))]] = 0 >= 0 = [[active(isNat(_x0))]] [[mark(U16(_x0))]] = 2x0 >= 2x0 = [[active(U16(mark(_x0)))]] [[mark(U21(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U21(mark(_x0), _x1))]] [[mark(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U22(mark(_x0), _x1))]] [[mark(U23(_x0))]] = 2x0 >= 2x0 = [[active(U23(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 >= x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0))]] = 2x0 >= 2x0 = [[active(U32(mark(_x0)))]] [[mark(U41(_x0))]] = 2x0 >= 2x0 = [[active(U41(mark(_x0)))]] [[mark(U51(_x0, _x1))]] = x1 >= x1 = [[active(U51(mark(_x0), _x1))]] [[mark(U52(_x0, _x1))]] = x1 >= x1 = [[active(U52(mark(_x0), _x1))]] [[mark(U61(_x0, _x1, _x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[active(U61(mark(_x0), _x1, _x2))]] [[mark(U62(_x0, _x1, _x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[active(U62(mark(_x0), _x1, _x2))]] [[mark(U63(_x0, _x1, _x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[active(U63(mark(_x0), _x1, _x2))]] [[mark(U64(_x0, _x1, _x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[active(U64(mark(_x0), _x1, _x2))]] [[mark(s(_x0))]] = 1 + x0 >= 1 + x0 = [[active(s(mark(_x0)))]] [[mark(plus(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(plus(mark(_x0), mark(_x1)))]] [[mark(0)]] = 0 >= 0 = [[active(0)]] [[U11(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U11(_x0, _x1, _x2)]] [[U12(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U13(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U14(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U15(mark(_x0), _x1)]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(_x0, mark(_x1))]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(active(_x0), _x1)]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(_x0, active(_x1))]] = x0 >= x0 = [[U15(_x0, _x1)]] [[isNat(mark(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[isNat(active(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[U16(mark(_x0))]] = 2x0 >= 2x0 = [[U16(_x0)]] [[U16(active(_x0))]] = 2x0 >= 2x0 = [[U16(_x0)]] [[U21(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U23(mark(_x0))]] = 2x0 >= 2x0 = [[U23(_x0)]] [[U23(active(_x0))]] = 2x0 >= 2x0 = [[U23(_x0)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = 2x0 >= 2x0 = [[U32(_x0)]] [[U32(active(_x0))]] = 2x0 >= 2x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = 2x0 >= 2x0 = [[U41(_x0)]] [[U41(active(_x0))]] = 2x0 >= 2x0 = [[U41(_x0)]] [[U61(mark(_x0), _x1, _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, _x1, mark(_x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U61(_x0, _x1, _x2)]] [[U61(active(_x0), _x1, _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, active(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U61(_x0, _x1, _x2)]] [[U61(_x0, _x1, active(_x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U61(_x0, _x1, _x2)]] [[U62(mark(_x0), _x1, _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, mark(_x1), _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, _x1, mark(_x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U62(_x0, _x1, _x2)]] [[U62(active(_x0), _x1, _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, active(_x1), _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U62(_x0, _x1, _x2)]] [[U62(_x0, _x1, active(_x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U62(_x0, _x1, _x2)]] [[U63(mark(_x0), _x1, _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, mark(_x1), _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, _x1, mark(_x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U63(_x0, _x1, _x2)]] [[U63(active(_x0), _x1, _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, active(_x1), _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U63(_x0, _x1, _x2)]] [[U63(_x0, _x1, active(_x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U63(_x0, _x1, _x2)]] [[U64(mark(_x0), _x1, _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, mark(_x1), _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, _x1, mark(_x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U64(_x0, _x1, _x2)]] [[U64(active(_x0), _x1, _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, active(_x1), _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U64(_x0, _x1, _x2)]] [[U64(_x0, _x1, active(_x2))]] = 1 + x2 + 2x0 + 2x1 >= 1 + x2 + 2x0 + 2x1 = [[U64(_x0, _x1, _x2)]] [[s(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[s(_x0)]] [[s(active(_x0))]] = 1 + x0 >= 1 + x0 = [[s(_x0)]] [[plus(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_51, R_2, minimal, formative) by (P_52, R_2, minimal, formative), where P_52 consists of: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(U61(tt, X, Y)) =#> mark#(U62(isNatKind(X), X, Y)) active#(U62(tt, X, Y)) =#> mark#(U63(isNat(Y), X, Y)) active#(U63(tt, X, Y)) =#> mark#(U64(isNatKind(Y), X, Y)) active#(U64(tt, X, Y)) =#> mark#(s(plus(Y, X))) active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) mark#(U61(X, Y, Z)) =#> active#(U61(mark(X), Y, Z)) mark#(U62(X, Y, Z)) =#> active#(U62(mark(X), Y, Z)) mark#(U63(X, Y, Z)) =#> active#(U63(mark(X), Y, Z)) mark#(U64(X, Y, Z)) =#> active#(U64(mark(X), Y, Z)) mark#(plus(X, Y)) =#> active#(plus(mark(X), mark(Y))) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) Thus, the original system is terminating if (P_52, R_2, minimal, formative) is finite. We consider the dependency pair problem (P_52, R_2, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 18, 19 * 1 : 21, 22 * 2 : 23, 24 * 3 : 25, 26 * 4 : 28 * 5 : 31, 32 * 6 : 33 * 7 : 36 * 8 : 39 * 9 : 40 * 10 : 41 * 11 : * 12 : 16, 17 * 13 : 29, 30 * 14 : 34, 35 * 15 : 37 * 16 : 0 * 17 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 18 : 1 * 19 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 20 : 14, 15 * 21 : 2 * 22 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 23 : 3 * 24 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 25 : 4 * 26 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 27 : 12, 13 * 28 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 29 : 5 * 30 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 31 : 6 * 32 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 33 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 34 : 7 * 35 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 36 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 37 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 38 : 8 * 39 : 9 * 40 : 10 * 41 : 11 * 42 : * 43 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 * 44 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 This graph has the following strongly connected components: P_53: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_52, R_2, m, f) by (P_53, R_2, m, f). Thus, the original system is terminating if (P_53, R_2, minimal, formative) is finite. We consider the dependency pair problem (P_53, R_2, minimal, formative). The formative rules of (P_53, R_2) are R_3 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) U11(mark(X), Y, Z) => U11(X, Y, Z) U11(X, mark(Y), Z) => U11(X, Y, Z) U11(X, Y, mark(Z)) => U11(X, Y, Z) U11(active(X), Y, Z) => U11(X, Y, Z) U11(X, active(Y), Z) => U11(X, Y, Z) U11(X, Y, active(Z)) => U11(X, Y, Z) U12(mark(X), Y, Z) => U12(X, Y, Z) U12(X, mark(Y), Z) => U12(X, Y, Z) U12(X, Y, mark(Z)) => U12(X, Y, Z) U12(active(X), Y, Z) => U12(X, Y, Z) U12(X, active(Y), Z) => U12(X, Y, Z) U12(X, Y, active(Z)) => U12(X, Y, Z) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U13(mark(X), Y, Z) => U13(X, Y, Z) U13(X, mark(Y), Z) => U13(X, Y, Z) U13(X, Y, mark(Z)) => U13(X, Y, Z) U13(active(X), Y, Z) => U13(X, Y, Z) U13(X, active(Y), Z) => U13(X, Y, Z) U13(X, Y, active(Z)) => U13(X, Y, Z) U14(mark(X), Y, Z) => U14(X, Y, Z) U14(X, mark(Y), Z) => U14(X, Y, Z) U14(X, Y, mark(Z)) => U14(X, Y, Z) U14(active(X), Y, Z) => U14(X, Y, Z) U14(X, active(Y), Z) => U14(X, Y, Z) U14(X, Y, active(Z)) => U14(X, Y, Z) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) isNat(mark(X)) => isNat(X) isNat(active(X)) => isNat(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U21(mark(X), Y) => U21(X, Y) U21(X, mark(Y)) => U21(X, Y) U21(active(X), Y) => U21(X, Y) U21(X, active(Y)) => U21(X, Y) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U23(mark(X)) => U23(X) U23(active(X)) => U23(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_53, R_2, minimal, formative) by (P_53, R_3, minimal, formative). Thus, the original system is terminating if (P_53, R_3, minimal, formative) is finite. We consider the dependency pair problem (P_53, R_3, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U11(tt, X, Y)) >? mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) >? mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >? mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >? mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >? mark#(U16(isNat(X))) active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >? mark#(U23(isNat(X))) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNat(plus(X, Y))) >? mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(U11(X, Y, Z)) >? active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) >? mark#(X) mark#(U12(X, Y, Z)) >? active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >? mark#(X) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U13(X, Y, Z)) >? active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >? mark#(X) mark#(U14(X, Y, Z)) >? active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >? mark#(X) mark#(U15(X, Y)) >? active#(U15(mark(X), Y)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? active#(U22(mark(X), Y)) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) U11(mark(X), Y, Z) >= U11(X, Y, Z) U11(X, mark(Y), Z) >= U11(X, Y, Z) U11(X, Y, mark(Z)) >= U11(X, Y, Z) U11(active(X), Y, Z) >= U11(X, Y, Z) U11(X, active(Y), Z) >= U11(X, Y, Z) U11(X, Y, active(Z)) >= U11(X, Y, Z) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. We consider usable_rules with respect to the following argument filtering: active#(x_1) = active#() This leaves the following ordering requirements: active#(U11(tt, X, Y)) >= mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) >= mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >= mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >= mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >= mark#(U16(isNat(X))) active#(U21(tt, X)) >= mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >= mark#(U23(isNat(X))) active#(U31(tt, X)) >= mark#(U32(isNatKind(X))) active#(isNat(plus(X, Y))) >= mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) >= mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >= mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >= mark#(U41(isNatKind(X))) mark#(U11(X, Y, Z)) >= active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) >= mark#(X) mark#(U12(X, Y, Z)) >= active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >= mark#(X) mark#(isNatKind(X)) >= active#(isNatKind(X)) mark#(U13(X, Y, Z)) >= active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >= mark#(X) mark#(U14(X, Y, Z)) >= active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >= mark#(X) mark#(U15(X, Y)) >= active#(U15(mark(X), Y)) mark#(U15(X, Y)) >= mark#(X) mark#(isNat(X)) >= active#(isNat(X)) mark#(U16(X)) >= mark#(X) mark#(U21(X, Y)) >= active#(U21(mark(X), Y)) mark#(U21(X, Y)) >= mark#(X) mark#(U22(X, Y)) >= active#(U22(mark(X), Y)) mark#(U22(X, Y)) >= mark#(X) mark#(U23(X)) >= mark#(X) mark#(U31(X, Y)) >= active#(U31(mark(X), Y)) mark#(U31(X, Y)) >= mark#(X) mark#(U32(X)) >= mark#(X) mark#(U41(X)) >= mark#(X) mark#(plus(X, Y)) >= mark#(X) mark#(plus(X, Y)) > mark#(Y) U11(mark(X), Y, Z) >= U11(X, Y, Z) U11(X, mark(Y), Z) >= U11(X, Y, Z) U11(X, Y, mark(Z)) >= U11(X, Y, Z) U11(active(X), Y, Z) >= U11(X, Y, Z) U11(X, active(Y), Z) >= U11(X, Y, Z) U11(X, Y, active(Z)) >= U11(X, Y, Z) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1y2.3y0 U12 = \y0y1y2.2y0 U13 = \y0y1y2.2y0 U14 = \y0y1y2.2y0 U15 = \y0y1.y0 U16 = \y0.y0 U21 = \y0y1.2y0 U22 = \y0y1.y0 U23 = \y0.y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.0 U52 = \y0y1.0 U61 = \y0y1y2.0 U62 = \y0y1y2.0 U63 = \y0y1y2.0 U64 = \y0y1y2.0 active = \y0.3y0 active# = \y0.0 isNat = \y0.0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.y0 plus = \y0y1.1 + 2y0 + 2y1 s = \y0.0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U12(isNatKind(_x0), _x0, _x1))]] [[active#(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U13(isNatKind(_x1), _x0, _x1))]] [[active#(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U14(isNatKind(_x1), _x0, _x1))]] [[active#(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U15(isNat(_x0), _x1))]] [[active#(U15(tt, _x0))]] = 0 >= 0 = [[mark#(U16(isNat(_x0)))]] [[active#(U21(tt, _x0))]] = 0 >= 0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U22(tt, _x0))]] = 0 >= 0 = [[mark#(U23(isNat(_x0)))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNat(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U11(isNatKind(_x0), _x0, _x1))]] [[active#(isNat(s(_x0)))]] = 0 >= 0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(U11(_x0, _x1, _x2))]] = 3x0 >= 0 = [[active#(U11(mark(_x0), _x1, _x2))]] [[mark#(U11(_x0, _x1, _x2))]] = 3x0 >= x0 = [[mark#(_x0)]] [[mark#(U12(_x0, _x1, _x2))]] = 2x0 >= 0 = [[active#(U12(mark(_x0), _x1, _x2))]] [[mark#(U12(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= 0 = [[active#(U13(mark(_x0), _x1, _x2))]] [[mark#(U13(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U14(_x0, _x1, _x2))]] = 2x0 >= 0 = [[active#(U14(mark(_x0), _x1, _x2))]] [[mark#(U14(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U15(_x0, _x1))]] = x0 >= 0 = [[active#(U15(mark(_x0), _x1))]] [[mark#(U15(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 0 >= 0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 2x0 >= 0 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = x0 >= 0 = [[active#(U22(mark(_x0), _x1))]] [[mark#(U22(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = x0 >= 0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = 1 + 2x0 + 2x1 > x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = 1 + 2x0 + 2x1 > x1 = [[mark#(_x1)]] [[U11(mark(_x0), _x1, _x2)]] = 3x0 >= 3x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, mark(_x1), _x2)]] = 3x0 >= 3x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, mark(_x2))]] = 3x0 >= 3x0 = [[U11(_x0, _x1, _x2)]] [[U11(active(_x0), _x1, _x2)]] = 9x0 >= 3x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, active(_x1), _x2)]] = 3x0 >= 3x0 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, active(_x2))]] = 3x0 >= 3x0 = [[U11(_x0, _x1, _x2)]] [[U12(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(active(_x0), _x1, _x2)]] = 6x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U13(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(active(_x0), _x1, _x2)]] = 6x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U14(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(active(_x0), _x1, _x2)]] = 6x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U15(mark(_x0), _x1)]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(_x0, mark(_x1))]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(active(_x0), _x1)]] = 3x0 >= x0 = [[U15(_x0, _x1)]] [[U15(_x0, active(_x1))]] = x0 >= x0 = [[U15(_x0, _x1)]] [[isNat(mark(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[isNat(active(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = 3x0 >= x0 = [[U16(_x0)]] [[U21(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = 6x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = 3x0 >= x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U23(mark(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U23(active(_x0))]] = 3x0 >= x0 = [[U23(_x0)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 3x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = 3x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = 3x0 >= x0 = [[U41(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_53, R_3, minimal, formative) by (P_54, R_3, minimal, formative), where P_54 consists of: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(plus(X, Y))) =#> mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_54, R_3, minimal, formative) is finite. We consider the dependency pair problem (P_54, R_3, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U11(tt, X, Y)) >? mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) >? mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >? mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >? mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >? mark#(U16(isNat(X))) active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >? mark#(U23(isNat(X))) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNat(plus(X, Y))) >? mark#(U11(isNatKind(X), X, Y)) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(U11(X, Y, Z)) >? active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) >? mark#(X) mark#(U12(X, Y, Z)) >? active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >? mark#(X) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U13(X, Y, Z)) >? active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >? mark#(X) mark#(U14(X, Y, Z)) >? active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >? mark#(X) mark#(U15(X, Y)) >? active#(U15(mark(X), Y)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? active#(U22(mark(X), Y)) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) U11(mark(X), Y, Z) >= U11(X, Y, Z) U11(X, mark(Y), Z) >= U11(X, Y, Z) U11(X, Y, mark(Z)) >= U11(X, Y, Z) U11(active(X), Y, Z) >= U11(X, Y, Z) U11(X, active(Y), Z) >= U11(X, Y, Z) U11(X, Y, active(Z)) >= U11(X, Y, Z) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1y2.y0 + y1 + y2 U12 = \y0y1y2.y0 + y1 + y2 U13 = \y0y1y2.y0 + y1 + y2 U14 = \y0y1y2.y0 + y1 + y2 U15 = \y0y1.y0 + y1 U16 = \y0.y0 U21 = \y0y1.y0 + y1 U22 = \y0y1.y1 + 2y0 U23 = \y0.y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.y1 U52 = \y0y1.y1 U61 = \y0y1y2.3 + y1 + y2 U62 = \y0y1y2.3 + y1 + y2 U63 = \y0y1y2.3 + y1 + y2 U64 = \y0y1y2.3 + y1 + y2 active = \y0.y0 active# = \y0.1 + y0 isNat = \y0.y0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.1 + y0 plus = \y0y1.3 + y0 + y1 s = \y0.y0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U11(tt, _x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[mark#(U12(isNatKind(_x0), _x0, _x1))]] [[active#(U12(tt, _x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[mark#(U13(isNatKind(_x1), _x0, _x1))]] [[active#(U13(tt, _x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[mark#(U14(isNatKind(_x1), _x0, _x1))]] [[active#(U14(tt, _x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[mark#(U15(isNat(_x0), _x1))]] [[active#(U15(tt, _x0))]] = 1 + x0 >= 1 + x0 = [[mark#(U16(isNat(_x0)))]] [[active#(U21(tt, _x0))]] = 1 + x0 >= 1 + x0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U22(tt, _x0))]] = 1 + x0 >= 1 + x0 = [[mark#(U23(isNat(_x0)))]] [[active#(U31(tt, _x0))]] = 1 >= 1 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNat(plus(_x0, _x1)))]] = 4 + x0 + x1 > 1 + x0 + x1 = [[mark#(U11(isNatKind(_x0), _x0, _x1))]] [[active#(isNat(s(_x0)))]] = 1 + x0 >= 1 + x0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 1 >= 1 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 1 >= 1 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(U11(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active#(U11(mark(_x0), _x1, _x2))]] [[mark#(U11(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 = [[mark#(_x0)]] [[mark#(U12(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active#(U12(mark(_x0), _x1, _x2))]] [[mark#(U12(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 = [[mark#(_x0)]] [[mark#(isNatKind(_x0))]] = 1 >= 1 = [[active#(isNatKind(_x0))]] [[mark#(U13(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active#(U13(mark(_x0), _x1, _x2))]] [[mark#(U13(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 = [[mark#(_x0)]] [[mark#(U14(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active#(U14(mark(_x0), _x1, _x2))]] [[mark#(U14(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 = [[mark#(_x0)]] [[mark#(U15(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active#(U15(mark(_x0), _x1))]] [[mark#(U15(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 1 + x0 >= 1 + x0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = 1 + x0 >= 1 + x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[active#(U22(mark(_x0), _x1))]] [[mark#(U22(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = 1 + x0 >= 1 + x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = 1 + x0 >= 1 + x0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = 1 + x0 >= 1 + x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = 1 + x0 >= 1 + x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = 1 + x0 >= 1 + x0 = [[mark#(_x0)]] [[active(U11(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark(U12(isNatKind(_x0), _x0, _x1))]] [[active(U12(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark(U13(isNatKind(_x1), _x0, _x1))]] [[active(U13(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark(U14(isNatKind(_x1), _x0, _x1))]] [[active(U14(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark(U15(isNat(_x0), _x1))]] [[active(U15(tt, _x0))]] = x0 >= x0 = [[mark(U16(isNat(_x0)))]] [[active(U16(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U21(tt, _x0))]] = x0 >= x0 = [[mark(U22(isNatKind(_x0), _x0))]] [[active(U22(tt, _x0))]] = x0 >= x0 = [[mark(U23(isNat(_x0)))]] [[active(U23(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 0 >= 0 = [[mark(U32(isNatKind(_x0)))]] [[active(U32(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U51(tt, _x0))]] = x0 >= x0 = [[mark(U52(isNatKind(_x0), _x0))]] [[active(U52(tt, _x0))]] = x0 >= x0 = [[mark(_x0)]] [[active(U61(tt, _x0, _x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[mark(U62(isNatKind(_x0), _x0, _x1))]] [[active(U62(tt, _x0, _x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[mark(U63(isNat(_x1), _x0, _x1))]] [[active(U63(tt, _x0, _x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[mark(U64(isNatKind(_x1), _x0, _x1))]] [[active(U64(tt, _x0, _x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[mark(s(plus(_x1, _x0)))]] [[active(isNat(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNat(plus(_x0, _x1)))]] = 3 + x0 + x1 >= x0 + x1 = [[mark(U11(isNatKind(_x0), _x0, _x1))]] [[active(isNat(s(_x0)))]] = x0 >= x0 = [[mark(U21(isNatKind(_x0), _x0))]] [[active(isNatKind(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U31(isNatKind(_x0), _x1))]] [[active(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark(U41(isNatKind(_x0)))]] [[active(plus(_x0, 0))]] = 3 + x0 >= x0 = [[mark(U51(isNat(_x0), _x0))]] [[active(plus(_x0, s(_x1)))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[mark(U61(isNat(_x1), _x1, _x0))]] [[mark(U11(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U11(mark(_x0), _x1, _x2))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U12(mark(_x0), _x1, _x2))]] [[mark(isNatKind(_x0))]] = 0 >= 0 = [[active(isNatKind(_x0))]] [[mark(U13(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U13(mark(_x0), _x1, _x2))]] [[mark(U14(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U14(mark(_x0), _x1, _x2))]] [[mark(U15(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U15(mark(_x0), _x1))]] [[mark(isNat(_x0))]] = x0 >= x0 = [[active(isNat(_x0))]] [[mark(U16(_x0))]] = x0 >= x0 = [[active(U16(mark(_x0)))]] [[mark(U21(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U21(mark(_x0), _x1))]] [[mark(U22(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active(U22(mark(_x0), _x1))]] [[mark(U23(_x0))]] = x0 >= x0 = [[active(U23(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 >= x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0))]] = x0 >= x0 = [[active(U32(mark(_x0)))]] [[mark(U41(_x0))]] = x0 >= x0 = [[active(U41(mark(_x0)))]] [[mark(U51(_x0, _x1))]] = x1 >= x1 = [[active(U51(mark(_x0), _x1))]] [[mark(U52(_x0, _x1))]] = x1 >= x1 = [[active(U52(mark(_x0), _x1))]] [[mark(U61(_x0, _x1, _x2))]] = 3 + x1 + x2 >= 3 + x1 + x2 = [[active(U61(mark(_x0), _x1, _x2))]] [[mark(U62(_x0, _x1, _x2))]] = 3 + x1 + x2 >= 3 + x1 + x2 = [[active(U62(mark(_x0), _x1, _x2))]] [[mark(U63(_x0, _x1, _x2))]] = 3 + x1 + x2 >= 3 + x1 + x2 = [[active(U63(mark(_x0), _x1, _x2))]] [[mark(U64(_x0, _x1, _x2))]] = 3 + x1 + x2 >= 3 + x1 + x2 = [[active(U64(mark(_x0), _x1, _x2))]] [[mark(s(_x0))]] = x0 >= x0 = [[active(s(mark(_x0)))]] [[mark(plus(_x0, _x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[active(plus(mark(_x0), mark(_x1)))]] [[mark(0)]] = 0 >= 0 = [[active(0)]] [[U11(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U11(_x0, _x1, _x2)]] [[U11(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U11(_x0, _x1, _x2)]] [[U11(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U11(_x0, _x1, _x2)]] [[U12(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U12(_x0, _x1, _x2)]] [[U12(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U12(_x0, _x1, _x2)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U13(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U13(_x0, _x1, _x2)]] [[U13(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U13(_x0, _x1, _x2)]] [[U14(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U14(_x0, _x1, _x2)]] [[U14(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U14(_x0, _x1, _x2)]] [[U15(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U15(_x0, _x1)]] [[U15(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U15(_x0, _x1)]] [[U15(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U15(_x0, _x1)]] [[U15(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U15(_x0, _x1)]] [[isNat(mark(_x0))]] = x0 >= x0 = [[isNat(_x0)]] [[isNat(active(_x0))]] = x0 >= x0 = [[isNat(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U21(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U22(_x0, _x1)]] [[U23(mark(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U23(active(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[s(mark(_x0))]] = x0 >= x0 = [[s(_x0)]] [[s(active(_x0))]] = x0 >= x0 = [[s(_x0)]] [[plus(mark(_x0), _x1)]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[plus(_x0, _x1)]] [[plus(_x0, mark(_x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[plus(_x0, _x1)]] [[plus(active(_x0), _x1)]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[plus(_x0, _x1)]] [[plus(_x0, active(_x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[plus(_x0, _x1)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_54, R_3, minimal, formative) by (P_55, R_3, minimal, formative), where P_55 consists of: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(U11(X, Y, Z)) =#> active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) =#> mark#(X) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_55, R_3, minimal, formative) is finite. We consider the dependency pair problem (P_55, R_3, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U11(tt, X, Y)) >? mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) >? mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >? mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >? mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >? mark#(U16(isNat(X))) active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >? mark#(U23(isNat(X))) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(U11(X, Y, Z)) >? active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) >? mark#(X) mark#(U12(X, Y, Z)) >? active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >? mark#(X) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U13(X, Y, Z)) >? active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >? mark#(X) mark#(U14(X, Y, Z)) >? active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >? mark#(X) mark#(U15(X, Y)) >? active#(U15(mark(X), Y)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? active#(U22(mark(X), Y)) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) U11(mark(X), Y, Z) >= U11(X, Y, Z) U11(X, mark(Y), Z) >= U11(X, Y, Z) U11(X, Y, mark(Z)) >= U11(X, Y, Z) U11(active(X), Y, Z) >= U11(X, Y, Z) U11(X, active(Y), Z) >= U11(X, Y, Z) U11(X, Y, active(Z)) >= U11(X, Y, Z) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. We consider usable_rules with respect to the following argument filtering: active#(x_1) = active#() This leaves the following ordering requirements: active#(U11(tt, X, Y)) >= mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) >= mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >= mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >= mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >= mark#(U16(isNat(X))) active#(U21(tt, X)) >= mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >= mark#(U23(isNat(X))) active#(U31(tt, X)) >= mark#(U32(isNatKind(X))) active#(isNat(s(X))) >= mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >= mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >= mark#(U41(isNatKind(X))) mark#(U11(X, Y, Z)) >= active#(U11(mark(X), Y, Z)) mark#(U11(X, Y, Z)) > mark#(X) mark#(U12(X, Y, Z)) >= active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >= mark#(X) mark#(isNatKind(X)) >= active#(isNatKind(X)) mark#(U13(X, Y, Z)) >= active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >= mark#(X) mark#(U14(X, Y, Z)) >= active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >= mark#(X) mark#(U15(X, Y)) >= active#(U15(mark(X), Y)) mark#(U15(X, Y)) >= mark#(X) mark#(isNat(X)) >= active#(isNat(X)) mark#(U16(X)) >= mark#(X) mark#(U21(X, Y)) >= active#(U21(mark(X), Y)) mark#(U21(X, Y)) >= mark#(X) mark#(U22(X, Y)) >= active#(U22(mark(X), Y)) mark#(U22(X, Y)) >= mark#(X) mark#(U23(X)) >= mark#(X) mark#(U31(X, Y)) >= active#(U31(mark(X), Y)) mark#(U31(X, Y)) >= mark#(X) mark#(U32(X)) >= mark#(X) mark#(U41(X)) >= mark#(X) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1y2.2 + y0 + 2y1 + 2y2 U12 = \y0y1y2.2y0 U13 = \y0y1y2.2y0 U14 = \y0y1y2.2y0 U15 = \y0y1.y0 U16 = \y0.y0 U21 = \y0y1.2y0 U22 = \y0y1.y0 U23 = \y0.2y0 U31 = \y0y1.y0 U32 = \y0.2y0 U41 = \y0.y0 U51 = \y0y1.0 U52 = \y0y1.0 U61 = \y0y1y2.0 U62 = \y0y1y2.0 U63 = \y0y1y2.0 U64 = \y0y1y2.0 active = \y0.y0 active# = \y0.0 isNat = \y0.0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.2y0 plus = \y0y1.0 s = \y0.0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U11(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U12(isNatKind(_x0), _x0, _x1))]] [[active#(U12(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U13(isNatKind(_x1), _x0, _x1))]] [[active#(U13(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U14(isNatKind(_x1), _x0, _x1))]] [[active#(U14(tt, _x0, _x1))]] = 0 >= 0 = [[mark#(U15(isNat(_x0), _x1))]] [[active#(U15(tt, _x0))]] = 0 >= 0 = [[mark#(U16(isNat(_x0)))]] [[active#(U21(tt, _x0))]] = 0 >= 0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U22(tt, _x0))]] = 0 >= 0 = [[mark#(U23(isNat(_x0)))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNat(s(_x0)))]] = 0 >= 0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(U11(_x0, _x1, _x2))]] = 4 + 2x0 + 4x1 + 4x2 > 0 = [[active#(U11(mark(_x0), _x1, _x2))]] [[mark#(U11(_x0, _x1, _x2))]] = 4 + 2x0 + 4x1 + 4x2 > 2x0 = [[mark#(_x0)]] [[mark#(U12(_x0, _x1, _x2))]] = 4x0 >= 0 = [[active#(U12(mark(_x0), _x1, _x2))]] [[mark#(U12(_x0, _x1, _x2))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U13(_x0, _x1, _x2))]] = 4x0 >= 0 = [[active#(U13(mark(_x0), _x1, _x2))]] [[mark#(U13(_x0, _x1, _x2))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U14(_x0, _x1, _x2))]] = 4x0 >= 0 = [[active#(U14(mark(_x0), _x1, _x2))]] [[mark#(U14(_x0, _x1, _x2))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U15(_x0, _x1))]] = 2x0 >= 0 = [[active#(U15(mark(_x0), _x1))]] [[mark#(U15(_x0, _x1))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 0 >= 0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 4x0 >= 0 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 2x0 >= 0 = [[active#(U22(mark(_x0), _x1))]] [[mark#(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = 2x0 >= 0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[U12(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U12(_x0, _x1, _x2)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U13(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U13(_x0, _x1, _x2)]] [[U14(mark(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, mark(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, mark(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(active(_x0), _x1, _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, active(_x1), _x2)]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, active(_x2))]] = 2x0 >= 2x0 = [[U14(_x0, _x1, _x2)]] [[U15(mark(_x0), _x1)]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(_x0, mark(_x1))]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(active(_x0), _x1)]] = x0 >= x0 = [[U15(_x0, _x1)]] [[U15(_x0, active(_x1))]] = x0 >= x0 = [[U15(_x0, _x1)]] [[isNat(mark(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[isNat(active(_x0))]] = 0 >= 0 = [[isNat(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U21(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U23(mark(_x0))]] = 2x0 >= 2x0 = [[U23(_x0)]] [[U23(active(_x0))]] = 2x0 >= 2x0 = [[U23(_x0)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = 2x0 >= 2x0 = [[U32(_x0)]] [[U32(active(_x0))]] = 2x0 >= 2x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = x0 >= x0 = [[U41(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_55, R_3, minimal, formative) by (P_56, R_3, minimal, formative), where P_56 consists of: active#(U11(tt, X, Y)) =#> mark#(U12(isNatKind(X), X, Y)) active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_56, R_3, minimal, formative) is finite. We consider the dependency pair problem (P_56, R_3, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 11, 12 * 1 : 14, 15 * 2 : 16, 17 * 3 : 18, 19 * 4 : 21 * 5 : 24, 25 * 6 : 26 * 7 : 29 * 8 : 22, 23 * 9 : 27, 28 * 10 : 30 * 11 : 1 * 12 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 13 : 9, 10 * 14 : 2 * 15 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 16 : 3 * 17 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 18 : 4 * 19 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 20 : 8 * 21 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 22 : 5 * 23 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 24 : 6 * 25 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 26 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 27 : 7 * 28 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 29 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 30 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 This graph has the following strongly connected components: P_57: active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) =#> mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) =#> mark#(U15(isNat(X), Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) =#> mark#(X) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) =#> mark#(X) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> mark#(X) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_56, R_3, m, f) by (P_57, R_3, m, f). Thus, the original system is terminating if (P_57, R_3, minimal, formative) is finite. We consider the dependency pair problem (P_57, R_3, minimal, formative). The formative rules of (P_57, R_3) are R_4 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) U12(mark(X), Y, Z) => U12(X, Y, Z) U12(X, mark(Y), Z) => U12(X, Y, Z) U12(X, Y, mark(Z)) => U12(X, Y, Z) U12(active(X), Y, Z) => U12(X, Y, Z) U12(X, active(Y), Z) => U12(X, Y, Z) U12(X, Y, active(Z)) => U12(X, Y, Z) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U13(mark(X), Y, Z) => U13(X, Y, Z) U13(X, mark(Y), Z) => U13(X, Y, Z) U13(X, Y, mark(Z)) => U13(X, Y, Z) U13(active(X), Y, Z) => U13(X, Y, Z) U13(X, active(Y), Z) => U13(X, Y, Z) U13(X, Y, active(Z)) => U13(X, Y, Z) U14(mark(X), Y, Z) => U14(X, Y, Z) U14(X, mark(Y), Z) => U14(X, Y, Z) U14(X, Y, mark(Z)) => U14(X, Y, Z) U14(active(X), Y, Z) => U14(X, Y, Z) U14(X, active(Y), Z) => U14(X, Y, Z) U14(X, Y, active(Z)) => U14(X, Y, Z) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) isNat(mark(X)) => isNat(X) isNat(active(X)) => isNat(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U21(mark(X), Y) => U21(X, Y) U21(X, mark(Y)) => U21(X, Y) U21(active(X), Y) => U21(X, Y) U21(X, active(Y)) => U21(X, Y) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U23(mark(X)) => U23(X) U23(active(X)) => U23(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_57, R_3, minimal, formative) by (P_57, R_4, minimal, formative). Thus, the original system is terminating if (P_57, R_4, minimal, formative) is finite. We consider the dependency pair problem (P_57, R_4, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U12(tt, X, Y)) >? mark#(U13(isNatKind(Y), X, Y)) active#(U13(tt, X, Y)) >? mark#(U14(isNatKind(Y), X, Y)) active#(U14(tt, X, Y)) >? mark#(U15(isNat(X), Y)) active#(U15(tt, X)) >? mark#(U16(isNat(X))) active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >? mark#(U23(isNat(X))) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(U12(X, Y, Z)) >? active#(U12(mark(X), Y, Z)) mark#(U12(X, Y, Z)) >? mark#(X) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U13(X, Y, Z)) >? active#(U13(mark(X), Y, Z)) mark#(U13(X, Y, Z)) >? mark#(X) mark#(U14(X, Y, Z)) >? active#(U14(mark(X), Y, Z)) mark#(U14(X, Y, Z)) >? mark#(X) mark#(U15(X, Y)) >? active#(U15(mark(X), Y)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? active#(U22(mark(X), Y)) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) U12(mark(X), Y, Z) >= U12(X, Y, Z) U12(X, mark(Y), Z) >= U12(X, Y, Z) U12(X, Y, mark(Z)) >= U12(X, Y, Z) U12(active(X), Y, Z) >= U12(X, Y, Z) U12(X, active(Y), Z) >= U12(X, Y, Z) U12(X, Y, active(Z)) >= U12(X, Y, Z) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U13(mark(X), Y, Z) >= U13(X, Y, Z) U13(X, mark(Y), Z) >= U13(X, Y, Z) U13(X, Y, mark(Z)) >= U13(X, Y, Z) U13(active(X), Y, Z) >= U13(X, Y, Z) U13(X, active(Y), Z) >= U13(X, Y, Z) U13(X, Y, active(Z)) >= U13(X, Y, Z) U14(mark(X), Y, Z) >= U14(X, Y, Z) U14(X, mark(Y), Z) >= U14(X, Y, Z) U14(X, Y, mark(Z)) >= U14(X, Y, Z) U14(active(X), Y, Z) >= U14(X, Y, Z) U14(X, active(Y), Z) >= U14(X, Y, Z) U14(X, Y, active(Z)) >= U14(X, Y, Z) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 2 U11 = \y0y1y2.2 + y2 + 2y1 U12 = \y0y1y2.2 + y2 + 2y0 + 2y1 U13 = \y0y1y2.2 + y2 + 2y0 + 2y1 U14 = \y0y1y2.1 + y0 + y2 + 2y1 U15 = \y0y1.y1 + 2y0 U16 = \y0.y0 U21 = \y0y1.y0 + y1 U22 = \y0y1.y1 + 2y0 U23 = \y0.y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.y1 U52 = \y0y1.y1 U61 = \y0y1y2.2 + 2y1 + 2y2 U62 = \y0y1y2.2 + 2y1 + 2y2 U63 = \y0y1y2.2 + 2y1 + 2y2 U64 = \y0y1y2.2 + 2y1 + 2y2 active = \y0.y0 active# = \y0.y0 isNat = \y0.y0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.y0 plus = \y0y1.2 + 2y0 + 2y1 s = \y0.y0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U12(tt, _x0, _x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[mark#(U13(isNatKind(_x1), _x0, _x1))]] [[active#(U13(tt, _x0, _x1))]] = 2 + x1 + 2x0 > 1 + x1 + 2x0 = [[mark#(U14(isNatKind(_x1), _x0, _x1))]] [[active#(U14(tt, _x0, _x1))]] = 1 + x1 + 2x0 > x1 + 2x0 = [[mark#(U15(isNat(_x0), _x1))]] [[active#(U15(tt, _x0))]] = x0 >= x0 = [[mark#(U16(isNat(_x0)))]] [[active#(U21(tt, _x0))]] = x0 >= x0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U22(tt, _x0))]] = x0 >= x0 = [[mark#(U23(isNat(_x0)))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNat(s(_x0)))]] = x0 >= x0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(U12(_x0, _x1, _x2))]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[active#(U12(mark(_x0), _x1, _x2))]] [[mark#(U12(_x0, _x1, _x2))]] = 2 + x2 + 2x0 + 2x1 > x0 = [[mark#(_x0)]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U13(_x0, _x1, _x2))]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[active#(U13(mark(_x0), _x1, _x2))]] [[mark#(U13(_x0, _x1, _x2))]] = 2 + x2 + 2x0 + 2x1 > x0 = [[mark#(_x0)]] [[mark#(U14(_x0, _x1, _x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[active#(U14(mark(_x0), _x1, _x2))]] [[mark#(U14(_x0, _x1, _x2))]] = 1 + x0 + x2 + 2x1 > x0 = [[mark#(_x0)]] [[mark#(U15(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active#(U15(mark(_x0), _x1))]] [[mark#(U15(_x0, _x1))]] = x1 + 2x0 >= x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = x0 >= x0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = x0 + x1 >= x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active#(U22(mark(_x0), _x1))]] [[mark#(U22(_x0, _x1))]] = x1 + 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[active(U11(tt, _x0, _x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[mark(U12(isNatKind(_x0), _x0, _x1))]] [[active(U12(tt, _x0, _x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[mark(U13(isNatKind(_x1), _x0, _x1))]] [[active(U13(tt, _x0, _x1))]] = 2 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(U14(isNatKind(_x1), _x0, _x1))]] [[active(U14(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= x1 + 2x0 = [[mark(U15(isNat(_x0), _x1))]] [[active(U15(tt, _x0))]] = x0 >= x0 = [[mark(U16(isNat(_x0)))]] [[active(U16(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U21(tt, _x0))]] = x0 >= x0 = [[mark(U22(isNatKind(_x0), _x0))]] [[active(U22(tt, _x0))]] = x0 >= x0 = [[mark(U23(isNat(_x0)))]] [[active(U23(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 0 >= 0 = [[mark(U32(isNatKind(_x0)))]] [[active(U32(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U51(tt, _x0))]] = x0 >= x0 = [[mark(U52(isNatKind(_x0), _x0))]] [[active(U52(tt, _x0))]] = x0 >= x0 = [[mark(_x0)]] [[active(U61(tt, _x0, _x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[mark(U62(isNatKind(_x0), _x0, _x1))]] [[active(U62(tt, _x0, _x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[mark(U63(isNat(_x1), _x0, _x1))]] [[active(U63(tt, _x0, _x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[mark(U64(isNatKind(_x1), _x0, _x1))]] [[active(U64(tt, _x0, _x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[mark(s(plus(_x1, _x0)))]] [[active(isNat(0))]] = 2 >= 0 = [[mark(tt)]] [[active(isNat(plus(_x0, _x1)))]] = 2 + 2x0 + 2x1 >= 2 + x1 + 2x0 = [[mark(U11(isNatKind(_x0), _x0, _x1))]] [[active(isNat(s(_x0)))]] = x0 >= x0 = [[mark(U21(isNatKind(_x0), _x0))]] [[active(isNatKind(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U31(isNatKind(_x0), _x1))]] [[active(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark(U41(isNatKind(_x0)))]] [[active(plus(_x0, 0))]] = 6 + 2x0 >= x0 = [[mark(U51(isNat(_x0), _x0))]] [[active(plus(_x0, s(_x1)))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[mark(U61(isNat(_x1), _x1, _x0))]] [[mark(U11(_x0, _x1, _x2))]] = 2 + x2 + 2x1 >= 2 + x2 + 2x1 = [[active(U11(mark(_x0), _x1, _x2))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1, _x2))]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[active(U12(mark(_x0), _x1, _x2))]] [[mark(isNatKind(_x0))]] = 0 >= 0 = [[active(isNatKind(_x0))]] [[mark(U13(_x0, _x1, _x2))]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[active(U13(mark(_x0), _x1, _x2))]] [[mark(U14(_x0, _x1, _x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[active(U14(mark(_x0), _x1, _x2))]] [[mark(U15(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active(U15(mark(_x0), _x1))]] [[mark(isNat(_x0))]] = x0 >= x0 = [[active(isNat(_x0))]] [[mark(U16(_x0))]] = x0 >= x0 = [[active(U16(mark(_x0)))]] [[mark(U21(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U21(mark(_x0), _x1))]] [[mark(U22(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active(U22(mark(_x0), _x1))]] [[mark(U23(_x0))]] = x0 >= x0 = [[active(U23(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 >= x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0))]] = x0 >= x0 = [[active(U32(mark(_x0)))]] [[mark(U41(_x0))]] = x0 >= x0 = [[active(U41(mark(_x0)))]] [[mark(U51(_x0, _x1))]] = x1 >= x1 = [[active(U51(mark(_x0), _x1))]] [[mark(U52(_x0, _x1))]] = x1 >= x1 = [[active(U52(mark(_x0), _x1))]] [[mark(U61(_x0, _x1, _x2))]] = 2 + 2x1 + 2x2 >= 2 + 2x1 + 2x2 = [[active(U61(mark(_x0), _x1, _x2))]] [[mark(U62(_x0, _x1, _x2))]] = 2 + 2x1 + 2x2 >= 2 + 2x1 + 2x2 = [[active(U62(mark(_x0), _x1, _x2))]] [[mark(U63(_x0, _x1, _x2))]] = 2 + 2x1 + 2x2 >= 2 + 2x1 + 2x2 = [[active(U63(mark(_x0), _x1, _x2))]] [[mark(U64(_x0, _x1, _x2))]] = 2 + 2x1 + 2x2 >= 2 + 2x1 + 2x2 = [[active(U64(mark(_x0), _x1, _x2))]] [[mark(s(_x0))]] = x0 >= x0 = [[active(s(mark(_x0)))]] [[mark(plus(_x0, _x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[active(plus(mark(_x0), mark(_x1)))]] [[mark(0)]] = 2 >= 2 = [[active(0)]] [[U12(mark(_x0), _x1, _x2)]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, mark(_x1), _x2)]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, mark(_x2))]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U12(_x0, _x1, _x2)]] [[U12(active(_x0), _x1, _x2)]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, active(_x1), _x2)]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U12(_x0, _x1, _x2)]] [[U12(_x0, _x1, active(_x2))]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U12(_x0, _x1, _x2)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U13(mark(_x0), _x1, _x2)]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, mark(_x1), _x2)]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, mark(_x2))]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U13(_x0, _x1, _x2)]] [[U13(active(_x0), _x1, _x2)]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, active(_x1), _x2)]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U13(_x0, _x1, _x2)]] [[U13(_x0, _x1, active(_x2))]] = 2 + x2 + 2x0 + 2x1 >= 2 + x2 + 2x0 + 2x1 = [[U13(_x0, _x1, _x2)]] [[U14(mark(_x0), _x1, _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, mark(_x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U14(_x0, _x1, _x2)]] [[U14(active(_x0), _x1, _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, active(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U14(_x0, _x1, _x2)]] [[U14(_x0, _x1, active(_x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U14(_x0, _x1, _x2)]] [[U15(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U15(_x0, _x1)]] [[U15(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U15(_x0, _x1)]] [[U15(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U15(_x0, _x1)]] [[U15(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U15(_x0, _x1)]] [[isNat(mark(_x0))]] = x0 >= x0 = [[isNat(_x0)]] [[isNat(active(_x0))]] = x0 >= x0 = [[isNat(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U21(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U22(_x0, _x1)]] [[U23(mark(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U23(active(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[s(mark(_x0))]] = x0 >= x0 = [[s(_x0)]] [[s(active(_x0))]] = x0 >= x0 = [[s(_x0)]] [[plus(mark(_x0), _x1)]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, mark(_x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(active(_x0), _x1)]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, active(_x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[plus(_x0, _x1)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_57, R_4, minimal, formative) by (P_58, R_4, minimal, formative), where P_58 consists of: active#(U12(tt, X, Y)) =#> mark#(U13(isNatKind(Y), X, Y)) active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(U12(X, Y, Z)) =#> active#(U12(mark(X), Y, Z)) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U13(X, Y, Z)) =#> active#(U13(mark(X), Y, Z)) mark#(U14(X, Y, Z)) =#> active#(U14(mark(X), Y, Z)) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_58, R_4, minimal, formative) is finite. We consider the dependency pair problem (P_58, R_4, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 10 * 1 : 15 * 2 : 18, 19 * 3 : 20 * 4 : 23 * 5 : 16, 17 * 6 : 21, 22 * 7 : 24 * 8 : 0 * 9 : 6, 7 * 10 : * 11 : * 12 : 1 * 13 : 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 14 : 5 * 15 : 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 16 : 2 * 17 : 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 18 : 3 * 19 : 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 20 : 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 21 : 4 * 22 : 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 23 : 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 * 24 : 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 This graph has the following strongly connected components: P_59: active#(U15(tt, X)) =#> mark#(U16(isNat(X))) active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) =#> mark#(U23(isNat(X))) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_58, R_4, m, f) by (P_59, R_4, m, f). Thus, the original system is terminating if (P_59, R_4, minimal, formative) is finite. We consider the dependency pair problem (P_59, R_4, minimal, formative). The formative rules of (P_59, R_4) are R_5 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) isNat(mark(X)) => isNat(X) isNat(active(X)) => isNat(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U21(mark(X), Y) => U21(X, Y) U21(X, mark(Y)) => U21(X, Y) U21(active(X), Y) => U21(X, Y) U21(X, active(Y)) => U21(X, Y) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U23(mark(X)) => U23(X) U23(active(X)) => U23(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_59, R_4, minimal, formative) by (P_59, R_5, minimal, formative). Thus, the original system is terminating if (P_59, R_5, minimal, formative) is finite. We consider the dependency pair problem (P_59, R_5, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U15(tt, X)) >? mark#(U16(isNat(X))) active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U22(tt, X)) >? mark#(U23(isNat(X))) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U15(X, Y)) >? active#(U15(mark(X), Y)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? active#(U22(mark(X), Y)) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 1 U11 = \y0y1y2.2y1 + 2y2 U12 = \y0y1y2.2y1 + 2y2 U13 = \y0y1y2.2y1 + 2y2 U14 = \y0y1y2.2y1 + 2y2 U15 = \y0y1.y0 + 2y1 U16 = \y0.y0 U21 = \y0y1.y0 + 2y1 U22 = \y0y1.y0 + 2y1 U23 = \y0.y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.y1 U52 = \y0y1.y1 U61 = \y0y1y2.1 + y2 + 2y1 U62 = \y0y1y2.1 + y2 + 2y1 U63 = \y0y1y2.1 + y2 + 2y1 U64 = \y0y1y2.1 + y2 + 2y1 active = \y0.y0 active# = \y0.2y0 isNat = \y0.2y0 isNatKind = \y0.2 mark = \y0.y0 mark# = \y0.2y0 plus = \y0y1.y0 + 2y1 s = \y0.1 + y0 tt = 2 Using this interpretation, the requirements translate to: [[active#(U15(tt, _x0))]] = 4 + 4x0 > 4x0 = [[mark#(U16(isNat(_x0)))]] [[active#(U21(tt, _x0))]] = 4 + 4x0 >= 4 + 4x0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U22(tt, _x0))]] = 4 + 4x0 > 4x0 = [[mark#(U23(isNat(_x0)))]] [[active#(U31(tt, _x0))]] = 4 >= 4 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNat(s(_x0)))]] = 4 + 4x0 >= 4 + 4x0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 4 >= 4 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 4 >= 4 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(isNatKind(_x0))]] = 4 >= 4 = [[active#(isNatKind(_x0))]] [[mark#(U15(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 4x1 = [[active#(U15(mark(_x0), _x1))]] [[mark#(U15(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 4x0 >= 4x0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 4x1 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 4x1 = [[active#(U22(mark(_x0), _x1))]] [[mark#(U22(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = 2x0 >= 2x0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[active(U11(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U12(isNatKind(_x0), _x0, _x1))]] [[active(U12(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U13(isNatKind(_x1), _x0, _x1))]] [[active(U13(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U14(isNatKind(_x1), _x0, _x1))]] [[active(U14(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U15(isNat(_x0), _x1))]] [[active(U15(tt, _x0))]] = 2 + 2x0 >= 2x0 = [[mark(U16(isNat(_x0)))]] [[active(U16(tt))]] = 2 >= 2 = [[mark(tt)]] [[active(U21(tt, _x0))]] = 2 + 2x0 >= 2 + 2x0 = [[mark(U22(isNatKind(_x0), _x0))]] [[active(U22(tt, _x0))]] = 2 + 2x0 >= 2x0 = [[mark(U23(isNat(_x0)))]] [[active(U23(tt))]] = 2 >= 2 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 2 >= 2 = [[mark(U32(isNatKind(_x0)))]] [[active(U32(tt))]] = 2 >= 2 = [[mark(tt)]] [[active(U41(tt))]] = 2 >= 2 = [[mark(tt)]] [[active(U51(tt, _x0))]] = x0 >= x0 = [[mark(U52(isNatKind(_x0), _x0))]] [[active(U52(tt, _x0))]] = x0 >= x0 = [[mark(_x0)]] [[active(U61(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(U62(isNatKind(_x0), _x0, _x1))]] [[active(U62(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(U63(isNat(_x1), _x0, _x1))]] [[active(U63(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(U64(isNatKind(_x1), _x0, _x1))]] [[active(U64(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(s(plus(_x1, _x0)))]] [[active(isNat(0))]] = 2 >= 2 = [[mark(tt)]] [[active(isNat(plus(_x0, _x1)))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[mark(U11(isNatKind(_x0), _x0, _x1))]] [[active(isNat(s(_x0)))]] = 2 + 2x0 >= 2 + 2x0 = [[mark(U21(isNatKind(_x0), _x0))]] [[active(isNatKind(0))]] = 2 >= 2 = [[mark(tt)]] [[active(isNatKind(plus(_x0, _x1)))]] = 2 >= 2 = [[mark(U31(isNatKind(_x0), _x1))]] [[active(isNatKind(s(_x0)))]] = 2 >= 2 = [[mark(U41(isNatKind(_x0)))]] [[active(plus(_x0, 0))]] = 2 + x0 >= x0 = [[mark(U51(isNat(_x0), _x0))]] [[active(plus(_x0, s(_x1)))]] = 2 + x0 + 2x1 >= 1 + x0 + 2x1 = [[mark(U61(isNat(_x1), _x1, _x0))]] [[mark(U11(_x0, _x1, _x2))]] = 2x1 + 2x2 >= 2x1 + 2x2 = [[active(U11(mark(_x0), _x1, _x2))]] [[mark(tt)]] = 2 >= 2 = [[active(tt)]] [[mark(U12(_x0, _x1, _x2))]] = 2x1 + 2x2 >= 2x1 + 2x2 = [[active(U12(mark(_x0), _x1, _x2))]] [[mark(isNatKind(_x0))]] = 2 >= 2 = [[active(isNatKind(_x0))]] [[mark(U13(_x0, _x1, _x2))]] = 2x1 + 2x2 >= 2x1 + 2x2 = [[active(U13(mark(_x0), _x1, _x2))]] [[mark(U14(_x0, _x1, _x2))]] = 2x1 + 2x2 >= 2x1 + 2x2 = [[active(U14(mark(_x0), _x1, _x2))]] [[mark(U15(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U15(mark(_x0), _x1))]] [[mark(isNat(_x0))]] = 2x0 >= 2x0 = [[active(isNat(_x0))]] [[mark(U16(_x0))]] = x0 >= x0 = [[active(U16(mark(_x0)))]] [[mark(U21(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U21(mark(_x0), _x1))]] [[mark(U22(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U22(mark(_x0), _x1))]] [[mark(U23(_x0))]] = x0 >= x0 = [[active(U23(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 >= x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0))]] = x0 >= x0 = [[active(U32(mark(_x0)))]] [[mark(U41(_x0))]] = x0 >= x0 = [[active(U41(mark(_x0)))]] [[mark(U51(_x0, _x1))]] = x1 >= x1 = [[active(U51(mark(_x0), _x1))]] [[mark(U52(_x0, _x1))]] = x1 >= x1 = [[active(U52(mark(_x0), _x1))]] [[mark(U61(_x0, _x1, _x2))]] = 1 + x2 + 2x1 >= 1 + x2 + 2x1 = [[active(U61(mark(_x0), _x1, _x2))]] [[mark(U62(_x0, _x1, _x2))]] = 1 + x2 + 2x1 >= 1 + x2 + 2x1 = [[active(U62(mark(_x0), _x1, _x2))]] [[mark(U63(_x0, _x1, _x2))]] = 1 + x2 + 2x1 >= 1 + x2 + 2x1 = [[active(U63(mark(_x0), _x1, _x2))]] [[mark(U64(_x0, _x1, _x2))]] = 1 + x2 + 2x1 >= 1 + x2 + 2x1 = [[active(U64(mark(_x0), _x1, _x2))]] [[mark(s(_x0))]] = 1 + x0 >= 1 + x0 = [[active(s(mark(_x0)))]] [[mark(plus(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(plus(mark(_x0), mark(_x1)))]] [[mark(0)]] = 1 >= 1 = [[active(0)]] [[isNatKind(mark(_x0))]] = 2 >= 2 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 2 >= 2 = [[isNatKind(_x0)]] [[U15(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U15(_x0, _x1)]] [[U15(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U15(_x0, _x1)]] [[U15(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U15(_x0, _x1)]] [[U15(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U15(_x0, _x1)]] [[isNat(mark(_x0))]] = 2x0 >= 2x0 = [[isNat(_x0)]] [[isNat(active(_x0))]] = 2x0 >= 2x0 = [[isNat(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U21(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U22(_x0, _x1)]] [[U23(mark(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U23(active(_x0))]] = x0 >= x0 = [[U23(_x0)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[s(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[s(_x0)]] [[s(active(_x0))]] = 1 + x0 >= 1 + x0 = [[s(_x0)]] [[plus(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_59, R_5, minimal, formative) by (P_60, R_5, minimal, formative), where P_60 consists of: active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U15(X, Y)) =#> active#(U15(mark(X), Y)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> active#(U22(mark(X), Y)) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_60, R_5, minimal, formative) is finite. We consider the dependency pair problem (P_60, R_5, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 12, 13 * 1 : 17 * 2 : 10, 11 * 3 : 15, 16 * 4 : 18 * 5 : 3, 4 * 6 : * 7 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 * 8 : 2 * 9 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 * 10 : 0 * 11 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 * 12 : * 13 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 * 14 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 * 15 : 1 * 16 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 * 17 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 * 18 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 This graph has the following strongly connected components: P_61: active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> mark#(X) mark#(U23(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_60, R_5, m, f) by (P_61, R_5, m, f). Thus, the original system is terminating if (P_61, R_5, minimal, formative) is finite. We consider the dependency pair problem (P_61, R_5, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? mark#(X) mark#(U23(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U23(mark(X)) >= U23(X) U23(active(X)) >= U23(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. We consider usable_rules with respect to the following argument filtering: active#(x_1) = active#() This leaves the following ordering requirements: active#(U21(tt, X)) >= mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) >= mark#(U32(isNatKind(X))) active#(isNat(s(X))) >= mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >= mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >= mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >= active#(isNatKind(X)) mark#(U15(X, Y)) >= mark#(X) mark#(isNat(X)) >= active#(isNat(X)) mark#(U16(X)) >= mark#(X) mark#(U21(X, Y)) >= active#(U21(mark(X), Y)) mark#(U21(X, Y)) >= mark#(X) mark#(U22(X, Y)) >= mark#(X) mark#(U23(X)) > mark#(X) mark#(U31(X, Y)) >= active#(U31(mark(X), Y)) mark#(U31(X, Y)) >= mark#(X) mark#(U32(X)) >= mark#(X) mark#(U41(X)) >= mark#(X) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1y2.0 U12 = \y0y1y2.0 U13 = \y0y1y2.0 U14 = \y0y1y2.0 U15 = \y0y1.y0 U16 = \y0.y0 U21 = \y0y1.2y0 U22 = \y0y1.y0 U23 = \y0.1 + 2y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.0 U52 = \y0y1.0 U61 = \y0y1y2.0 U62 = \y0y1y2.0 U63 = \y0y1y2.0 U64 = \y0y1y2.0 active = \y0.2y0 active# = \y0.0 isNat = \y0.0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.y0 plus = \y0y1.0 s = \y0.0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U21(tt, _x0))]] = 0 >= 0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNat(s(_x0)))]] = 0 >= 0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U15(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 0 >= 0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 2x0 >= 0 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U23(_x0))]] = 1 + 2x0 > x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = x0 >= 0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U21(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = 4x0 >= 2x0 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = 2x0 >= x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U31(mark(_x0), _x1)]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 2x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = 2x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = 2x0 >= x0 = [[U41(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_61, R_5, minimal, formative) by (P_62, R_5, minimal, formative), where P_62 consists of: active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U15(X, Y)) =#> mark#(X) mark#(isNat(X)) =#> active#(isNat(X)) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_62, R_5, minimal, formative) is finite. We consider the dependency pair problem (P_62, R_5, minimal, formative). The formative rules of (P_62, R_5) are R_6 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) isNat(mark(X)) => isNat(X) isNat(active(X)) => isNat(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U21(mark(X), Y) => U21(X, Y) U21(X, mark(Y)) => U21(X, Y) U21(active(X), Y) => U21(X, Y) U21(X, active(Y)) => U21(X, Y) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_62, R_5, minimal, formative) by (P_62, R_6, minimal, formative). Thus, the original system is terminating if (P_62, R_6, minimal, formative) is finite. We consider the dependency pair problem (P_62, R_6, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNat(s(X))) >? mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U15(X, Y)) >? mark#(X) mark#(isNat(X)) >? active#(isNat(X)) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) isNat(mark(X)) >= isNat(X) isNat(active(X)) >= isNat(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. We consider usable_rules with respect to the following argument filtering: active#(x_1) = active#() This leaves the following ordering requirements: active#(U21(tt, X)) >= mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) >= mark#(U32(isNatKind(X))) active#(isNat(s(X))) >= mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) >= mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >= mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >= active#(isNatKind(X)) mark#(U15(X, Y)) >= mark#(X) mark#(isNat(X)) > active#(isNat(X)) mark#(U16(X)) >= mark#(X) mark#(U21(X, Y)) >= active#(U21(mark(X), Y)) mark#(U21(X, Y)) >= mark#(X) mark#(U22(X, Y)) >= mark#(X) mark#(U31(X, Y)) >= active#(U31(mark(X), Y)) mark#(U31(X, Y)) >= mark#(X) mark#(U32(X)) >= mark#(X) mark#(U41(X)) >= mark#(X) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1y2.0 U12 = \y0y1y2.0 U13 = \y0y1y2.0 U14 = \y0y1y2.0 U15 = \y0y1.2y0 U16 = \y0.2y0 U21 = \y0y1.y0 U22 = \y0y1.2y0 U23 = \y0.0 U31 = \y0y1.y0 U32 = \y0.2y0 U41 = \y0.y0 U51 = \y0y1.0 U52 = \y0y1.0 U61 = \y0y1y2.0 U62 = \y0y1y2.0 U63 = \y0y1y2.0 U64 = \y0y1y2.1 active = \y0.2 + 2y0 active# = \y0.0 isNat = \y0.1 + 2y0 isNatKind = \y0.0 mark = \y0.2y0 mark# = \y0.2y0 plus = \y0y1.0 s = \y0.0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U21(tt, _x0))]] = 0 >= 0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNat(s(_x0)))]] = 0 >= 0 = [[mark#(U21(isNatKind(_x0), _x0))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U15(_x0, _x1))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(isNat(_x0))]] = 2 + 4x0 > 0 = [[active#(isNat(_x0))]] [[mark#(U16(_x0))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 2x0 >= 0 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = 2x0 >= 0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U21(mark(_x0), _x1)]] = 2x0 >= x0 = [[U21(_x0, _x1)]] [[U21(_x0, mark(_x1))]] = x0 >= x0 = [[U21(_x0, _x1)]] [[U21(active(_x0), _x1)]] = 2 + 2x0 >= x0 = [[U21(_x0, _x1)]] [[U21(_x0, active(_x1))]] = x0 >= x0 = [[U21(_x0, _x1)]] [[U22(mark(_x0), _x1)]] = 4x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = 4 + 4x0 >= 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U22(_x0, _x1)]] [[U31(mark(_x0), _x1)]] = 2x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 2 + 2x0 >= x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 >= x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = 4x0 >= 2x0 = [[U32(_x0)]] [[U32(active(_x0))]] = 4 + 4x0 >= 2x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = 2x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = 2 + 2x0 >= x0 = [[U41(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_62, R_6, minimal, formative) by (P_63, R_6, minimal, formative), where P_63 consists of: active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNat(s(X))) =#> mark#(U21(isNatKind(X), X)) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U15(X, Y)) =#> mark#(X) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_63, R_6, minimal, formative) is finite. We consider the dependency pair problem (P_63, R_6, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 10 * 1 : 13 * 2 : 8, 9 * 3 : 11, 12 * 4 : 14 * 5 : 3, 4 * 6 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 * 7 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 * 8 : 0 * 9 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 * 10 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 * 11 : 1 * 12 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 * 13 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 * 14 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 This graph has the following strongly connected components: P_64: active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U15(X, Y)) =#> mark#(X) mark#(U16(X)) =#> mark#(X) mark#(U21(X, Y)) =#> active#(U21(mark(X), Y)) mark#(U21(X, Y)) =#> mark#(X) mark#(U22(X, Y)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_63, R_6, m, f) by (P_64, R_6, m, f). Thus, the original system is terminating if (P_64, R_6, minimal, formative) is finite. We consider the dependency pair problem (P_64, R_6, minimal, formative). The formative rules of (P_64, R_6) are R_7 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U21(mark(X), Y) => U21(X, Y) U21(X, mark(Y)) => U21(X, Y) U21(active(X), Y) => U21(X, Y) U21(X, active(Y)) => U21(X, Y) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_64, R_6, minimal, formative) by (P_64, R_7, minimal, formative). Thus, the original system is terminating if (P_64, R_7, minimal, formative) is finite. We consider the dependency pair problem (P_64, R_7, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U21(tt, X)) >? mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U15(X, Y)) >? mark#(X) mark#(U16(X)) >? mark#(X) mark#(U21(X, Y)) >? active#(U21(mark(X), Y)) mark#(U21(X, Y)) >? mark#(X) mark#(U22(X, Y)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U21(mark(X), Y) >= U21(X, Y) U21(X, mark(Y)) >= U21(X, Y) U21(active(X), Y) >= U21(X, Y) U21(X, active(Y)) >= U21(X, Y) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. We consider usable_rules with respect to the following argument filtering: active#(x_1) = active#() This leaves the following ordering requirements: active#(U21(tt, X)) >= mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) >= mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) >= mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >= mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >= active#(isNatKind(X)) mark#(U15(X, Y)) >= mark#(X) mark#(U16(X)) >= mark#(X) mark#(U21(X, Y)) > active#(U21(mark(X), Y)) mark#(U21(X, Y)) >= mark#(X) mark#(U22(X, Y)) >= mark#(X) mark#(U31(X, Y)) >= active#(U31(mark(X), Y)) mark#(U31(X, Y)) >= mark#(X) mark#(U32(X)) >= mark#(X) mark#(U41(X)) >= mark#(X) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1y2.0 U12 = \y0y1y2.0 U13 = \y0y1y2.0 U14 = \y0y1y2.0 U15 = \y0y1.2y0 U16 = \y0.2y0 U21 = \y0y1.1 + y0 U22 = \y0y1.y0 U23 = \y0.0 U31 = \y0y1.2y0 U32 = \y0.2y0 U41 = \y0.y0 U51 = \y0y1.0 U52 = \y0y1.0 U61 = \y0y1y2.0 U62 = \y0y1y2.0 U63 = \y0y1y2.0 U64 = \y0y1y2.0 active = \y0.2y0 active# = \y0.0 isNat = \y0.0 isNatKind = \y0.0 mark = \y0.2y0 mark# = \y0.2y0 plus = \y0y1.0 s = \y0.0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U21(tt, _x0))]] = 0 >= 0 = [[mark#(U22(isNatKind(_x0), _x0))]] [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U15(_x0, _x1))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U16(_x0))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U21(_x0, _x1))]] = 2 + 2x0 > 0 = [[active#(U21(mark(_x0), _x1))]] [[mark#(U21(_x0, _x1))]] = 2 + 2x0 > 2x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = 4x0 >= 0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = 2x0 >= 2x0 = [[mark#(_x0)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U22(mark(_x0), _x1)]] = 2x0 >= x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = 2x0 >= x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = x0 >= x0 = [[U22(_x0, _x1)]] [[U31(mark(_x0), _x1)]] = 4x0 >= 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 4x0 >= 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = 4x0 >= 2x0 = [[U32(_x0)]] [[U32(active(_x0))]] = 4x0 >= 2x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = 2x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = 2x0 >= x0 = [[U41(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_64, R_7, minimal, formative) by (P_65, R_7, minimal, formative), where P_65 consists of: active#(U21(tt, X)) =#> mark#(U22(isNatKind(X), X)) active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U15(X, Y)) =#> mark#(X) mark#(U16(X)) =#> mark#(X) mark#(U22(X, Y)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_65, R_7, minimal, formative) is finite. We consider the dependency pair problem (P_65, R_7, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 7 * 1 : 10 * 2 : 8, 9 * 3 : 11 * 4 : 2, 3 * 5 : 4, 5, 6, 7, 8, 9, 10, 11 * 6 : 4, 5, 6, 7, 8, 9, 10, 11 * 7 : 4, 5, 6, 7, 8, 9, 10, 11 * 8 : 1 * 9 : 4, 5, 6, 7, 8, 9, 10, 11 * 10 : 4, 5, 6, 7, 8, 9, 10, 11 * 11 : 4, 5, 6, 7, 8, 9, 10, 11 This graph has the following strongly connected components: P_66: active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U15(X, Y)) =#> mark#(X) mark#(U16(X)) =#> mark#(X) mark#(U22(X, Y)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_65, R_7, m, f) by (P_66, R_7, m, f). Thus, the original system is terminating if (P_66, R_7, minimal, formative) is finite. We consider the dependency pair problem (P_66, R_7, minimal, formative). The formative rules of (P_66, R_7) are R_8 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U15(mark(X), Y) => U15(X, Y) U15(X, mark(Y)) => U15(X, Y) U15(active(X), Y) => U15(X, Y) U15(X, active(Y)) => U15(X, Y) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_66, R_7, minimal, formative) by (P_66, R_8, minimal, formative). Thus, the original system is terminating if (P_66, R_8, minimal, formative) is finite. We consider the dependency pair problem (P_66, R_8, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U15(X, Y)) >? mark#(X) mark#(U16(X)) >? mark#(X) mark#(U22(X, Y)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U15(mark(X), Y) >= U15(X, Y) U15(X, mark(Y)) >= U15(X, Y) U15(active(X), Y) >= U15(X, Y) U15(X, active(Y)) >= U15(X, Y) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. We consider usable_rules with respect to the following argument filtering: active#(x_1) = active#() This leaves the following ordering requirements: active#(U31(tt, X)) >= mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) >= mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >= mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >= active#(isNatKind(X)) mark#(U15(X, Y)) > mark#(X) mark#(U16(X)) >= mark#(X) mark#(U22(X, Y)) >= mark#(X) mark#(U31(X, Y)) >= active#(U31(mark(X), Y)) mark#(U31(X, Y)) >= mark#(X) mark#(U32(X)) >= mark#(X) mark#(U41(X)) >= mark#(X) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1y2.0 U12 = \y0y1y2.0 U13 = \y0y1y2.0 U14 = \y0y1y2.0 U15 = \y0y1.2 + y0 U16 = \y0.y0 U21 = \y0y1.0 U22 = \y0y1.y0 U23 = \y0.0 U31 = \y0y1.2y0 U32 = \y0.y0 U41 = \y0.2y0 U51 = \y0y1.0 U52 = \y0y1.0 U61 = \y0y1y2.0 U62 = \y0y1y2.0 U63 = \y0y1y2.0 U64 = \y0y1y2.0 active = \y0.2y0 active# = \y0.0 isNat = \y0.0 isNatKind = \y0.0 mark = \y0.2y0 mark# = \y0.y0 plus = \y0y1.0 s = \y0.0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U15(_x0, _x1))]] = 2 + x0 > x0 = [[mark#(_x0)]] [[mark#(U16(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = 2x0 >= 0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = 2x0 >= x0 = [[mark#(_x0)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U31(mark(_x0), _x1)]] = 4x0 >= 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 4x0 >= 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = 2x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = 2x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = 4x0 >= 2x0 = [[U41(_x0)]] [[U41(active(_x0))]] = 4x0 >= 2x0 = [[U41(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_66, R_8, minimal, formative) by (P_67, R_8, minimal, formative), where P_67 consists of: active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U16(X)) =#> mark#(X) mark#(U22(X, Y)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_67, R_8, minimal, formative) is finite. We consider the dependency pair problem (P_67, R_8, minimal, formative). The formative rules of (P_67, R_8) are R_9 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U22(mark(X), Y) => U22(X, Y) U22(X, mark(Y)) => U22(X, Y) U22(active(X), Y) => U22(X, Y) U22(X, active(Y)) => U22(X, Y) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_67, R_8, minimal, formative) by (P_67, R_9, minimal, formative). Thus, the original system is terminating if (P_67, R_9, minimal, formative) is finite. We consider the dependency pair problem (P_67, R_9, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U16(X)) >? mark#(X) mark#(U22(X, Y)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U22(mark(X), Y) >= U22(X, Y) U22(X, mark(Y)) >= U22(X, Y) U22(active(X), Y) >= U22(X, Y) U22(X, active(Y)) >= U22(X, Y) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 1 U11 = \y0y1y2.2 + 2y2 U12 = \y0y1y2.2 + y2 U13 = \y0y1y2.2 + y2 U14 = \y0y1y2.2 + y2 U15 = \y0y1.2 + y1 U16 = \y0.y0 U21 = \y0y1.1 U22 = \y0y1.1 + 2y0 U23 = \y0.0 U31 = \y0y1.2y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.y1 U52 = \y0y1.y1 U61 = \y0y1y2.2 U62 = \y0y1y2.2 U63 = \y0y1y2.2 U64 = \y0y1y2.2 active = \y0.y0 active# = \y0.0 isNat = \y0.2 + y0 isNatKind = \y0.0 mark = \y0.y0 mark# = \y0.y0 plus = \y0y1.y0 + 2y1 s = \y0.2 tt = 0 Using this interpretation, the requirements translate to: [[active#(U31(tt, _x0))]] = 0 >= 0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U16(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U22(_x0, _x1))]] = 1 + 2x0 > x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = 2x0 >= 0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[active(U11(tt, _x0, _x1))]] = 2 + 2x1 >= 2 + x1 = [[mark(U12(isNatKind(_x0), _x0, _x1))]] [[active(U12(tt, _x0, _x1))]] = 2 + x1 >= 2 + x1 = [[mark(U13(isNatKind(_x1), _x0, _x1))]] [[active(U13(tt, _x0, _x1))]] = 2 + x1 >= 2 + x1 = [[mark(U14(isNatKind(_x1), _x0, _x1))]] [[active(U14(tt, _x0, _x1))]] = 2 + x1 >= 2 + x1 = [[mark(U15(isNat(_x0), _x1))]] [[active(U15(tt, _x0))]] = 2 + x0 >= 2 + x0 = [[mark(U16(isNat(_x0)))]] [[active(U16(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U21(tt, _x0))]] = 1 >= 1 = [[mark(U22(isNatKind(_x0), _x0))]] [[active(U22(tt, _x0))]] = 1 >= 0 = [[mark(U23(isNat(_x0)))]] [[active(U23(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 0 >= 0 = [[mark(U32(isNatKind(_x0)))]] [[active(U32(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U51(tt, _x0))]] = x0 >= x0 = [[mark(U52(isNatKind(_x0), _x0))]] [[active(U52(tt, _x0))]] = x0 >= x0 = [[mark(_x0)]] [[active(U61(tt, _x0, _x1))]] = 2 >= 2 = [[mark(U62(isNatKind(_x0), _x0, _x1))]] [[active(U62(tt, _x0, _x1))]] = 2 >= 2 = [[mark(U63(isNat(_x1), _x0, _x1))]] [[active(U63(tt, _x0, _x1))]] = 2 >= 2 = [[mark(U64(isNatKind(_x1), _x0, _x1))]] [[active(U64(tt, _x0, _x1))]] = 2 >= 2 = [[mark(s(plus(_x1, _x0)))]] [[active(isNat(0))]] = 3 >= 0 = [[mark(tt)]] [[active(isNat(plus(_x0, _x1)))]] = 2 + x0 + 2x1 >= 2 + 2x1 = [[mark(U11(isNatKind(_x0), _x0, _x1))]] [[active(isNat(s(_x0)))]] = 4 >= 1 = [[mark(U21(isNatKind(_x0), _x0))]] [[active(isNatKind(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNatKind(plus(_x0, _x1)))]] = 0 >= 0 = [[mark(U31(isNatKind(_x0), _x1))]] [[active(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark(U41(isNatKind(_x0)))]] [[active(plus(_x0, 0))]] = 2 + x0 >= x0 = [[mark(U51(isNat(_x0), _x0))]] [[active(plus(_x0, s(_x1)))]] = 4 + x0 >= 2 = [[mark(U61(isNat(_x1), _x1, _x0))]] [[mark(U11(_x0, _x1, _x2))]] = 2 + 2x2 >= 2 + 2x2 = [[active(U11(mark(_x0), _x1, _x2))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1, _x2))]] = 2 + x2 >= 2 + x2 = [[active(U12(mark(_x0), _x1, _x2))]] [[mark(isNatKind(_x0))]] = 0 >= 0 = [[active(isNatKind(_x0))]] [[mark(U13(_x0, _x1, _x2))]] = 2 + x2 >= 2 + x2 = [[active(U13(mark(_x0), _x1, _x2))]] [[mark(U14(_x0, _x1, _x2))]] = 2 + x2 >= 2 + x2 = [[active(U14(mark(_x0), _x1, _x2))]] [[mark(U15(_x0, _x1))]] = 2 + x1 >= 2 + x1 = [[active(U15(mark(_x0), _x1))]] [[mark(isNat(_x0))]] = 2 + x0 >= 2 + x0 = [[active(isNat(_x0))]] [[mark(U16(_x0))]] = x0 >= x0 = [[active(U16(mark(_x0)))]] [[mark(U21(_x0, _x1))]] = 1 >= 1 = [[active(U21(mark(_x0), _x1))]] [[mark(U22(_x0, _x1))]] = 1 + 2x0 >= 1 + 2x0 = [[active(U22(mark(_x0), _x1))]] [[mark(U23(_x0))]] = 0 >= 0 = [[active(U23(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 2x0 >= 2x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0))]] = x0 >= x0 = [[active(U32(mark(_x0)))]] [[mark(U41(_x0))]] = x0 >= x0 = [[active(U41(mark(_x0)))]] [[mark(U51(_x0, _x1))]] = x1 >= x1 = [[active(U51(mark(_x0), _x1))]] [[mark(U52(_x0, _x1))]] = x1 >= x1 = [[active(U52(mark(_x0), _x1))]] [[mark(U61(_x0, _x1, _x2))]] = 2 >= 2 = [[active(U61(mark(_x0), _x1, _x2))]] [[mark(U62(_x0, _x1, _x2))]] = 2 >= 2 = [[active(U62(mark(_x0), _x1, _x2))]] [[mark(U63(_x0, _x1, _x2))]] = 2 >= 2 = [[active(U63(mark(_x0), _x1, _x2))]] [[mark(U64(_x0, _x1, _x2))]] = 2 >= 2 = [[active(U64(mark(_x0), _x1, _x2))]] [[mark(s(_x0))]] = 2 >= 2 = [[active(s(mark(_x0)))]] [[mark(plus(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(plus(mark(_x0), mark(_x1)))]] [[mark(0)]] = 1 >= 1 = [[active(0)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U22(mark(_x0), _x1)]] = 1 + 2x0 >= 1 + 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, mark(_x1))]] = 1 + 2x0 >= 1 + 2x0 = [[U22(_x0, _x1)]] [[U22(active(_x0), _x1)]] = 1 + 2x0 >= 1 + 2x0 = [[U22(_x0, _x1)]] [[U22(_x0, active(_x1))]] = 1 + 2x0 >= 1 + 2x0 = [[U22(_x0, _x1)]] [[U31(mark(_x0), _x1)]] = 2x0 >= 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 2x0 >= 2x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 2x0 >= 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 2x0 >= 2x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[s(mark(_x0))]] = 2 >= 2 = [[s(_x0)]] [[s(active(_x0))]] = 2 >= 2 = [[s(_x0)]] [[plus(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[plus(_x0, _x1)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_67, R_9, minimal, formative) by (P_68, R_9, minimal, formative), where P_68 consists of: active#(U31(tt, X)) =#> mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U16(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_68, R_9, minimal, formative) is finite. We consider the dependency pair problem (P_68, R_9, minimal, formative). The formative rules of (P_68, R_9) are R_10 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) plus(mark(X), Y) => plus(X, Y) plus(X, mark(Y)) => plus(X, Y) plus(active(X), Y) => plus(X, Y) plus(X, active(Y)) => plus(X, Y) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_68, R_9, minimal, formative) by (P_68, R_10, minimal, formative). Thus, the original system is terminating if (P_68, R_10, minimal, formative) is finite. We consider the dependency pair problem (P_68, R_10, minimal, formative). We will use the reduction pair processor [Kop12, Thm. 7.16]. It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(U31(tt, X)) >? mark#(U32(isNatKind(X))) active#(isNatKind(plus(X, Y))) >? mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U16(X)) >? mark#(X) mark#(U31(X, Y)) >? active#(U31(mark(X), Y)) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) active(U11(tt, X, Y)) >= mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) >= mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) >= mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) >= mark(U15(isNat(X), Y)) active(U15(tt, X)) >= mark(U16(isNat(X))) active(U16(tt)) >= mark(tt) active(U21(tt, X)) >= mark(U22(isNatKind(X), X)) active(U22(tt, X)) >= mark(U23(isNat(X))) active(U23(tt)) >= mark(tt) active(U31(tt, X)) >= mark(U32(isNatKind(X))) active(U32(tt)) >= mark(tt) active(U41(tt)) >= mark(tt) active(U51(tt, X)) >= mark(U52(isNatKind(X), X)) active(U52(tt, X)) >= mark(X) active(U61(tt, X, Y)) >= mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) >= mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) >= mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) >= mark(s(plus(Y, X))) active(isNat(0)) >= mark(tt) active(isNat(plus(X, Y))) >= mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) >= mark(U21(isNatKind(X), X)) active(isNatKind(0)) >= mark(tt) active(isNatKind(plus(X, Y))) >= mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) >= mark(U41(isNatKind(X))) active(plus(X, 0)) >= mark(U51(isNat(X), X)) active(plus(X, s(Y))) >= mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) >= active(U11(mark(X), Y, Z)) mark(tt) >= active(tt) mark(U12(X, Y, Z)) >= active(U12(mark(X), Y, Z)) mark(isNatKind(X)) >= active(isNatKind(X)) mark(U13(X, Y, Z)) >= active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) >= active(U14(mark(X), Y, Z)) mark(U15(X, Y)) >= active(U15(mark(X), Y)) mark(isNat(X)) >= active(isNat(X)) mark(U16(X)) >= active(U16(mark(X))) mark(U21(X, Y)) >= active(U21(mark(X), Y)) mark(U22(X, Y)) >= active(U22(mark(X), Y)) mark(U23(X)) >= active(U23(mark(X))) mark(U31(X, Y)) >= active(U31(mark(X), Y)) mark(U32(X)) >= active(U32(mark(X))) mark(U41(X)) >= active(U41(mark(X))) mark(U51(X, Y)) >= active(U51(mark(X), Y)) mark(U52(X, Y)) >= active(U52(mark(X), Y)) mark(U61(X, Y, Z)) >= active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) >= active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) >= active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) >= active(U64(mark(X), Y, Z)) mark(s(X)) >= active(s(mark(X))) mark(plus(X, Y)) >= active(plus(mark(X), mark(Y))) mark(0) >= active(0) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U16(mark(X)) >= U16(X) U16(active(X)) >= U16(X) U31(mark(X), Y) >= U31(X, Y) U31(X, mark(Y)) >= U31(X, Y) U31(active(X), Y) >= U31(X, Y) U31(X, active(Y)) >= U31(X, Y) U32(mark(X)) >= U32(X) U32(active(X)) >= U32(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) s(mark(X)) >= s(X) s(active(X)) >= s(X) plus(mark(X), Y) >= plus(X, Y) plus(X, mark(Y)) >= plus(X, Y) plus(active(X), Y) >= plus(X, Y) plus(X, active(Y)) >= plus(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1y2.y2 U12 = \y0y1y2.y2 U13 = \y0y1y2.y2 U14 = \y0y1y2.y2 U15 = \y0y1.y1 U16 = \y0.y0 U21 = \y0y1.0 U22 = \y0y1.0 U23 = \y0.0 U31 = \y0y1.1 + y1 + 2y0 U32 = \y0.y0 U41 = \y0.y0 U51 = \y0y1.y0 + y1 U52 = \y0y1.y1 U61 = \y0y1y2.1 + 2y1 + 2y2 U62 = \y0y1y2.1 + 2y1 + 2y2 U63 = \y0y1y2.1 + 2y1 + 2y2 U64 = \y0y1y2.1 + 2y1 + 2y2 active = \y0.y0 active# = \y0.y0 isNat = \y0.y0 isNatKind = \y0.y0 mark = \y0.y0 mark# = \y0.y0 plus = \y0y1.1 + 2y0 + 2y1 s = \y0.y0 tt = 0 Using this interpretation, the requirements translate to: [[active#(U31(tt, _x0))]] = 1 + x0 > x0 = [[mark#(U32(isNatKind(_x0)))]] [[active#(isNatKind(plus(_x0, _x1)))]] = 1 + 2x0 + 2x1 >= 1 + x1 + 2x0 = [[mark#(U31(isNatKind(_x0), _x1))]] [[active#(isNatKind(s(_x0)))]] = x0 >= x0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(isNatKind(_x0))]] = x0 >= x0 = [[active#(isNatKind(_x0))]] [[mark#(U16(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[active#(U31(mark(_x0), _x1))]] [[mark#(U31(_x0, _x1))]] = 1 + x1 + 2x0 > x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[active(U11(tt, _x0, _x1))]] = x1 >= x1 = [[mark(U12(isNatKind(_x0), _x0, _x1))]] [[active(U12(tt, _x0, _x1))]] = x1 >= x1 = [[mark(U13(isNatKind(_x1), _x0, _x1))]] [[active(U13(tt, _x0, _x1))]] = x1 >= x1 = [[mark(U14(isNatKind(_x1), _x0, _x1))]] [[active(U14(tt, _x0, _x1))]] = x1 >= x1 = [[mark(U15(isNat(_x0), _x1))]] [[active(U15(tt, _x0))]] = x0 >= x0 = [[mark(U16(isNat(_x0)))]] [[active(U16(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U21(tt, _x0))]] = 0 >= 0 = [[mark(U22(isNatKind(_x0), _x0))]] [[active(U22(tt, _x0))]] = 0 >= 0 = [[mark(U23(isNat(_x0)))]] [[active(U23(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 1 + x0 >= x0 = [[mark(U32(isNatKind(_x0)))]] [[active(U32(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U51(tt, _x0))]] = x0 >= x0 = [[mark(U52(isNatKind(_x0), _x0))]] [[active(U52(tt, _x0))]] = x0 >= x0 = [[mark(_x0)]] [[active(U61(tt, _x0, _x1))]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[mark(U62(isNatKind(_x0), _x0, _x1))]] [[active(U62(tt, _x0, _x1))]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[mark(U63(isNat(_x1), _x0, _x1))]] [[active(U63(tt, _x0, _x1))]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[mark(U64(isNatKind(_x1), _x0, _x1))]] [[active(U64(tt, _x0, _x1))]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[mark(s(plus(_x1, _x0)))]] [[active(isNat(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNat(plus(_x0, _x1)))]] = 1 + 2x0 + 2x1 >= x1 = [[mark(U11(isNatKind(_x0), _x0, _x1))]] [[active(isNat(s(_x0)))]] = x0 >= 0 = [[mark(U21(isNatKind(_x0), _x0))]] [[active(isNatKind(0))]] = 0 >= 0 = [[mark(tt)]] [[active(isNatKind(plus(_x0, _x1)))]] = 1 + 2x0 + 2x1 >= 1 + x1 + 2x0 = [[mark(U31(isNatKind(_x0), _x1))]] [[active(isNatKind(s(_x0)))]] = x0 >= x0 = [[mark(U41(isNatKind(_x0)))]] [[active(plus(_x0, 0))]] = 1 + 2x0 >= 2x0 = [[mark(U51(isNat(_x0), _x0))]] [[active(plus(_x0, s(_x1)))]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[mark(U61(isNat(_x1), _x1, _x0))]] [[mark(U11(_x0, _x1, _x2))]] = x2 >= x2 = [[active(U11(mark(_x0), _x1, _x2))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1, _x2))]] = x2 >= x2 = [[active(U12(mark(_x0), _x1, _x2))]] [[mark(isNatKind(_x0))]] = x0 >= x0 = [[active(isNatKind(_x0))]] [[mark(U13(_x0, _x1, _x2))]] = x2 >= x2 = [[active(U13(mark(_x0), _x1, _x2))]] [[mark(U14(_x0, _x1, _x2))]] = x2 >= x2 = [[active(U14(mark(_x0), _x1, _x2))]] [[mark(U15(_x0, _x1))]] = x1 >= x1 = [[active(U15(mark(_x0), _x1))]] [[mark(isNat(_x0))]] = x0 >= x0 = [[active(isNat(_x0))]] [[mark(U16(_x0))]] = x0 >= x0 = [[active(U16(mark(_x0)))]] [[mark(U21(_x0, _x1))]] = 0 >= 0 = [[active(U21(mark(_x0), _x1))]] [[mark(U22(_x0, _x1))]] = 0 >= 0 = [[active(U22(mark(_x0), _x1))]] [[mark(U23(_x0))]] = 0 >= 0 = [[active(U23(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0))]] = x0 >= x0 = [[active(U32(mark(_x0)))]] [[mark(U41(_x0))]] = x0 >= x0 = [[active(U41(mark(_x0)))]] [[mark(U51(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U51(mark(_x0), _x1))]] [[mark(U52(_x0, _x1))]] = x1 >= x1 = [[active(U52(mark(_x0), _x1))]] [[mark(U61(_x0, _x1, _x2))]] = 1 + 2x1 + 2x2 >= 1 + 2x1 + 2x2 = [[active(U61(mark(_x0), _x1, _x2))]] [[mark(U62(_x0, _x1, _x2))]] = 1 + 2x1 + 2x2 >= 1 + 2x1 + 2x2 = [[active(U62(mark(_x0), _x1, _x2))]] [[mark(U63(_x0, _x1, _x2))]] = 1 + 2x1 + 2x2 >= 1 + 2x1 + 2x2 = [[active(U63(mark(_x0), _x1, _x2))]] [[mark(U64(_x0, _x1, _x2))]] = 1 + 2x1 + 2x2 >= 1 + 2x1 + 2x2 = [[active(U64(mark(_x0), _x1, _x2))]] [[mark(s(_x0))]] = x0 >= x0 = [[active(s(mark(_x0)))]] [[mark(plus(_x0, _x1))]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[active(plus(mark(_x0), mark(_x1)))]] [[mark(0)]] = 0 >= 0 = [[active(0)]] [[isNatKind(mark(_x0))]] = x0 >= x0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = x0 >= x0 = [[isNatKind(_x0)]] [[U16(mark(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U16(active(_x0))]] = x0 >= x0 = [[U16(_x0)]] [[U31(mark(_x0), _x1)]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U32(active(_x0))]] = x0 >= x0 = [[U32(_x0)]] [[U41(mark(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[U41(active(_x0))]] = x0 >= x0 = [[U41(_x0)]] [[s(mark(_x0))]] = x0 >= x0 = [[s(_x0)]] [[s(active(_x0))]] = x0 >= x0 = [[s(_x0)]] [[plus(mark(_x0), _x1)]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, mark(_x1))]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(active(_x0), _x1)]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[plus(_x0, _x1)]] [[plus(_x0, active(_x1))]] = 1 + 2x0 + 2x1 >= 1 + 2x0 + 2x1 = [[plus(_x0, _x1)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_68, R_10, minimal, formative) by (P_69, R_10, minimal, formative), where P_69 consists of: active#(isNatKind(plus(X, Y))) =#> mark#(U31(isNatKind(X), Y)) active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U16(X)) =#> mark#(X) mark#(U31(X, Y)) =#> active#(U31(mark(X), Y)) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_69, R_10, minimal, formative) is finite. We consider the dependency pair problem (P_69, R_10, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 4 * 1 : 6 * 2 : 0, 1 * 3 : 2, 3, 4, 5, 6 * 4 : * 5 : 2, 3, 4, 5, 6 * 6 : 2, 3, 4, 5, 6 This graph has the following strongly connected components: P_70: active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U16(X)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_69, R_10, m, f) by (P_70, R_10, m, f). Thus, the original system is terminating if (P_70, R_10, minimal, formative) is finite. We consider the dependency pair problem (P_70, R_10, minimal, formative). The formative rules of (P_70, R_10) are R_11 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U16(mark(X)) => U16(X) U16(active(X)) => U16(X) U32(mark(X)) => U32(X) U32(active(X)) => U32(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_70, R_10, minimal, formative) by (P_70, R_11, minimal, formative). Thus, the original system is terminating if (P_70, R_11, minimal, formative) is finite. We consider the dependency pair problem (P_70, R_11, minimal, formative). We will use the reduction pair processor with usable rules [Kop12, Thm. 7.44]. The usable rules of (P_70, R_11) are: isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U16(X)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X)) >? mark#(X) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U16 = \y0.3 + 2y0 U32 = \y0.3 + y0 U41 = \y0.2y0 active = \y0.2y0 active# = \y0.0 isNatKind = \y0.0 mark = \y0.2y0 mark# = \y0.2y0 s = \y0.3 Using this interpretation, the requirements translate to: [[active#(isNatKind(s(_x0)))]] = 0 >= 0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(isNatKind(_x0))]] = 0 >= 0 = [[active#(isNatKind(_x0))]] [[mark#(U16(_x0))]] = 6 + 4x0 > 2x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = 6 + 2x0 > 2x0 = [[mark#(_x0)]] [[mark#(U41(_x0))]] = 4x0 >= 2x0 = [[mark#(_x0)]] [[isNatKind(mark(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 0 >= 0 = [[isNatKind(_x0)]] [[U41(mark(_x0))]] = 4x0 >= 2x0 = [[U41(_x0)]] [[U41(active(_x0))]] = 4x0 >= 2x0 = [[U41(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_70, R_11, minimal, formative) by (P_71, R_11, minimal, formative), where P_71 consists of: active#(isNatKind(s(X))) =#> mark#(U41(isNatKind(X))) mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_71, R_11, minimal, formative) is finite. We consider the dependency pair problem (P_71, R_11, minimal, formative). The formative rules of (P_71, R_11) are R_12 ::= active(U11(tt, X, Y)) => mark(U12(isNatKind(X), X, Y)) active(U12(tt, X, Y)) => mark(U13(isNatKind(Y), X, Y)) active(U13(tt, X, Y)) => mark(U14(isNatKind(Y), X, Y)) active(U14(tt, X, Y)) => mark(U15(isNat(X), Y)) active(U15(tt, X)) => mark(U16(isNat(X))) active(U16(tt)) => mark(tt) active(U21(tt, X)) => mark(U22(isNatKind(X), X)) active(U22(tt, X)) => mark(U23(isNat(X))) active(U23(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isNatKind(X))) active(U32(tt)) => mark(tt) active(U41(tt)) => mark(tt) active(U51(tt, X)) => mark(U52(isNatKind(X), X)) active(U52(tt, X)) => mark(X) active(U61(tt, X, Y)) => mark(U62(isNatKind(X), X, Y)) active(U62(tt, X, Y)) => mark(U63(isNat(Y), X, Y)) active(U63(tt, X, Y)) => mark(U64(isNatKind(Y), X, Y)) active(U64(tt, X, Y)) => mark(s(plus(Y, X))) active(isNat(0)) => mark(tt) active(isNat(plus(X, Y))) => mark(U11(isNatKind(X), X, Y)) active(isNat(s(X))) => mark(U21(isNatKind(X), X)) active(isNatKind(0)) => mark(tt) active(isNatKind(plus(X, Y))) => mark(U31(isNatKind(X), Y)) active(isNatKind(s(X))) => mark(U41(isNatKind(X))) active(plus(X, 0)) => mark(U51(isNat(X), X)) active(plus(X, s(Y))) => mark(U61(isNat(Y), Y, X)) mark(U11(X, Y, Z)) => active(U11(mark(X), Y, Z)) mark(tt) => active(tt) mark(U12(X, Y, Z)) => active(U12(mark(X), Y, Z)) mark(isNatKind(X)) => active(isNatKind(X)) mark(U13(X, Y, Z)) => active(U13(mark(X), Y, Z)) mark(U14(X, Y, Z)) => active(U14(mark(X), Y, Z)) mark(U15(X, Y)) => active(U15(mark(X), Y)) mark(isNat(X)) => active(isNat(X)) mark(U16(X)) => active(U16(mark(X))) mark(U21(X, Y)) => active(U21(mark(X), Y)) mark(U22(X, Y)) => active(U22(mark(X), Y)) mark(U23(X)) => active(U23(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X)) => active(U32(mark(X))) mark(U41(X)) => active(U41(mark(X))) mark(U51(X, Y)) => active(U51(mark(X), Y)) mark(U52(X, Y)) => active(U52(mark(X), Y)) mark(U61(X, Y, Z)) => active(U61(mark(X), Y, Z)) mark(U62(X, Y, Z)) => active(U62(mark(X), Y, Z)) mark(U63(X, Y, Z)) => active(U63(mark(X), Y, Z)) mark(U64(X, Y, Z)) => active(U64(mark(X), Y, Z)) mark(s(X)) => active(s(mark(X))) mark(plus(X, Y)) => active(plus(mark(X), mark(Y))) mark(0) => active(0) isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) s(mark(X)) => s(X) s(active(X)) => s(X) By [Kop12, Thm. 7.17], we may replace the dependency pair problem (P_71, R_11, minimal, formative) by (P_71, R_12, minimal, formative). Thus, the original system is terminating if (P_71, R_12, minimal, formative) is finite. We consider the dependency pair problem (P_71, R_12, minimal, formative). We will use the reduction pair processor with usable rules [Kop12, Thm. 7.44]. The usable rules of (P_71, R_12) are: isNatKind(mark(X)) => isNatKind(X) isNatKind(active(X)) => isNatKind(X) U41(mark(X)) => U41(X) U41(active(X)) => U41(X) It suffices to find a standard reduction pair [Kop12, Def. 6.69]. Thus, we must orient: active#(isNatKind(s(X))) >? mark#(U41(isNatKind(X))) mark#(isNatKind(X)) >? active#(isNatKind(X)) mark#(U41(X)) >? mark#(X) isNatKind(mark(X)) >= isNatKind(X) isNatKind(active(X)) >= isNatKind(X) U41(mark(X)) >= U41(X) U41(active(X)) >= U41(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U41 = \y0.2y0 active = \y0.2y0 active# = \y0.y0 isNatKind = \y0.2y0 mark = \y0.2y0 mark# = \y0.y0 s = \y0.3 + 2y0 Using this interpretation, the requirements translate to: [[active#(isNatKind(s(_x0)))]] = 6 + 4x0 > 4x0 = [[mark#(U41(isNatKind(_x0)))]] [[mark#(isNatKind(_x0))]] = 2x0 >= 2x0 = [[active#(isNatKind(_x0))]] [[mark#(U41(_x0))]] = 2x0 >= x0 = [[mark#(_x0)]] [[isNatKind(mark(_x0))]] = 4x0 >= 2x0 = [[isNatKind(_x0)]] [[isNatKind(active(_x0))]] = 4x0 >= 2x0 = [[isNatKind(_x0)]] [[U41(mark(_x0))]] = 4x0 >= 2x0 = [[U41(_x0)]] [[U41(active(_x0))]] = 4x0 >= 2x0 = [[U41(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_71, R_12, minimal, formative) by (P_72, R_12, minimal, formative), where P_72 consists of: mark#(isNatKind(X)) =#> active#(isNatKind(X)) mark#(U41(X)) =#> mark#(X) Thus, the original system is terminating if (P_72, R_12, minimal, formative) is finite. We consider the dependency pair problem (P_72, R_12, minimal, formative). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : * 1 : 0, 1 This graph has the following strongly connected components: P_73: mark#(U41(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_72, R_12, m, f) by (P_73, R_12, m, f). Thus, the original system is terminating if (P_73, R_12, minimal, formative) is finite. We consider the dependency pair problem (P_73, R_12, minimal, formative). We apply the subterm criterion with the following projection function: nu(mark#) = 1 Thus, we can orient the dependency pairs as follows: nu(mark#(U41(X))) = U41(X) |> X = nu(mark#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_73, R_12, minimal, f) by ({}, R_12, minimal, f). By the empty set processor [Kop12, Thm. 7.15] this problem may be immediately removed. As all dependency pair problems were succesfully simplified with sound (and complete) processors until nothing remained, we conclude termination. +++ Citations +++ [Kop12] C. Kop. Higher Order Termination. PhD Thesis, 2012. [KusIsoSakBla09] K. Kusakari, Y. Isogai, M. Sakai, and F. Blanqui. Static Dependency Pair Method Based On Strong Computability for Higher-Order Rewrite Systems. In volume 92(10) of IEICE Transactions on Information and Systems. 2007--2015, 2009.