/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 U12 : [o] --> o U21 : [o] --> o U31 : [o * o] --> o U32 : [o] --> o U41 : [o * o] --> o U51 : [o * o * o] --> o U52 : [o * o * o] --> o U61 : [o] --> o U71 : [o * o * o] --> o U72 : [o * o * o] --> o a!6220!6220U11 : [o * o] --> o a!6220!6220U12 : [o] --> o a!6220!6220U21 : [o] --> o a!6220!6220U31 : [o * o] --> o a!6220!6220U32 : [o] --> o a!6220!6220U41 : [o * o] --> o a!6220!6220U51 : [o * o * o] --> o a!6220!6220U52 : [o * o * o] --> o a!6220!6220U61 : [o] --> o a!6220!6220U71 : [o * o * o] --> o a!6220!6220U72 : [o * o * o] --> o a!6220!6220isNat : [o] --> o a!6220!6220plus : [o * o] --> o a!6220!6220x : [o * o] --> o isNat : [o] --> o mark : [o] --> o plus : [o * o] --> o s : [o] --> o tt : [] --> o x : [o * o] --> o a!6220!6220U11(tt, X) => a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) => tt a!6220!6220U21(tt) => tt a!6220!6220U31(tt, X) => a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) => tt a!6220!6220U41(tt, X) => mark(X) a!6220!6220U51(tt, X, Y) => a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) => s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) => 0 a!6220!6220U71(tt, X, Y) => a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) => a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) => tt a!6220!6220isNat(plus(X, Y)) => a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) => a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) => a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) => a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) => a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) => a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) => a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) => a!6220!6220U11(mark(X), Y) mark(U12(X)) => a!6220!6220U12(mark(X)) mark(isNat(X)) => a!6220!6220isNat(X) mark(U21(X)) => a!6220!6220U21(mark(X)) mark(U31(X, Y)) => a!6220!6220U31(mark(X), Y) mark(U32(X)) => a!6220!6220U32(mark(X)) mark(U41(X, Y)) => a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) => a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) => a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) => a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) => a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) => a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) => a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) => a!6220!6220x(mark(X), mark(Y)) mark(tt) => tt mark(s(X)) => s(mark(X)) mark(0) => 0 a!6220!6220U11(X, Y) => U11(X, Y) a!6220!6220U12(X) => U12(X) a!6220!6220isNat(X) => isNat(X) a!6220!6220U21(X) => U21(X) a!6220!6220U31(X, Y) => U31(X, Y) a!6220!6220U32(X) => U32(X) a!6220!6220U41(X, Y) => U41(X, Y) a!6220!6220U51(X, Y, Z) => U51(X, Y, Z) a!6220!6220U52(X, Y, Z) => U52(X, Y, Z) a!6220!6220plus(X, Y) => plus(X, Y) a!6220!6220U61(X) => U61(X) a!6220!6220U71(X, Y, Z) => U71(X, Y, Z) a!6220!6220U72(X, Y, Z) => U72(X, Y, Z) a!6220!6220x(X, Y) => x(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] a!6220!6220U11#(tt, X) =#> a!6220!6220U12#(a!6220!6220isNat(X)) 1] a!6220!6220U11#(tt, X) =#> a!6220!6220isNat#(X) 2] a!6220!6220U31#(tt, X) =#> a!6220!6220U32#(a!6220!6220isNat(X)) 3] a!6220!6220U31#(tt, X) =#> a!6220!6220isNat#(X) 4] a!6220!6220U41#(tt, X) =#> mark#(X) 5] a!6220!6220U51#(tt, X, Y) =#> a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) 6] a!6220!6220U51#(tt, X, Y) =#> a!6220!6220isNat#(Y) 7] a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) 8] a!6220!6220U52#(tt, X, Y) =#> mark#(Y) 9] a!6220!6220U52#(tt, X, Y) =#> mark#(X) 10] a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) 11] a!6220!6220U71#(tt, X, Y) =#> a!6220!6220isNat#(Y) 12] a!6220!6220U72#(tt, X, Y) =#> a!6220!6220plus#(a!6220!6220x(mark(Y), mark(X)), mark(Y)) 13] a!6220!6220U72#(tt, X, Y) =#> a!6220!6220x#(mark(Y), mark(X)) 14] a!6220!6220U72#(tt, X, Y) =#> mark#(Y) 15] a!6220!6220U72#(tt, X, Y) =#> mark#(X) 16] a!6220!6220U72#(tt, X, Y) =#> mark#(Y) 17] a!6220!6220isNat#(plus(X, Y)) =#> a!6220!6220U11#(a!6220!6220isNat(X), Y) 18] a!6220!6220isNat#(plus(X, Y)) =#> a!6220!6220isNat#(X) 19] a!6220!6220isNat#(s(X)) =#> a!6220!6220U21#(a!6220!6220isNat(X)) 20] a!6220!6220isNat#(s(X)) =#> a!6220!6220isNat#(X) 21] a!6220!6220isNat#(x(X, Y)) =#> a!6220!6220U31#(a!6220!6220isNat(X), Y) 22] a!6220!6220isNat#(x(X, Y)) =#> a!6220!6220isNat#(X) 23] a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) 24] a!6220!6220plus#(X, 0) =#> a!6220!6220isNat#(X) 25] a!6220!6220plus#(X, s(Y)) =#> a!6220!6220U51#(a!6220!6220isNat(Y), Y, X) 26] a!6220!6220plus#(X, s(Y)) =#> a!6220!6220isNat#(Y) 27] a!6220!6220x#(X, 0) =#> a!6220!6220U61#(a!6220!6220isNat(X)) 28] a!6220!6220x#(X, 0) =#> a!6220!6220isNat#(X) 29] a!6220!6220x#(X, s(Y)) =#> a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) 30] a!6220!6220x#(X, s(Y)) =#> a!6220!6220isNat#(Y) 31] mark#(U11(X, Y)) =#> a!6220!6220U11#(mark(X), Y) 32] mark#(U11(X, Y)) =#> mark#(X) 33] mark#(U12(X)) =#> a!6220!6220U12#(mark(X)) 34] mark#(U12(X)) =#> mark#(X) 35] mark#(isNat(X)) =#> a!6220!6220isNat#(X) 36] mark#(U21(X)) =#> a!6220!6220U21#(mark(X)) 37] mark#(U21(X)) =#> mark#(X) 38] mark#(U31(X, Y)) =#> a!6220!6220U31#(mark(X), Y) 39] mark#(U31(X, Y)) =#> mark#(X) 40] mark#(U32(X)) =#> a!6220!6220U32#(mark(X)) 41] mark#(U32(X)) =#> mark#(X) 42] mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) 43] mark#(U41(X, Y)) =#> mark#(X) 44] mark#(U51(X, Y, Z)) =#> a!6220!6220U51#(mark(X), Y, Z) 45] mark#(U51(X, Y, Z)) =#> mark#(X) 46] mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) 47] mark#(U52(X, Y, Z)) =#> mark#(X) 48] mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) 49] mark#(plus(X, Y)) =#> mark#(X) 50] mark#(plus(X, Y)) =#> mark#(Y) 51] mark#(U61(X)) =#> a!6220!6220U61#(mark(X)) 52] mark#(U61(X)) =#> mark#(X) 53] mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) 54] mark#(U71(X, Y, Z)) =#> mark#(X) 55] mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) 56] mark#(U72(X, Y, Z)) =#> mark#(X) 57] mark#(x(X, Y)) =#> a!6220!6220x#(mark(X), mark(Y)) 58] mark#(x(X, Y)) =#> mark#(X) 59] mark#(x(X, Y)) =#> mark#(Y) 60] mark#(s(X)) =#> mark#(X) Rules R_0: a!6220!6220U11(tt, X) => a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) => tt a!6220!6220U21(tt) => tt a!6220!6220U31(tt, X) => a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) => tt a!6220!6220U41(tt, X) => mark(X) a!6220!6220U51(tt, X, Y) => a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) => s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) => 0 a!6220!6220U71(tt, X, Y) => a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) => a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) => tt a!6220!6220isNat(plus(X, Y)) => a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) => a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) => a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) => a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) => a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) => a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) => a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) => a!6220!6220U11(mark(X), Y) mark(U12(X)) => a!6220!6220U12(mark(X)) mark(isNat(X)) => a!6220!6220isNat(X) mark(U21(X)) => a!6220!6220U21(mark(X)) mark(U31(X, Y)) => a!6220!6220U31(mark(X), Y) mark(U32(X)) => a!6220!6220U32(mark(X)) mark(U41(X, Y)) => a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) => a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) => a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) => a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) => a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) => a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) => a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) => a!6220!6220x(mark(X), mark(Y)) mark(tt) => tt mark(s(X)) => s(mark(X)) mark(0) => 0 a!6220!6220U11(X, Y) => U11(X, Y) a!6220!6220U12(X) => U12(X) a!6220!6220isNat(X) => isNat(X) a!6220!6220U21(X) => U21(X) a!6220!6220U31(X, Y) => U31(X, Y) a!6220!6220U32(X) => U32(X) a!6220!6220U41(X, Y) => U41(X, Y) a!6220!6220U51(X, Y, Z) => U51(X, Y, Z) a!6220!6220U52(X, Y, Z) => U52(X, Y, Z) a!6220!6220plus(X, Y) => plus(X, Y) a!6220!6220U61(X) => U61(X) a!6220!6220U71(X, Y, Z) => U71(X, Y, Z) a!6220!6220U72(X, Y, Z) => U72(X, Y, Z) a!6220!6220x(X, Y) => x(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 : * 1 : 17, 18, 19, 20, 21, 22 * 2 : * 3 : 17, 18, 19, 20, 21, 22 * 4 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 5 : 7, 8, 9 * 6 : 17, 18, 19, 20, 21, 22 * 7 : 23, 24, 25, 26 * 8 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 9 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 10 : 12, 13, 14, 15, 16 * 11 : 17, 18, 19, 20, 21, 22 * 12 : 23, 24, 25, 26 * 13 : 27, 28, 29, 30 * 14 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 15 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 16 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 17 : 0, 1 * 18 : 17, 18, 19, 20, 21, 22 * 19 : * 20 : 17, 18, 19, 20, 21, 22 * 21 : 2, 3 * 22 : 17, 18, 19, 20, 21, 22 * 23 : 4 * 24 : 17, 18, 19, 20, 21, 22 * 25 : 5, 6 * 26 : 17, 18, 19, 20, 21, 22 * 27 : * 28 : 17, 18, 19, 20, 21, 22 * 29 : 10, 11 * 30 : 17, 18, 19, 20, 21, 22 * 31 : 0, 1 * 32 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 33 : * 34 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 35 : 17, 18, 19, 20, 21, 22 * 36 : * 37 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 38 : 2, 3 * 39 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 40 : * 41 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 42 : 4 * 43 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 44 : 5, 6 * 45 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 46 : 7, 8, 9 * 47 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 48 : 23, 24, 25, 26 * 49 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 50 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 51 : * 52 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 53 : 10, 11 * 54 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 55 : 12, 13, 14, 15, 16 * 56 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 57 : 27, 28, 29, 30 * 58 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 59 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 * 60 : 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 This graph has the following strongly connected components: P_1: a!6220!6220U11#(tt, X) =#> a!6220!6220isNat#(X) a!6220!6220U31#(tt, X) =#> a!6220!6220isNat#(X) a!6220!6220isNat#(plus(X, Y)) =#> a!6220!6220U11#(a!6220!6220isNat(X), Y) a!6220!6220isNat#(plus(X, Y)) =#> a!6220!6220isNat#(X) a!6220!6220isNat#(s(X)) =#> a!6220!6220isNat#(X) a!6220!6220isNat#(x(X, Y)) =#> a!6220!6220U31#(a!6220!6220isNat(X), Y) a!6220!6220isNat#(x(X, Y)) =#> a!6220!6220isNat#(X) P_2: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U51#(tt, X, Y) =#> a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> a!6220!6220plus#(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220U72#(tt, X, Y) =#> a!6220!6220x#(mark(Y), mark(X)) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) a!6220!6220plus#(X, s(Y)) =#> a!6220!6220U51#(a!6220!6220isNat(Y), Y, X) a!6220!6220x#(X, s(Y)) =#> a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> a!6220!6220x#(mark(X), mark(Y)) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) 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) and (P_2, R_0, m, f). 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U51#(tt, X, Y) >? a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) >? a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? a!6220!6220plus#(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220U72#(tt, X, Y) >? a!6220!6220x#(mark(Y), mark(X)) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220plus#(X, 0) >? a!6220!6220U41#(a!6220!6220isNat(X), X) a!6220!6220plus#(X, s(Y)) >? a!6220!6220U51#(a!6220!6220isNat(Y), Y, X) a!6220!6220x#(X, s(Y)) >? a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? a!6220!6220x#(mark(X), mark(Y)) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) Since this representation is not advantageous for the higher-order recursive path ordering, we present the strict requirements in their unextended form, which is not problematic since for any F, s and substituion gamma: (F s)gamma beta-reduces to F(s)gamma.) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[0]] = _|_ [[U11(x_1, x_2)]] = x_1 [[U12(x_1)]] = x_1 [[U21(x_1)]] = x_1 [[U31(x_1, x_2)]] = x_1 [[U32(x_1)]] = x_1 [[U61(x_1)]] = x_1 [[a!6220!6220U11(x_1, x_2)]] = x_1 [[a!6220!6220U12(x_1)]] = x_1 [[a!6220!6220U21(x_1)]] = x_1 [[a!6220!6220U31(x_1, x_2)]] = x_1 [[a!6220!6220U32(x_1)]] = x_1 [[a!6220!6220U41#(x_1, x_2)]] = a!6220!6220U41#(x_2) [[a!6220!6220U61(x_1)]] = x_1 [[a!6220!6220isNat(x_1)]] = a!6220!6220isNat [[isNat(x_1)]] = isNat [[mark(x_1)]] = x_1 We choose Lex = {} and Mul = {U41, U51, U52, U71, U72, a!6220!6220U41, a!6220!6220U41#, a!6220!6220U51, a!6220!6220U51#, a!6220!6220U52, a!6220!6220U52#, a!6220!6220U71, a!6220!6220U71#, a!6220!6220U72, a!6220!6220U72#, a!6220!6220isNat, a!6220!6220plus, a!6220!6220plus#, a!6220!6220x, a!6220!6220x#, isNat, mark#, plus, s, tt, x}, and the following precedence: U71 = U72 = a!6220!6220U71 = a!6220!6220U71# = a!6220!6220U72 = a!6220!6220U72# = a!6220!6220x = a!6220!6220x# = x > U51 = U52 = a!6220!6220U51 = a!6220!6220U52 = a!6220!6220plus = plus > s > a!6220!6220U41# = a!6220!6220U51# = a!6220!6220U52# = a!6220!6220plus# = mark# > U41 = a!6220!6220U41 > a!6220!6220isNat = isNat = tt Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220U41#(X) >= mark#(X) a!6220!6220U51#(tt, X, Y) >= a!6220!6220U52#(a!6220!6220isNat, X, Y) a!6220!6220U52#(tt, X, Y) >= a!6220!6220plus#(Y, X) a!6220!6220U52#(tt, X, Y) >= mark#(Y) a!6220!6220U52#(tt, X, Y) >= mark#(X) a!6220!6220U71#(tt, X, Y) >= a!6220!6220U72#(a!6220!6220isNat, X, Y) a!6220!6220U72#(tt, X, Y) > a!6220!6220plus#(a!6220!6220x(Y, X), Y) a!6220!6220U72#(tt, X, Y) >= a!6220!6220x#(Y, X) a!6220!6220U72#(tt, X, Y) >= mark#(Y) a!6220!6220U72#(tt, X, Y) >= mark#(X) a!6220!6220U72#(tt, X, Y) >= mark#(Y) a!6220!6220plus#(X, _|_) >= a!6220!6220U41#(X) a!6220!6220plus#(X, s(Y)) >= a!6220!6220U51#(a!6220!6220isNat, Y, X) a!6220!6220x#(X, s(Y)) >= a!6220!6220U71#(a!6220!6220isNat, Y, X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) mark#(plus(X, Y)) >= mark#(X) mark#(plus(X, Y)) >= mark#(Y) mark#(X) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= a!6220!6220x#(X, Y) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) tt >= a!6220!6220isNat tt >= tt tt >= tt tt >= a!6220!6220isNat tt >= tt a!6220!6220U41(tt, X) >= X a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat, X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(Y, X)) tt >= _|_ a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat, X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) a!6220!6220isNat >= tt a!6220!6220isNat >= a!6220!6220isNat a!6220!6220isNat >= a!6220!6220isNat a!6220!6220isNat >= a!6220!6220isNat a!6220!6220plus(X, _|_) >= a!6220!6220U41(a!6220!6220isNat, X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) a!6220!6220x(X, _|_) >= a!6220!6220isNat a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) X >= X X >= X isNat >= a!6220!6220isNat X >= X X >= X X >= X U41(X, Y) >= a!6220!6220U41(X, Y) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) plus(X, Y) >= a!6220!6220plus(X, Y) X >= X U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) x(X, Y) >= a!6220!6220x(X, Y) tt >= tt s(X) >= s(X) _|_ >= _|_ X >= X X >= X a!6220!6220isNat >= isNat X >= X X >= X X >= X a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) X >= X a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) With these choices, we have: 1] a!6220!6220U41#(X) >= mark#(X) because a!6220!6220U41# = mark#, a!6220!6220U41# in Mul and [2], by (Fun) 2] X >= X by (Meta) 3] a!6220!6220U51#(tt, X, Y) >= a!6220!6220U52#(a!6220!6220isNat, X, Y) because a!6220!6220U51# = a!6220!6220U52#, a!6220!6220U51# in Mul, [4], [5] and [2], by (Fun) 4] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 5] X >= X by (Meta) 6] a!6220!6220U52#(tt, X, Y) >= a!6220!6220plus#(Y, X) because [7], by (Star) 7] a!6220!6220U52#*(tt, X, Y) >= a!6220!6220plus#(Y, X) because a!6220!6220U52# = a!6220!6220plus#, a!6220!6220U52# in Mul, [8] and [9], by (Stat) 8] X >= X by (Meta) 9] Y >= Y by (Meta) 10] a!6220!6220U52#(tt, X, Y) >= mark#(Y) because [11], by (Star) 11] a!6220!6220U52#*(tt, X, Y) >= mark#(Y) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [9], by (Stat) 12] a!6220!6220U52#(tt, X, Y) >= mark#(X) because [13], by (Star) 13] a!6220!6220U52#*(tt, X, Y) >= mark#(X) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [8], by (Stat) 14] a!6220!6220U71#(tt, X, Y) >= a!6220!6220U72#(a!6220!6220isNat, X, Y) because a!6220!6220U71# = a!6220!6220U72#, a!6220!6220U71# in Mul, [4], [8] and [9], by (Fun) 15] a!6220!6220U72#(tt, X, Y) > a!6220!6220plus#(a!6220!6220x(Y, X), Y) because [16], by definition 16] a!6220!6220U72#*(tt, X, Y) >= a!6220!6220plus#(a!6220!6220x(Y, X), Y) because a!6220!6220U72# > a!6220!6220plus#, [17] and [18], by (Copy) 17] a!6220!6220U72#*(tt, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72# = a!6220!6220x, a!6220!6220U72# in Mul, [8] and [9], by (Stat) 18] a!6220!6220U72#*(tt, X, Y) >= Y because [9], by (Select) 19] a!6220!6220U72#(tt, X, Y) >= a!6220!6220x#(Y, X) because [20], by (Star) 20] a!6220!6220U72#*(tt, X, Y) >= a!6220!6220x#(Y, X) because a!6220!6220U72# = a!6220!6220x#, a!6220!6220U72# in Mul, [8] and [9], by (Stat) 21] a!6220!6220U72#(tt, X, Y) >= mark#(Y) because [22], by (Star) 22] a!6220!6220U72#*(tt, X, Y) >= mark#(Y) because a!6220!6220U72# > mark# and [18], by (Copy) 23] a!6220!6220U72#(tt, X, Y) >= mark#(X) because [24], by (Star) 24] a!6220!6220U72#*(tt, X, Y) >= mark#(X) because a!6220!6220U72# > mark# and [25], by (Copy) 25] a!6220!6220U72#*(tt, X, Y) >= X because [8], by (Select) 26] a!6220!6220U72#(tt, X, Y) >= mark#(Y) because [22], by (Star) 27] a!6220!6220plus#(X, _|_) >= a!6220!6220U41#(X) because [28], by (Star) 28] a!6220!6220plus#*(X, _|_) >= a!6220!6220U41#(X) because a!6220!6220plus# = a!6220!6220U41#, a!6220!6220plus# in Mul and [9], by (Stat) 29] a!6220!6220plus#(X, s(Y)) >= a!6220!6220U51#(a!6220!6220isNat, Y, X) because [30], by (Star) 30] a!6220!6220plus#*(X, s(Y)) >= a!6220!6220U51#(a!6220!6220isNat, Y, X) because a!6220!6220plus# = a!6220!6220U51#, a!6220!6220plus# in Mul, [9], [31] and [33], by (Stat) 31] s(Y) > a!6220!6220isNat because [32], by definition 32] s*(Y) >= a!6220!6220isNat because s > a!6220!6220isNat, by (Copy) 33] s(Y) > Y because [34], by definition 34] s*(Y) >= Y because [8], by (Select) 35] a!6220!6220x#(X, s(Y)) >= a!6220!6220U71#(a!6220!6220isNat, Y, X) because [36], by (Star) 36] a!6220!6220x#*(X, s(Y)) >= a!6220!6220U71#(a!6220!6220isNat, Y, X) because a!6220!6220x# = a!6220!6220U71#, a!6220!6220x# in Mul, [9], [31] and [33], by (Stat) 37] mark#(X) >= mark#(X) because mark# in Mul and [38], by (Fun) 38] X >= X by (Meta) 39] mark#(X) >= mark#(X) because mark# in Mul and [40], by (Fun) 40] X >= X by (Meta) 41] mark#(X) >= mark#(X) because mark# in Mul and [42], by (Fun) 42] X >= X by (Meta) 43] mark#(X) >= mark#(X) because mark# in Mul and [44], by (Fun) 44] X >= X by (Meta) 45] mark#(X) >= mark#(X) because mark# in Mul and [46], by (Fun) 46] X >= X by (Meta) 47] mark#(U41(X, Y)) >= a!6220!6220U41#(Y) because mark# = a!6220!6220U41#, mark# in Mul and [48], by (Fun) 48] U41(X, Y) >= Y because [49], by (Star) 49] U41*(X, Y) >= Y because [50], by (Select) 50] Y >= Y by (Meta) 51] mark#(U41(X, Y)) >= mark#(X) because mark# in Mul and [52], by (Fun) 52] U41(X, Y) >= X because [53], by (Star) 53] U41*(X, Y) >= X because [44], by (Select) 54] mark#(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) because [55], by (Star) 55] mark#*(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) because mark# = a!6220!6220U51#, mark# in Mul, [56], [58] and [60], by (Stat) 56] U51(X, Y, Z) > X because [57], by definition 57] U51*(X, Y, Z) >= X because [44], by (Select) 58] U51(X, Y, Z) > Y because [59], by definition 59] U51*(X, Y, Z) >= Y because [50], by (Select) 60] U51(X, Y, Z) > Z because [61], by definition 61] U51*(X, Y, Z) >= Z because [62], by (Select) 62] Z >= Z by (Meta) 63] mark#(U51(X, Y, Z)) >= mark#(X) because [64], by (Star) 64] mark#*(U51(X, Y, Z)) >= mark#(X) because mark# in Mul and [65], by (Stat) 65] U51(X, Y, Z) > X because [57], by definition 66] mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [67], by (Star) 67] mark#*(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because mark# = a!6220!6220U52#, mark# in Mul, [68], [70] and [72], by (Stat) 68] U52(X, Y, Z) > X because [69], by definition 69] U52*(X, Y, Z) >= X because [44], by (Select) 70] U52(X, Y, Z) > Y because [71], by definition 71] U52*(X, Y, Z) >= Y because [50], by (Select) 72] U52(X, Y, Z) > Z because [73], by definition 73] U52*(X, Y, Z) >= Z because [62], by (Select) 74] mark#(U52(X, Y, Z)) >= mark#(X) because mark# in Mul and [75], by (Fun) 75] U52(X, Y, Z) >= X because [69], by (Star) 76] mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) because [77], by (Star) 77] mark#*(plus(X, Y)) >= a!6220!6220plus#(X, Y) because mark# = a!6220!6220plus#, mark# in Mul, [78] and [80], by (Stat) 78] plus(X, Y) > X because [79], by definition 79] plus*(X, Y) >= X because [44], by (Select) 80] plus(X, Y) > Y because [81], by definition 81] plus*(X, Y) >= Y because [50], by (Select) 82] mark#(plus(X, Y)) >= mark#(X) because mark# in Mul and [83], by (Fun) 83] plus(X, Y) >= X because [79], by (Star) 84] mark#(plus(X, Y)) >= mark#(Y) because mark# in Mul and [85], by (Fun) 85] plus(X, Y) >= Y because [81], by (Star) 86] mark#(X) >= mark#(X) because mark# in Mul and [87], by (Fun) 87] X >= X by (Meta) 88] mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [89], by (Star) 89] mark#*(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [90], by (Select) 90] U71(X, Y, Z) >= a!6220!6220U71#(X, Y, Z) because U71 = a!6220!6220U71#, U71 in Mul, [91], [92] and [93], by (Fun) 91] X >= X by (Meta) 92] Y >= Y by (Meta) 93] Z >= Z by (Meta) 94] mark#(U71(X, Y, Z)) >= mark#(X) because mark# in Mul and [95], by (Fun) 95] U71(X, Y, Z) >= X because [96], by (Star) 96] U71*(X, Y, Z) >= X because [91], by (Select) 97] mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [98], by (Star) 98] mark#*(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [99], by (Select) 99] U72(X, Y, Z) >= a!6220!6220U72#(X, Y, Z) because U72 = a!6220!6220U72#, U72 in Mul, [91], [92] and [93], by (Fun) 100] mark#(U72(X, Y, Z)) >= mark#(X) because mark# in Mul and [101], by (Fun) 101] U72(X, Y, Z) >= X because [102], by (Star) 102] U72*(X, Y, Z) >= X because [91], by (Select) 103] mark#(x(X, Y)) >= a!6220!6220x#(X, Y) because [104], by (Star) 104] mark#*(x(X, Y)) >= a!6220!6220x#(X, Y) because [105], by (Select) 105] x(X, Y) >= a!6220!6220x#(X, Y) because x = a!6220!6220x#, x in Mul, [91] and [106], by (Fun) 106] Y >= Y by (Meta) 107] mark#(x(X, Y)) >= mark#(X) because mark# in Mul and [108], by (Fun) 108] x(X, Y) >= X because [109], by (Star) 109] x*(X, Y) >= X because [91], by (Select) 110] mark#(x(X, Y)) >= mark#(Y) because mark# in Mul and [111], by (Fun) 111] x(X, Y) >= Y because [112], by (Star) 112] x*(X, Y) >= Y because [106], by (Select) 113] mark#(s(X)) >= mark#(X) because mark# in Mul and [114], by (Fun) 114] s(X) >= X because [115], by (Star) 115] s*(X) >= X because [87], by (Select) 116] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 117] tt >= tt by (Fun) 118] tt >= tt by (Fun) 119] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 120] tt >= tt by (Fun) 121] a!6220!6220U41(tt, X) >= X because [122], by (Star) 122] a!6220!6220U41*(tt, X) >= X because [9], by (Select) 123] a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat, X, Y) because a!6220!6220U51 = a!6220!6220U52, a!6220!6220U51 in Mul, [4], [8] and [9], by (Fun) 124] a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(Y, X)) because [125], by (Star) 125] a!6220!6220U52*(tt, X, Y) >= s(a!6220!6220plus(Y, X)) because a!6220!6220U52 > s and [126], by (Copy) 126] a!6220!6220U52*(tt, X, Y) >= a!6220!6220plus(Y, X) because a!6220!6220U52 = a!6220!6220plus, a!6220!6220U52 in Mul, [8] and [9], by (Stat) 127] tt >= _|_ by (Bot) 128] a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat, X, Y) because a!6220!6220U71 = a!6220!6220U72, a!6220!6220U71 in Mul, [4], [8] and [9], by (Fun) 129] a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because [130], by (Star) 130] a!6220!6220U72*(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because a!6220!6220U72 > a!6220!6220plus, [131] and [132], by (Copy) 131] a!6220!6220U72*(tt, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72 = a!6220!6220x, a!6220!6220U72 in Mul, [8] and [9], by (Stat) 132] a!6220!6220U72*(tt, X, Y) >= Y because [9], by (Select) 133] a!6220!6220isNat >= tt because a!6220!6220isNat = tt, by (Fun) 134] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 135] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 136] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 137] a!6220!6220plus(X, _|_) >= a!6220!6220U41(a!6220!6220isNat, X) because [138], by (Star) 138] a!6220!6220plus*(X, _|_) >= a!6220!6220U41(a!6220!6220isNat, X) because a!6220!6220plus > a!6220!6220U41, [139] and [140], by (Copy) 139] a!6220!6220plus*(X, _|_) >= a!6220!6220isNat because a!6220!6220plus > a!6220!6220isNat, by (Copy) 140] a!6220!6220plus*(X, _|_) >= X because [9], by (Select) 141] a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) because [142], by (Star) 142] a!6220!6220plus*(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) because a!6220!6220plus = a!6220!6220U51, a!6220!6220plus in Mul, [9], [31] and [33], by (Stat) 143] a!6220!6220x(X, _|_) >= a!6220!6220isNat because [144], by (Star) 144] a!6220!6220x*(X, _|_) >= a!6220!6220isNat because a!6220!6220x > a!6220!6220isNat, by (Copy) 145] a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) because [146], by (Star) 146] a!6220!6220x*(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) because a!6220!6220x = a!6220!6220U71, a!6220!6220x in Mul, [9], [31] and [33], by (Stat) 147] X >= X by (Meta) 148] X >= X by (Meta) 149] isNat >= a!6220!6220isNat because isNat = a!6220!6220isNat and isNat in Mul, by (Fun) 150] X >= X by (Meta) 151] X >= X by (Meta) 152] X >= X by (Meta) 153] U41(X, Y) >= a!6220!6220U41(X, Y) because U41 = a!6220!6220U41, U41 in Mul, [91] and [106], by (Fun) 154] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [91], [106] and [93], by (Fun) 155] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [91], [106] and [93], by (Fun) 156] plus(X, Y) >= a!6220!6220plus(X, Y) because plus = a!6220!6220plus, plus in Mul, [91] and [106], by (Fun) 157] X >= X by (Meta) 158] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [91], [106] and [93], by (Fun) 159] U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) because U72 = a!6220!6220U72, U72 in Mul, [91], [106] and [93], by (Fun) 160] x(X, Y) >= a!6220!6220x(X, Y) because x = a!6220!6220x, x in Mul, [91] and [106], by (Fun) 161] tt >= tt by (Fun) 162] s(X) >= s(X) because s in Mul and [163], by (Fun) 163] X >= X by (Meta) 164] _|_ >= _|_ by (Bot) 165] X >= X by (Meta) 166] X >= X by (Meta) 167] a!6220!6220isNat >= isNat because a!6220!6220isNat = isNat and a!6220!6220isNat in Mul, by (Fun) 168] X >= X by (Meta) 169] X >= X by (Meta) 170] X >= X by (Meta) 171] a!6220!6220U41(X, Y) >= U41(X, Y) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [91] and [106], by (Fun) 172] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [91], [106] and [93], by (Fun) 173] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [91], [106] and [93], by (Fun) 174] a!6220!6220plus(X, Y) >= plus(X, Y) because a!6220!6220plus = plus, a!6220!6220plus in Mul, [91] and [106], by (Fun) 175] X >= X by (Meta) 176] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [91], [106] and [93], by (Fun) 177] a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [91], [106] and [93], by (Fun) 178] a!6220!6220x(X, Y) >= x(X, Y) because a!6220!6220x = x, a!6220!6220x in Mul, [91] and [106], by (Fun) By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_2, R_0, minimal, formative) by (P_3, R_0, minimal, formative), where P_3 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U51#(tt, X, Y) =#> a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> a!6220!6220x#(mark(Y), mark(X)) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) a!6220!6220plus#(X, s(Y)) =#> a!6220!6220U51#(a!6220!6220isNat(Y), Y, X) a!6220!6220x#(X, s(Y)) =#> a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> a!6220!6220x#(mark(X), mark(Y)) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U51#(tt, X, Y) >? a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) >? a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? a!6220!6220x#(mark(Y), mark(X)) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220plus#(X, 0) >? a!6220!6220U41#(a!6220!6220isNat(X), X) a!6220!6220plus#(X, s(Y)) >? a!6220!6220U51#(a!6220!6220isNat(Y), Y, X) a!6220!6220x#(X, s(Y)) >? a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? a!6220!6220x#(mark(X), mark(Y)) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) Since this representation is not advantageous for the higher-order recursive path ordering, we present the strict requirements in their unextended form, which is not problematic since for any F, s and substituion gamma: (F s)gamma beta-reduces to F(s)gamma.) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[0]] = _|_ [[U11(x_1, x_2)]] = x_1 [[U12(x_1)]] = x_1 [[U21(x_1)]] = x_1 [[U31(x_1, x_2)]] = x_1 [[U32(x_1)]] = x_1 [[a!6220!6220U11(x_1, x_2)]] = x_1 [[a!6220!6220U12(x_1)]] = x_1 [[a!6220!6220U21(x_1)]] = x_1 [[a!6220!6220U31(x_1, x_2)]] = x_1 [[a!6220!6220U32(x_1)]] = x_1 [[a!6220!6220U41#(x_1, x_2)]] = a!6220!6220U41#(x_2) [[a!6220!6220U51#(x_1, x_2, x_3)]] = a!6220!6220U51#(x_2, x_3) [[a!6220!6220U52#(x_1, x_2, x_3)]] = a!6220!6220U52#(x_2, x_3) [[a!6220!6220isNat(x_1)]] = a!6220!6220isNat [[isNat(x_1)]] = isNat [[mark(x_1)]] = x_1 We choose Lex = {} and Mul = {U41, U51, U52, U61, U71, U72, a!6220!6220U41, a!6220!6220U41#, a!6220!6220U51, a!6220!6220U51#, a!6220!6220U52, a!6220!6220U52#, a!6220!6220U61, a!6220!6220U71, a!6220!6220U71#, a!6220!6220U72, a!6220!6220U72#, a!6220!6220isNat, a!6220!6220plus, a!6220!6220plus#, a!6220!6220x, a!6220!6220x#, isNat, mark#, plus, s, tt, x}, and the following precedence: U71 = U72 = a!6220!6220U71 = a!6220!6220U72 = a!6220!6220x = x > U51 = U52 = a!6220!6220U51 = a!6220!6220U52 = a!6220!6220plus = plus > a!6220!6220U51# = a!6220!6220U52# = a!6220!6220plus# > s > U41 = a!6220!6220U41 > a!6220!6220isNat = isNat = tt > U61 = a!6220!6220U61 > a!6220!6220U41# = a!6220!6220U71# = a!6220!6220U72# = a!6220!6220x# = mark# Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220U41#(X) >= mark#(X) a!6220!6220U51#(X, Y) >= a!6220!6220U52#(X, Y) a!6220!6220U52#(X, Y) >= a!6220!6220plus#(Y, X) a!6220!6220U52#(X, Y) >= mark#(Y) a!6220!6220U52#(X, Y) >= mark#(X) a!6220!6220U71#(tt, X, Y) >= a!6220!6220U72#(a!6220!6220isNat, X, Y) a!6220!6220U72#(tt, X, Y) >= a!6220!6220x#(Y, X) a!6220!6220U72#(tt, X, Y) >= mark#(Y) a!6220!6220U72#(tt, X, Y) >= mark#(X) a!6220!6220U72#(tt, X, Y) >= mark#(Y) a!6220!6220plus#(X, _|_) >= a!6220!6220U41#(X) a!6220!6220plus#(X, s(Y)) > a!6220!6220U51#(Y, X) a!6220!6220x#(X, s(Y)) >= a!6220!6220U71#(a!6220!6220isNat, Y, X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= a!6220!6220U51#(Y, Z) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) mark#(plus(X, Y)) >= mark#(X) mark#(plus(X, Y)) >= mark#(Y) mark#(U61(X)) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= a!6220!6220x#(X, Y) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) tt >= a!6220!6220isNat tt >= tt tt >= tt tt >= a!6220!6220isNat tt >= tt a!6220!6220U41(tt, X) >= X a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat, X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(Y, X)) a!6220!6220U61(tt) >= _|_ a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat, X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) a!6220!6220isNat >= tt a!6220!6220isNat >= a!6220!6220isNat a!6220!6220isNat >= a!6220!6220isNat a!6220!6220isNat >= a!6220!6220isNat a!6220!6220plus(X, _|_) >= a!6220!6220U41(a!6220!6220isNat, X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) a!6220!6220x(X, _|_) >= a!6220!6220U61(a!6220!6220isNat) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) X >= X X >= X isNat >= a!6220!6220isNat X >= X X >= X X >= X U41(X, Y) >= a!6220!6220U41(X, Y) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) plus(X, Y) >= a!6220!6220plus(X, Y) U61(X) >= a!6220!6220U61(X) U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) x(X, Y) >= a!6220!6220x(X, Y) tt >= tt s(X) >= s(X) _|_ >= _|_ X >= X X >= X a!6220!6220isNat >= isNat X >= X X >= X X >= X a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) With these choices, we have: 1] a!6220!6220U41#(X) >= mark#(X) because a!6220!6220U41# = mark#, a!6220!6220U41# in Mul and [2], by (Fun) 2] X >= X by (Meta) 3] a!6220!6220U51#(X, Y) >= a!6220!6220U52#(X, Y) because a!6220!6220U51# = a!6220!6220U52#, a!6220!6220U51# in Mul, [4] and [2], by (Fun) 4] X >= X by (Meta) 5] a!6220!6220U52#(X, Y) >= a!6220!6220plus#(Y, X) because a!6220!6220U52# = a!6220!6220plus#, a!6220!6220U52# in Mul, [6] and [7], by (Fun) 6] X >= X by (Meta) 7] Y >= Y by (Meta) 8] a!6220!6220U52#(X, Y) >= mark#(Y) because [9], by (Star) 9] a!6220!6220U52#*(X, Y) >= mark#(Y) because a!6220!6220U52# > mark# and [10], by (Copy) 10] a!6220!6220U52#*(X, Y) >= Y because [7], by (Select) 11] a!6220!6220U52#(X, Y) >= mark#(X) because [12], by (Star) 12] a!6220!6220U52#*(X, Y) >= mark#(X) because a!6220!6220U52# > mark# and [13], by (Copy) 13] a!6220!6220U52#*(X, Y) >= X because [6], by (Select) 14] a!6220!6220U71#(tt, X, Y) >= a!6220!6220U72#(a!6220!6220isNat, X, Y) because a!6220!6220U71# = a!6220!6220U72#, a!6220!6220U71# in Mul, [15], [6] and [7], by (Fun) 15] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 16] a!6220!6220U72#(tt, X, Y) >= a!6220!6220x#(Y, X) because [17], by (Star) 17] a!6220!6220U72#*(tt, X, Y) >= a!6220!6220x#(Y, X) because a!6220!6220U72# = a!6220!6220x#, a!6220!6220U72# in Mul, [6] and [7], by (Stat) 18] a!6220!6220U72#(tt, X, Y) >= mark#(Y) because [19], by (Star) 19] a!6220!6220U72#*(tt, X, Y) >= mark#(Y) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [7], by (Stat) 20] a!6220!6220U72#(tt, X, Y) >= mark#(X) because [21], by (Star) 21] a!6220!6220U72#*(tt, X, Y) >= mark#(X) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [6], by (Stat) 22] a!6220!6220U72#(tt, X, Y) >= mark#(Y) because [19], by (Star) 23] a!6220!6220plus#(X, _|_) >= a!6220!6220U41#(X) because [24], by (Star) 24] a!6220!6220plus#*(X, _|_) >= a!6220!6220U41#(X) because a!6220!6220plus# > a!6220!6220U41# and [25], by (Copy) 25] a!6220!6220plus#*(X, _|_) >= X because [7], by (Select) 26] a!6220!6220plus#(X, s(Y)) > a!6220!6220U51#(Y, X) because [27], by definition 27] a!6220!6220plus#*(X, s(Y)) >= a!6220!6220U51#(Y, X) because a!6220!6220plus# = a!6220!6220U51#, a!6220!6220plus# in Mul, [7] and [28], by (Stat) 28] s(Y) > Y because [29], by definition 29] s*(Y) >= Y because [6], by (Select) 30] a!6220!6220x#(X, s(Y)) >= a!6220!6220U71#(a!6220!6220isNat, Y, X) because [31], by (Star) 31] a!6220!6220x#*(X, s(Y)) >= a!6220!6220U71#(a!6220!6220isNat, Y, X) because a!6220!6220x# = a!6220!6220U71#, a!6220!6220x# in Mul, [7], [32] and [28], by (Stat) 32] s(Y) > a!6220!6220isNat because [33], by definition 33] s*(Y) >= a!6220!6220isNat because s > a!6220!6220isNat, by (Copy) 34] mark#(X) >= mark#(X) because mark# in Mul and [35], by (Fun) 35] X >= X by (Meta) 36] mark#(X) >= mark#(X) because mark# in Mul and [37], by (Fun) 37] X >= X by (Meta) 38] mark#(X) >= mark#(X) because mark# in Mul and [39], by (Fun) 39] X >= X by (Meta) 40] mark#(X) >= mark#(X) because mark# in Mul and [41], by (Fun) 41] X >= X by (Meta) 42] mark#(X) >= mark#(X) because mark# in Mul and [43], by (Fun) 43] X >= X by (Meta) 44] mark#(U41(X, Y)) >= a!6220!6220U41#(Y) because mark# = a!6220!6220U41#, mark# in Mul and [45], by (Fun) 45] U41(X, Y) >= Y because [46], by (Star) 46] U41*(X, Y) >= Y because [47], by (Select) 47] Y >= Y by (Meta) 48] mark#(U41(X, Y)) >= mark#(X) because [49], by (Star) 49] mark#*(U41(X, Y)) >= mark#(X) because mark# in Mul and [50], by (Stat) 50] U41(X, Y) > X because [51], by definition 51] U41*(X, Y) >= X because [41], by (Select) 52] mark#(U51(X, Y, Z)) >= a!6220!6220U51#(Y, Z) because [53], by (Star) 53] mark#*(U51(X, Y, Z)) >= a!6220!6220U51#(Y, Z) because [54], by (Select) 54] U51(X, Y, Z) >= a!6220!6220U51#(Y, Z) because [55], by (Star) 55] U51*(X, Y, Z) >= a!6220!6220U51#(Y, Z) because U51 > a!6220!6220U51#, [56] and [57], by (Copy) 56] U51*(X, Y, Z) >= Y because [47], by (Select) 57] U51*(X, Y, Z) >= Z because [58], by (Select) 58] Z >= Z by (Meta) 59] mark#(U51(X, Y, Z)) >= mark#(X) because [60], by (Star) 60] mark#*(U51(X, Y, Z)) >= mark#(X) because mark# in Mul and [61], by (Stat) 61] U51(X, Y, Z) > X because [62], by definition 62] U51*(X, Y, Z) >= X because [41], by (Select) 63] mark#(U52(X, Y, Z)) >= a!6220!6220U52#(Y, Z) because [64], by (Star) 64] mark#*(U52(X, Y, Z)) >= a!6220!6220U52#(Y, Z) because [65], by (Select) 65] U52(X, Y, Z) >= a!6220!6220U52#(Y, Z) because [66], by (Star) 66] U52*(X, Y, Z) >= a!6220!6220U52#(Y, Z) because U52 > a!6220!6220U52#, [67] and [68], by (Copy) 67] U52*(X, Y, Z) >= Y because [47], by (Select) 68] U52*(X, Y, Z) >= Z because [58], by (Select) 69] mark#(U52(X, Y, Z)) >= mark#(X) because mark# in Mul and [70], by (Fun) 70] U52(X, Y, Z) >= X because [71], by (Star) 71] U52*(X, Y, Z) >= X because [41], by (Select) 72] mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) because [73], by (Star) 73] mark#*(plus(X, Y)) >= a!6220!6220plus#(X, Y) because [74], by (Select) 74] plus(X, Y) >= a!6220!6220plus#(X, Y) because [75], by (Star) 75] plus*(X, Y) >= a!6220!6220plus#(X, Y) because plus > a!6220!6220plus#, [76] and [77], by (Copy) 76] plus*(X, Y) >= X because [41], by (Select) 77] plus*(X, Y) >= Y because [47], by (Select) 78] mark#(plus(X, Y)) >= mark#(X) because mark# in Mul and [79], by (Fun) 79] plus(X, Y) >= X because [76], by (Star) 80] mark#(plus(X, Y)) >= mark#(Y) because mark# in Mul and [81], by (Fun) 81] plus(X, Y) >= Y because [77], by (Star) 82] mark#(U61(X)) >= mark#(X) because mark# in Mul and [83], by (Fun) 83] U61(X) >= X because [84], by (Star) 84] U61*(X) >= X because [43], by (Select) 85] mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [86], by (Star) 86] mark#*(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because mark# = a!6220!6220U71#, mark# in Mul, [87], [89] and [91], by (Stat) 87] U71(X, Y, Z) > X because [88], by definition 88] U71*(X, Y, Z) >= X because [41], by (Select) 89] U71(X, Y, Z) > Y because [90], by definition 90] U71*(X, Y, Z) >= Y because [47], by (Select) 91] U71(X, Y, Z) > Z because [92], by definition 92] U71*(X, Y, Z) >= Z because [58], by (Select) 93] mark#(U71(X, Y, Z)) >= mark#(X) because mark# in Mul and [94], by (Fun) 94] U71(X, Y, Z) >= X because [88], by (Star) 95] mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [96], by (Star) 96] mark#*(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [97], by (Select) 97] U72(X, Y, Z) >= a!6220!6220U72#(X, Y, Z) because [98], by (Star) 98] U72*(X, Y, Z) >= a!6220!6220U72#(X, Y, Z) because U72 > a!6220!6220U72#, [99], [100] and [101], by (Copy) 99] U72*(X, Y, Z) >= X because [41], by (Select) 100] U72*(X, Y, Z) >= Y because [47], by (Select) 101] U72*(X, Y, Z) >= Z because [58], by (Select) 102] mark#(U72(X, Y, Z)) >= mark#(X) because [103], by (Star) 103] mark#*(U72(X, Y, Z)) >= mark#(X) because [104], by (Select) 104] U72(X, Y, Z) >= mark#(X) because [105], by (Star) 105] U72*(X, Y, Z) >= mark#(X) because U72 > mark# and [99], by (Copy) 106] mark#(x(X, Y)) >= a!6220!6220x#(X, Y) because [107], by (Star) 107] mark#*(x(X, Y)) >= a!6220!6220x#(X, Y) because [108], by (Select) 108] x(X, Y) >= a!6220!6220x#(X, Y) because [109], by (Star) 109] x*(X, Y) >= a!6220!6220x#(X, Y) because x > a!6220!6220x#, [110] and [111], by (Copy) 110] x*(X, Y) >= X because [41], by (Select) 111] x*(X, Y) >= Y because [47], by (Select) 112] mark#(x(X, Y)) >= mark#(X) because [113], by (Star) 113] mark#*(x(X, Y)) >= mark#(X) because [114], by (Select) 114] x(X, Y) >= mark#(X) because [115], by (Star) 115] x*(X, Y) >= mark#(X) because x > mark# and [110], by (Copy) 116] mark#(x(X, Y)) >= mark#(Y) because mark# in Mul and [117], by (Fun) 117] x(X, Y) >= Y because [111], by (Star) 118] mark#(s(X)) >= mark#(X) because mark# in Mul and [119], by (Fun) 119] s(X) >= X because [120], by (Star) 120] s*(X) >= X because [43], by (Select) 121] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 122] tt >= tt by (Fun) 123] tt >= tt by (Fun) 124] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 125] tt >= tt by (Fun) 126] a!6220!6220U41(tt, X) >= X because [127], by (Star) 127] a!6220!6220U41*(tt, X) >= X because [7], by (Select) 128] a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat, X, Y) because a!6220!6220U51 = a!6220!6220U52, a!6220!6220U51 in Mul, [15], [6] and [7], by (Fun) 129] a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(Y, X)) because [130], by (Star) 130] a!6220!6220U52*(tt, X, Y) >= s(a!6220!6220plus(Y, X)) because a!6220!6220U52 > s and [131], by (Copy) 131] a!6220!6220U52*(tt, X, Y) >= a!6220!6220plus(Y, X) because a!6220!6220U52 = a!6220!6220plus, a!6220!6220U52 in Mul, [6] and [7], by (Stat) 132] a!6220!6220U61(tt) >= _|_ by (Bot) 133] a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat, X, Y) because a!6220!6220U71 = a!6220!6220U72, a!6220!6220U71 in Mul, [15], [6] and [7], by (Fun) 134] a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because [135], by (Star) 135] a!6220!6220U72*(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because a!6220!6220U72 > a!6220!6220plus, [136] and [137], by (Copy) 136] a!6220!6220U72*(tt, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72 = a!6220!6220x, a!6220!6220U72 in Mul, [6] and [7], by (Stat) 137] a!6220!6220U72*(tt, X, Y) >= Y because [7], by (Select) 138] a!6220!6220isNat >= tt because a!6220!6220isNat = tt, by (Fun) 139] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 140] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 141] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 142] a!6220!6220plus(X, _|_) >= a!6220!6220U41(a!6220!6220isNat, X) because [143], by (Star) 143] a!6220!6220plus*(X, _|_) >= a!6220!6220U41(a!6220!6220isNat, X) because a!6220!6220plus > a!6220!6220U41, [144] and [145], by (Copy) 144] a!6220!6220plus*(X, _|_) >= a!6220!6220isNat because a!6220!6220plus > a!6220!6220isNat, by (Copy) 145] a!6220!6220plus*(X, _|_) >= X because [7], by (Select) 146] a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) because [147], by (Star) 147] a!6220!6220plus*(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) because a!6220!6220plus = a!6220!6220U51, a!6220!6220plus in Mul, [7], [32] and [28], by (Stat) 148] a!6220!6220x(X, _|_) >= a!6220!6220U61(a!6220!6220isNat) because [149], by (Star) 149] a!6220!6220x*(X, _|_) >= a!6220!6220U61(a!6220!6220isNat) because a!6220!6220x > a!6220!6220U61 and [150], by (Copy) 150] a!6220!6220x*(X, _|_) >= a!6220!6220isNat because a!6220!6220x > a!6220!6220isNat, by (Copy) 151] a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) because [152], by (Star) 152] a!6220!6220x*(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) because a!6220!6220x = a!6220!6220U71, a!6220!6220x in Mul, [7], [32] and [28], by (Stat) 153] X >= X by (Meta) 154] X >= X by (Meta) 155] isNat >= a!6220!6220isNat because isNat = a!6220!6220isNat and isNat in Mul, by (Fun) 156] X >= X by (Meta) 157] X >= X by (Meta) 158] X >= X by (Meta) 159] U41(X, Y) >= a!6220!6220U41(X, Y) because U41 = a!6220!6220U41, U41 in Mul, [160] and [161], by (Fun) 160] X >= X by (Meta) 161] Y >= Y by (Meta) 162] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [160], [161] and [163], by (Fun) 163] Z >= Z by (Meta) 164] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [160], [161] and [163], by (Fun) 165] plus(X, Y) >= a!6220!6220plus(X, Y) because plus = a!6220!6220plus, plus in Mul, [160] and [166], by (Fun) 166] Y >= Y by (Meta) 167] U61(X) >= a!6220!6220U61(X) because U61 = a!6220!6220U61, U61 in Mul and [168], by (Fun) 168] X >= X by (Meta) 169] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [160], [166] and [163], by (Fun) 170] U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) because U72 = a!6220!6220U72, U72 in Mul, [160], [166] and [163], by (Fun) 171] x(X, Y) >= a!6220!6220x(X, Y) because x = a!6220!6220x, x in Mul, [160] and [166], by (Fun) 172] tt >= tt by (Fun) 173] s(X) >= s(X) because s in Mul and [168], by (Fun) 174] _|_ >= _|_ by (Bot) 175] X >= X by (Meta) 176] X >= X by (Meta) 177] a!6220!6220isNat >= isNat because a!6220!6220isNat = isNat and a!6220!6220isNat in Mul, by (Fun) 178] X >= X by (Meta) 179] X >= X by (Meta) 180] X >= X by (Meta) 181] a!6220!6220U41(X, Y) >= U41(X, Y) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [160] and [166], by (Fun) 182] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [160], [166] and [163], by (Fun) 183] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [160], [166] and [163], by (Fun) 184] a!6220!6220plus(X, Y) >= plus(X, Y) because a!6220!6220plus = plus, a!6220!6220plus in Mul, [160] and [166], by (Fun) 185] a!6220!6220U61(X) >= U61(X) because a!6220!6220U61 = U61, a!6220!6220U61 in Mul and [168], by (Fun) 186] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [160], [166] and [163], by (Fun) 187] a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [160], [166] and [163], by (Fun) 188] a!6220!6220x(X, Y) >= x(X, Y) because a!6220!6220x = x, a!6220!6220x in Mul, [160] and [166], by (Fun) By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_3, R_0, minimal, formative) by (P_4, R_0, minimal, formative), where P_4 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U51#(tt, X, Y) =#> a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> a!6220!6220x#(mark(Y), mark(X)) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) a!6220!6220x#(X, s(Y)) =#> a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> a!6220!6220x#(mark(X), mark(Y)) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U51#(tt, X, Y) >? a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) >? a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? a!6220!6220x#(mark(Y), mark(X)) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220plus#(X, 0) >? a!6220!6220U41#(a!6220!6220isNat(X), X) a!6220!6220x#(X, s(Y)) >? a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? a!6220!6220x#(mark(X), mark(Y)) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) Since this representation is not advantageous for the higher-order recursive path ordering, we present the strict requirements in their unextended form, which is not problematic since for any F, s and substituion gamma: (F s)gamma beta-reduces to F(s)gamma.) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[U11(x_1, x_2)]] = x_1 [[U12(x_1)]] = x_1 [[U21(x_1)]] = x_1 [[U31(x_1, x_2)]] = x_1 [[U32(x_1)]] = x_1 [[a!6220!6220U11(x_1, x_2)]] = x_1 [[a!6220!6220U12(x_1)]] = x_1 [[a!6220!6220U21(x_1)]] = x_1 [[a!6220!6220U31(x_1, x_2)]] = x_1 [[a!6220!6220U32(x_1)]] = x_1 [[a!6220!6220isNat(x_1)]] = _|_ [[isNat(x_1)]] = _|_ [[mark(x_1)]] = x_1 [[tt]] = _|_ We choose Lex = {U41, a!6220!6220U41} and Mul = {0, U51, U52, U61, U71, U72, a!6220!6220U41#, a!6220!6220U51, a!6220!6220U51#, a!6220!6220U52, a!6220!6220U52#, a!6220!6220U61, a!6220!6220U71, a!6220!6220U71#, a!6220!6220U72, a!6220!6220U72#, a!6220!6220plus, a!6220!6220plus#, a!6220!6220x, a!6220!6220x#, mark#, plus, s, x}, and the following precedence: U71 = U72 = a!6220!6220U41# = a!6220!6220U51# = a!6220!6220U52# = a!6220!6220U71 = a!6220!6220U71# = a!6220!6220U72 = a!6220!6220U72# = a!6220!6220plus# = a!6220!6220x = a!6220!6220x# = mark# = x > U51 = U52 = a!6220!6220U51 = a!6220!6220U52 = a!6220!6220plus = plus > U61 = a!6220!6220U61 > U41 = a!6220!6220U41 > 0 > s Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220U41#(_|_, X) >= mark#(X) a!6220!6220U51#(_|_, X, Y) >= a!6220!6220U52#(_|_, X, Y) a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y, X) a!6220!6220U52#(_|_, X, Y) >= mark#(Y) a!6220!6220U52#(_|_, X, Y) >= mark#(X) a!6220!6220U71#(_|_, X, Y) >= a!6220!6220U72#(_|_, X, Y) a!6220!6220U72#(_|_, X, Y) > a!6220!6220x#(Y, X) a!6220!6220U72#(_|_, X, Y) >= mark#(Y) a!6220!6220U72#(_|_, X, Y) >= mark#(X) a!6220!6220U72#(_|_, X, Y) >= mark#(Y) a!6220!6220plus#(X, 0) >= a!6220!6220U41#(_|_, X) a!6220!6220x#(X, s(Y)) >= a!6220!6220U71#(_|_, Y, X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(X, Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) mark#(plus(X, Y)) >= mark#(X) mark#(plus(X, Y)) >= mark#(Y) mark#(U61(X)) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= a!6220!6220x#(X, Y) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220U41(_|_, X) >= X a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) a!6220!6220U61(_|_) >= 0 a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220plus(X, 0) >= a!6220!6220U41(_|_, X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(_|_) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X U41(X, Y) >= a!6220!6220U41(X, Y) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) plus(X, Y) >= a!6220!6220plus(X, Y) U61(X) >= a!6220!6220U61(X) U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) x(X, Y) >= a!6220!6220x(X, Y) _|_ >= _|_ s(X) >= s(X) 0 >= 0 X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) With these choices, we have: 1] a!6220!6220U41#(_|_, X) >= mark#(X) because [2], by (Star) 2] a!6220!6220U41#*(_|_, X) >= mark#(X) because a!6220!6220U41# = mark#, a!6220!6220U41# in Mul and [3], by (Stat) 3] X >= X by (Meta) 4] a!6220!6220U51#(_|_, X, Y) >= a!6220!6220U52#(_|_, X, Y) because a!6220!6220U51# = a!6220!6220U52#, a!6220!6220U51# in Mul, [5], [6] and [3], by (Fun) 5] _|_ >= _|_ by (Bot) 6] X >= X by (Meta) 7] a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y, X) because [8], by (Star) 8] a!6220!6220U52#*(_|_, X, Y) >= a!6220!6220plus#(Y, X) because a!6220!6220U52# = a!6220!6220plus#, a!6220!6220U52# in Mul, [9] and [10], by (Stat) 9] X >= X by (Meta) 10] Y >= Y by (Meta) 11] a!6220!6220U52#(_|_, X, Y) >= mark#(Y) because [12], by (Star) 12] a!6220!6220U52#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [10], by (Stat) 13] a!6220!6220U52#(_|_, X, Y) >= mark#(X) because [14], by (Star) 14] a!6220!6220U52#*(_|_, X, Y) >= mark#(X) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [9], by (Stat) 15] a!6220!6220U71#(_|_, X, Y) >= a!6220!6220U72#(_|_, X, Y) because a!6220!6220U71# = a!6220!6220U72#, a!6220!6220U71# in Mul, [5], [9] and [10], by (Fun) 16] a!6220!6220U72#(_|_, X, Y) > a!6220!6220x#(Y, X) because [17], by definition 17] a!6220!6220U72#*(_|_, X, Y) >= a!6220!6220x#(Y, X) because a!6220!6220U72# = a!6220!6220x#, a!6220!6220U72# in Mul, [9] and [10], by (Stat) 18] a!6220!6220U72#(_|_, X, Y) >= mark#(Y) because [19], by (Star) 19] a!6220!6220U72#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [10], by (Stat) 20] a!6220!6220U72#(_|_, X, Y) >= mark#(X) because [21], by (Star) 21] a!6220!6220U72#*(_|_, X, Y) >= mark#(X) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [9], by (Stat) 22] a!6220!6220U72#(_|_, X, Y) >= mark#(Y) because [19], by (Star) 23] a!6220!6220plus#(X, 0) >= a!6220!6220U41#(_|_, X) because a!6220!6220plus# = a!6220!6220U41#, a!6220!6220plus# in Mul, [10] and [24], by (Fun) 24] 0 >= _|_ by (Bot) 25] a!6220!6220x#(X, s(Y)) >= a!6220!6220U71#(_|_, Y, X) because [26], by (Star) 26] a!6220!6220x#*(X, s(Y)) >= a!6220!6220U71#(_|_, Y, X) because a!6220!6220x# = a!6220!6220U71#, a!6220!6220x# in Mul, [10], [27] and [29], by (Stat) 27] s(Y) > _|_ because [28], by definition 28] s*(Y) >= _|_ by (Bot) 29] s(Y) > Y because [30], by definition 30] s*(Y) >= Y because [9], by (Select) 31] mark#(X) >= mark#(X) because mark# in Mul and [32], by (Fun) 32] X >= X by (Meta) 33] mark#(X) >= mark#(X) because mark# in Mul and [34], by (Fun) 34] X >= X by (Meta) 35] mark#(X) >= mark#(X) because mark# in Mul and [36], by (Fun) 36] X >= X by (Meta) 37] mark#(X) >= mark#(X) because mark# in Mul and [38], by (Fun) 38] X >= X by (Meta) 39] mark#(X) >= mark#(X) because mark# in Mul and [40], by (Fun) 40] X >= X by (Meta) 41] mark#(U41(X, Y)) >= a!6220!6220U41#(X, Y) because [42], by (Star) 42] mark#*(U41(X, Y)) >= a!6220!6220U41#(X, Y) because mark# = a!6220!6220U41#, mark# in Mul, [43] and [45], by (Stat) 43] U41(X, Y) > X because [44], by definition 44] U41*(X, Y) >= X because [38], by (Select) 45] U41(X, Y) > Y because [46], by definition 46] U41*(X, Y) >= Y because [47], by (Select) 47] Y >= Y by (Meta) 48] mark#(U41(X, Y)) >= mark#(X) because mark# in Mul and [49], by (Fun) 49] U41(X, Y) >= X because [44], by (Star) 50] mark#(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) because [51], by (Star) 51] mark#*(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) because mark# = a!6220!6220U51#, mark# in Mul, [52], [54] and [56], by (Stat) 52] U51(X, Y, Z) > X because [53], by definition 53] U51*(X, Y, Z) >= X because [38], by (Select) 54] U51(X, Y, Z) > Y because [55], by definition 55] U51*(X, Y, Z) >= Y because [47], by (Select) 56] U51(X, Y, Z) > Z because [57], by definition 57] U51*(X, Y, Z) >= Z because [58], by (Select) 58] Z >= Z by (Meta) 59] mark#(U51(X, Y, Z)) >= mark#(X) because [60], by (Star) 60] mark#*(U51(X, Y, Z)) >= mark#(X) because mark# in Mul and [61], by (Stat) 61] U51(X, Y, Z) > X because [53], by definition 62] mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [63], by (Star) 63] mark#*(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because mark# = a!6220!6220U52#, mark# in Mul, [64], [66] and [68], by (Stat) 64] U52(X, Y, Z) > X because [65], by definition 65] U52*(X, Y, Z) >= X because [38], by (Select) 66] U52(X, Y, Z) > Y because [67], by definition 67] U52*(X, Y, Z) >= Y because [47], by (Select) 68] U52(X, Y, Z) > Z because [69], by definition 69] U52*(X, Y, Z) >= Z because [58], by (Select) 70] mark#(U52(X, Y, Z)) >= mark#(X) because mark# in Mul and [71], by (Fun) 71] U52(X, Y, Z) >= X because [65], by (Star) 72] mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) because [73], by (Star) 73] mark#*(plus(X, Y)) >= a!6220!6220plus#(X, Y) because mark# = a!6220!6220plus#, mark# in Mul, [74] and [76], by (Stat) 74] plus(X, Y) > X because [75], by definition 75] plus*(X, Y) >= X because [38], by (Select) 76] plus(X, Y) > Y because [77], by definition 77] plus*(X, Y) >= Y because [47], by (Select) 78] mark#(plus(X, Y)) >= mark#(X) because mark# in Mul and [79], by (Fun) 79] plus(X, Y) >= X because [75], by (Star) 80] mark#(plus(X, Y)) >= mark#(Y) because mark# in Mul and [81], by (Fun) 81] plus(X, Y) >= Y because [77], by (Star) 82] mark#(U61(X)) >= mark#(X) because mark# in Mul and [83], by (Fun) 83] U61(X) >= X because [84], by (Star) 84] U61*(X) >= X because [40], by (Select) 85] mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [86], by (Star) 86] mark#*(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [87], by (Select) 87] U71(X, Y, Z) >= a!6220!6220U71#(X, Y, Z) because U71 = a!6220!6220U71#, U71 in Mul, [88], [89] and [90], by (Fun) 88] X >= X by (Meta) 89] Y >= Y by (Meta) 90] Z >= Z by (Meta) 91] mark#(U71(X, Y, Z)) >= mark#(X) because [92], by (Star) 92] mark#*(U71(X, Y, Z)) >= mark#(X) because [93], by (Select) 93] U71(X, Y, Z) >= mark#(X) because [94], by (Star) 94] U71*(X, Y, Z) >= mark#(X) because U71 = mark#, U71 in Mul and [88], by (Stat) 95] mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [96], by (Star) 96] mark#*(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because mark# = a!6220!6220U72#, mark# in Mul, [97], [99] and [101], by (Stat) 97] U72(X, Y, Z) > X because [98], by definition 98] U72*(X, Y, Z) >= X because [88], by (Select) 99] U72(X, Y, Z) > Y because [100], by definition 100] U72*(X, Y, Z) >= Y because [89], by (Select) 101] U72(X, Y, Z) > Z because [102], by definition 102] U72*(X, Y, Z) >= Z because [90], by (Select) 103] mark#(U72(X, Y, Z)) >= mark#(X) because mark# in Mul and [104], by (Fun) 104] U72(X, Y, Z) >= X because [98], by (Star) 105] mark#(x(X, Y)) >= a!6220!6220x#(X, Y) because [106], by (Star) 106] mark#*(x(X, Y)) >= a!6220!6220x#(X, Y) because mark# = a!6220!6220x#, mark# in Mul, [107] and [109], by (Stat) 107] x(X, Y) > X because [108], by definition 108] x*(X, Y) >= X because [88], by (Select) 109] x(X, Y) > Y because [110], by definition 110] x*(X, Y) >= Y because [89], by (Select) 111] mark#(x(X, Y)) >= mark#(X) because mark# in Mul and [112], by (Fun) 112] x(X, Y) >= X because [108], by (Star) 113] mark#(x(X, Y)) >= mark#(Y) because mark# in Mul and [114], by (Fun) 114] x(X, Y) >= Y because [110], by (Star) 115] mark#(s(X)) >= mark#(X) because mark# in Mul and [116], by (Fun) 116] s(X) >= X because [117], by (Star) 117] s*(X) >= X because [40], by (Select) 118] _|_ >= _|_ by (Bot) 119] _|_ >= _|_ by (Bot) 120] _|_ >= _|_ by (Bot) 121] _|_ >= _|_ by (Bot) 122] _|_ >= _|_ by (Bot) 123] a!6220!6220U41(_|_, X) >= X because [124], by (Star) 124] a!6220!6220U41*(_|_, X) >= X because [10], by (Select) 125] a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) because a!6220!6220U51 = a!6220!6220U52, a!6220!6220U51 in Mul, [5], [9] and [10], by (Fun) 126] a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because [127], by (Star) 127] a!6220!6220U52*(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because a!6220!6220U52 > s and [128], by (Copy) 128] a!6220!6220U52*(_|_, X, Y) >= a!6220!6220plus(Y, X) because a!6220!6220U52 = a!6220!6220plus, a!6220!6220U52 in Mul, [9] and [10], by (Stat) 129] a!6220!6220U61(_|_) >= 0 because [130], by (Star) 130] a!6220!6220U61*(_|_) >= 0 because a!6220!6220U61 > 0, by (Copy) 131] a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) because a!6220!6220U71 = a!6220!6220U72, a!6220!6220U71 in Mul, [5], [9] and [10], by (Fun) 132] a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because [133], by (Star) 133] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because a!6220!6220U72 > a!6220!6220plus, [134] and [135], by (Copy) 134] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72 = a!6220!6220x, a!6220!6220U72 in Mul, [9] and [10], by (Stat) 135] a!6220!6220U72*(_|_, X, Y) >= Y because [10], by (Select) 136] _|_ >= _|_ by (Bot) 137] _|_ >= _|_ by (Bot) 138] _|_ >= _|_ by (Bot) 139] _|_ >= _|_ by (Bot) 140] a!6220!6220plus(X, 0) >= a!6220!6220U41(_|_, X) because [141], by (Star) 141] a!6220!6220plus*(X, 0) >= a!6220!6220U41(_|_, X) because a!6220!6220plus > a!6220!6220U41, [142] and [143], by (Copy) 142] a!6220!6220plus*(X, 0) >= _|_ by (Bot) 143] a!6220!6220plus*(X, 0) >= X because [10], by (Select) 144] a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because [145], by (Star) 145] a!6220!6220plus*(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because a!6220!6220plus = a!6220!6220U51, a!6220!6220plus in Mul, [10], [27] and [29], by (Stat) 146] a!6220!6220x(X, 0) >= a!6220!6220U61(_|_) because [147], by (Star) 147] a!6220!6220x*(X, 0) >= a!6220!6220U61(_|_) because a!6220!6220x > a!6220!6220U61 and [148], by (Copy) 148] a!6220!6220x*(X, 0) >= _|_ by (Bot) 149] a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because [150], by (Star) 150] a!6220!6220x*(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because a!6220!6220x = a!6220!6220U71, a!6220!6220x in Mul, [10], [27] and [29], by (Stat) 151] X >= X by (Meta) 152] X >= X by (Meta) 153] _|_ >= _|_ by (Bot) 154] X >= X by (Meta) 155] X >= X by (Meta) 156] X >= X by (Meta) 157] U41(X, Y) >= a!6220!6220U41(X, Y) because U41 = a!6220!6220U41, [88] and [89], by (Fun) 158] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [88], [89] and [90], by (Fun) 159] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [88], [89] and [90], by (Fun) 160] plus(X, Y) >= a!6220!6220plus(X, Y) because plus = a!6220!6220plus, plus in Mul, [88] and [161], by (Fun) 161] Y >= Y by (Meta) 162] U61(X) >= a!6220!6220U61(X) because U61 = a!6220!6220U61, U61 in Mul and [163], by (Fun) 163] X >= X by (Meta) 164] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [88], [161] and [90], by (Fun) 165] U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) because U72 = a!6220!6220U72, U72 in Mul, [88], [161] and [90], by (Fun) 166] x(X, Y) >= a!6220!6220x(X, Y) because x = a!6220!6220x, x in Mul, [88] and [161], by (Fun) 167] _|_ >= _|_ by (Bot) 168] s(X) >= s(X) because s in Mul and [163], by (Fun) 169] 0 >= 0 by (Fun) 170] X >= X by (Meta) 171] X >= X by (Meta) 172] _|_ >= _|_ by (Bot) 173] X >= X by (Meta) 174] X >= X by (Meta) 175] X >= X by (Meta) 176] a!6220!6220U41(X, Y) >= U41(X, Y) because a!6220!6220U41 = U41, [88] and [161], by (Fun) 177] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [88], [161] and [90], by (Fun) 178] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [88], [161] and [90], by (Fun) 179] a!6220!6220plus(X, Y) >= plus(X, Y) because a!6220!6220plus = plus, a!6220!6220plus in Mul, [88] and [161], by (Fun) 180] a!6220!6220U61(X) >= U61(X) because a!6220!6220U61 = U61, a!6220!6220U61 in Mul and [163], by (Fun) 181] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [88], [161] and [90], by (Fun) 182] a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [88], [161] and [90], by (Fun) 183] a!6220!6220x(X, Y) >= x(X, Y) because a!6220!6220x = x, a!6220!6220x in Mul, [88] and [161], by (Fun) By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_4, R_0, minimal, formative) by (P_5, R_0, minimal, formative), where P_5 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U51#(tt, X, Y) =#> a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) a!6220!6220x#(X, s(Y)) =#> a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> a!6220!6220x#(mark(X), mark(Y)) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U51#(tt, X, Y) >? a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) >? a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220plus#(X, 0) >? a!6220!6220U41#(a!6220!6220isNat(X), X) a!6220!6220x#(X, s(Y)) >? a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? a!6220!6220x#(mark(X), mark(Y)) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) Since this representation is not advantageous for the higher-order recursive path ordering, we present the strict requirements in their unextended form, which is not problematic since for any F, s and substituion gamma: (F s)gamma beta-reduces to F(s)gamma.) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[0]] = _|_ [[U11(x_1, x_2)]] = x_1 [[U12(x_1)]] = x_1 [[U21(x_1)]] = x_1 [[U31(x_1, x_2)]] = x_1 [[U32(x_1)]] = x_1 [[U61(x_1)]] = x_1 [[a!6220!6220U11(x_1, x_2)]] = x_1 [[a!6220!6220U12(x_1)]] = x_1 [[a!6220!6220U21(x_1)]] = x_1 [[a!6220!6220U31(x_1, x_2)]] = x_1 [[a!6220!6220U32(x_1)]] = x_1 [[a!6220!6220U41#(x_1, x_2)]] = a!6220!6220U41#(x_2) [[a!6220!6220U61(x_1)]] = x_1 [[a!6220!6220U71#(x_1, x_2, x_3)]] = a!6220!6220U71#(x_2, x_3) [[a!6220!6220U72#(x_1, x_2, x_3)]] = a!6220!6220U72#(x_2, x_3) [[a!6220!6220isNat(x_1)]] = _|_ [[a!6220!6220plus#(x_1, x_2)]] = a!6220!6220plus#(x_1) [[isNat(x_1)]] = _|_ [[mark(x_1)]] = x_1 [[tt]] = _|_ We choose Lex = {} and Mul = {U41, U51, U52, U71, U72, a!6220!6220U41, a!6220!6220U41#, a!6220!6220U51, a!6220!6220U51#, a!6220!6220U52, a!6220!6220U52#, a!6220!6220U71, a!6220!6220U71#, a!6220!6220U72, a!6220!6220U72#, a!6220!6220plus, a!6220!6220plus#, a!6220!6220x, a!6220!6220x#, mark#, plus, s, x}, and the following precedence: U71 = U72 = a!6220!6220U41# = a!6220!6220U51# = a!6220!6220U52# = a!6220!6220U71 = a!6220!6220U71# = a!6220!6220U72 = a!6220!6220U72# = a!6220!6220plus# = a!6220!6220x = a!6220!6220x# = mark# = x > U41 = U51 = U52 = a!6220!6220U41 = a!6220!6220U51 = a!6220!6220U52 = a!6220!6220plus = plus > s Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220U41#(X) >= mark#(X) a!6220!6220U51#(_|_, X, Y) >= a!6220!6220U52#(_|_, X, Y) a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y) a!6220!6220U52#(_|_, X, Y) >= mark#(Y) a!6220!6220U52#(_|_, X, Y) >= mark#(X) a!6220!6220U71#(X, Y) >= a!6220!6220U72#(X, Y) a!6220!6220U72#(X, Y) >= mark#(Y) a!6220!6220U72#(X, Y) >= mark#(X) a!6220!6220U72#(X, Y) >= mark#(Y) a!6220!6220plus#(X) >= a!6220!6220U41#(X) a!6220!6220x#(X, s(Y)) >= a!6220!6220U71#(Y, X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= a!6220!6220plus#(X) mark#(plus(X, Y)) >= mark#(X) mark#(plus(X, Y)) >= mark#(Y) mark#(X) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) > a!6220!6220x#(X, Y) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220U41(_|_, X) >= X a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) _|_ >= _|_ a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220plus(X, _|_) >= a!6220!6220U41(_|_, X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) a!6220!6220x(X, _|_) >= _|_ a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X U41(X, Y) >= a!6220!6220U41(X, Y) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) plus(X, Y) >= a!6220!6220plus(X, Y) X >= X U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) x(X, Y) >= a!6220!6220x(X, Y) _|_ >= _|_ s(X) >= s(X) _|_ >= _|_ X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) X >= X a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) With these choices, we have: 1] a!6220!6220U41#(X) >= mark#(X) because a!6220!6220U41# = mark#, a!6220!6220U41# in Mul and [2], by (Fun) 2] X >= X by (Meta) 3] a!6220!6220U51#(_|_, X, Y) >= a!6220!6220U52#(_|_, X, Y) because a!6220!6220U51# = a!6220!6220U52#, a!6220!6220U51# in Mul, [4], [5] and [2], by (Fun) 4] _|_ >= _|_ by (Bot) 5] X >= X by (Meta) 6] a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y) because [7], by (Star) 7] a!6220!6220U52#*(_|_, X, Y) >= a!6220!6220plus#(Y) because a!6220!6220U52# = a!6220!6220plus#, a!6220!6220U52# in Mul and [8], by (Stat) 8] Y >= Y by (Meta) 9] a!6220!6220U52#(_|_, X, Y) >= mark#(Y) because [10], by (Star) 10] a!6220!6220U52#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [8], by (Stat) 11] a!6220!6220U52#(_|_, X, Y) >= mark#(X) because [12], by (Star) 12] a!6220!6220U52#*(_|_, X, Y) >= mark#(X) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [5], by (Stat) 13] a!6220!6220U71#(X, Y) >= a!6220!6220U72#(X, Y) because a!6220!6220U71# = a!6220!6220U72#, a!6220!6220U71# in Mul, [5] and [8], by (Fun) 14] a!6220!6220U72#(X, Y) >= mark#(Y) because [15], by (Star) 15] a!6220!6220U72#*(X, Y) >= mark#(Y) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [8], by (Stat) 16] a!6220!6220U72#(X, Y) >= mark#(X) because [17], by (Star) 17] a!6220!6220U72#*(X, Y) >= mark#(X) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [5], by (Stat) 18] a!6220!6220U72#(X, Y) >= mark#(Y) because [15], by (Star) 19] a!6220!6220plus#(X) >= a!6220!6220U41#(X) because a!6220!6220plus# = a!6220!6220U41#, a!6220!6220plus# in Mul and [8], by (Fun) 20] a!6220!6220x#(X, s(Y)) >= a!6220!6220U71#(Y, X) because a!6220!6220x# = a!6220!6220U71#, a!6220!6220x# in Mul, [8] and [21], by (Fun) 21] s(Y) >= Y because [22], by (Star) 22] s*(Y) >= Y because [5], by (Select) 23] mark#(X) >= mark#(X) because mark# in Mul and [24], by (Fun) 24] X >= X by (Meta) 25] mark#(X) >= mark#(X) because mark# in Mul and [26], by (Fun) 26] X >= X by (Meta) 27] mark#(X) >= mark#(X) because mark# in Mul and [28], by (Fun) 28] X >= X by (Meta) 29] mark#(X) >= mark#(X) because mark# in Mul and [30], by (Fun) 30] X >= X by (Meta) 31] mark#(X) >= mark#(X) because mark# in Mul and [32], by (Fun) 32] X >= X by (Meta) 33] mark#(U41(X, Y)) >= a!6220!6220U41#(Y) because mark# = a!6220!6220U41#, mark# in Mul and [34], by (Fun) 34] U41(X, Y) >= Y because [35], by (Star) 35] U41*(X, Y) >= Y because [36], by (Select) 36] Y >= Y by (Meta) 37] mark#(U41(X, Y)) >= mark#(X) because mark# in Mul and [38], by (Fun) 38] U41(X, Y) >= X because [39], by (Star) 39] U41*(X, Y) >= X because [30], by (Select) 40] mark#(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) because [41], by (Star) 41] mark#*(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) because mark# = a!6220!6220U51#, mark# in Mul, [42], [44] and [46], by (Stat) 42] U51(X, Y, Z) > X because [43], by definition 43] U51*(X, Y, Z) >= X because [30], by (Select) 44] U51(X, Y, Z) > Y because [45], by definition 45] U51*(X, Y, Z) >= Y because [36], by (Select) 46] U51(X, Y, Z) > Z because [47], by definition 47] U51*(X, Y, Z) >= Z because [48], by (Select) 48] Z >= Z by (Meta) 49] mark#(U51(X, Y, Z)) >= mark#(X) because mark# in Mul and [50], by (Fun) 50] U51(X, Y, Z) >= X because [43], by (Star) 51] mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [52], by (Star) 52] mark#*(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because mark# = a!6220!6220U52#, mark# in Mul, [53], [55] and [57], by (Stat) 53] U52(X, Y, Z) > X because [54], by definition 54] U52*(X, Y, Z) >= X because [30], by (Select) 55] U52(X, Y, Z) > Y because [56], by definition 56] U52*(X, Y, Z) >= Y because [36], by (Select) 57] U52(X, Y, Z) > Z because [58], by definition 58] U52*(X, Y, Z) >= Z because [48], by (Select) 59] mark#(U52(X, Y, Z)) >= mark#(X) because mark# in Mul and [60], by (Fun) 60] U52(X, Y, Z) >= X because [54], by (Star) 61] mark#(plus(X, Y)) >= a!6220!6220plus#(X) because mark# = a!6220!6220plus#, mark# in Mul and [62], by (Fun) 62] plus(X, Y) >= X because [63], by (Star) 63] plus*(X, Y) >= X because [30], by (Select) 64] mark#(plus(X, Y)) >= mark#(X) because mark# in Mul and [62], by (Fun) 65] mark#(plus(X, Y)) >= mark#(Y) because mark# in Mul and [66], by (Fun) 66] plus(X, Y) >= Y because [67], by (Star) 67] plus*(X, Y) >= Y because [36], by (Select) 68] mark#(X) >= mark#(X) because mark# in Mul and [69], by (Fun) 69] X >= X by (Meta) 70] mark#(U71(X, Y, Z)) >= a!6220!6220U71#(Y, Z) because [71], by (Star) 71] mark#*(U71(X, Y, Z)) >= a!6220!6220U71#(Y, Z) because mark# = a!6220!6220U71#, mark# in Mul, [72] and [74], by (Stat) 72] U71(X, Y, Z) > Y because [73], by definition 73] U71*(X, Y, Z) >= Y because [36], by (Select) 74] U71(X, Y, Z) > Z because [75], by definition 75] U71*(X, Y, Z) >= Z because [48], by (Select) 76] mark#(U71(X, Y, Z)) >= mark#(X) because [77], by (Star) 77] mark#*(U71(X, Y, Z)) >= mark#(X) because mark# in Mul and [78], by (Stat) 78] U71(X, Y, Z) > X because [79], by definition 79] U71*(X, Y, Z) >= X because [30], by (Select) 80] mark#(U72(X, Y, Z)) >= a!6220!6220U72#(Y, Z) because [81], by (Star) 81] mark#*(U72(X, Y, Z)) >= a!6220!6220U72#(Y, Z) because mark# = a!6220!6220U72#, mark# in Mul, [82] and [84], by (Stat) 82] U72(X, Y, Z) > Y because [83], by definition 83] U72*(X, Y, Z) >= Y because [36], by (Select) 84] U72(X, Y, Z) > Z because [85], by definition 85] U72*(X, Y, Z) >= Z because [48], by (Select) 86] mark#(U72(X, Y, Z)) >= mark#(X) because [87], by (Star) 87] mark#*(U72(X, Y, Z)) >= mark#(X) because [88], by (Select) 88] U72(X, Y, Z) >= mark#(X) because [89], by (Star) 89] U72*(X, Y, Z) >= mark#(X) because U72 = mark#, U72 in Mul and [90], by (Stat) 90] X >= X by (Meta) 91] mark#(x(X, Y)) > a!6220!6220x#(X, Y) because [92], by definition 92] mark#*(x(X, Y)) >= a!6220!6220x#(X, Y) because mark# = a!6220!6220x#, mark# in Mul, [93] and [95], by (Stat) 93] x(X, Y) > X because [94], by definition 94] x*(X, Y) >= X because [90], by (Select) 95] x(X, Y) > Y because [96], by definition 96] x*(X, Y) >= Y because [36], by (Select) 97] mark#(x(X, Y)) >= mark#(X) because mark# in Mul and [98], by (Fun) 98] x(X, Y) >= X because [94], by (Star) 99] mark#(x(X, Y)) >= mark#(Y) because mark# in Mul and [100], by (Fun) 100] x(X, Y) >= Y because [96], by (Star) 101] mark#(s(X)) >= mark#(X) because mark# in Mul and [102], by (Fun) 102] s(X) >= X because [103], by (Star) 103] s*(X) >= X because [69], by (Select) 104] _|_ >= _|_ by (Bot) 105] _|_ >= _|_ by (Bot) 106] _|_ >= _|_ by (Bot) 107] _|_ >= _|_ by (Bot) 108] _|_ >= _|_ by (Bot) 109] a!6220!6220U41(_|_, X) >= X because [110], by (Star) 110] a!6220!6220U41*(_|_, X) >= X because [8], by (Select) 111] a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) because a!6220!6220U51 = a!6220!6220U52, a!6220!6220U51 in Mul, [4], [5] and [8], by (Fun) 112] a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because [113], by (Star) 113] a!6220!6220U52*(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because a!6220!6220U52 > s and [114], by (Copy) 114] a!6220!6220U52*(_|_, X, Y) >= a!6220!6220plus(Y, X) because a!6220!6220U52 = a!6220!6220plus, a!6220!6220U52 in Mul, [115] and [8], by (Stat) 115] X >= X by (Meta) 116] _|_ >= _|_ by (Bot) 117] a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) because a!6220!6220U71 = a!6220!6220U72, a!6220!6220U71 in Mul, [4], [115] and [8], by (Fun) 118] a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because [119], by (Star) 119] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because a!6220!6220U72 > a!6220!6220plus, [120] and [121], by (Copy) 120] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72 = a!6220!6220x, a!6220!6220U72 in Mul, [115] and [8], by (Stat) 121] a!6220!6220U72*(_|_, X, Y) >= Y because [8], by (Select) 122] _|_ >= _|_ by (Bot) 123] _|_ >= _|_ by (Bot) 124] _|_ >= _|_ by (Bot) 125] _|_ >= _|_ by (Bot) 126] a!6220!6220plus(X, _|_) >= a!6220!6220U41(_|_, X) because a!6220!6220plus = a!6220!6220U41, a!6220!6220plus in Mul, [8] and [127], by (Fun) 127] _|_ >= _|_ by (Bot) 128] a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because [129], by (Star) 129] a!6220!6220plus*(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because a!6220!6220plus = a!6220!6220U51, a!6220!6220plus in Mul, [8], [130] and [132], by (Stat) 130] s(Y) > _|_ because [131], by definition 131] s*(Y) >= _|_ by (Bot) 132] s(Y) > Y because [133], by definition 133] s*(Y) >= Y because [115], by (Select) 134] a!6220!6220x(X, _|_) >= _|_ by (Bot) 135] a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because [136], by (Star) 136] a!6220!6220x*(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because a!6220!6220x = a!6220!6220U71, a!6220!6220x in Mul, [8], [130] and [132], by (Stat) 137] X >= X by (Meta) 138] X >= X by (Meta) 139] _|_ >= _|_ by (Bot) 140] X >= X by (Meta) 141] X >= X by (Meta) 142] X >= X by (Meta) 143] U41(X, Y) >= a!6220!6220U41(X, Y) because U41 = a!6220!6220U41, U41 in Mul, [144] and [145], by (Fun) 144] X >= X by (Meta) 145] Y >= Y by (Meta) 146] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [144], [145] and [147], by (Fun) 147] Z >= Z by (Meta) 148] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [144], [145] and [147], by (Fun) 149] plus(X, Y) >= a!6220!6220plus(X, Y) because plus = a!6220!6220plus, plus in Mul, [144] and [150], by (Fun) 150] Y >= Y by (Meta) 151] X >= X by (Meta) 152] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [144], [150] and [147], by (Fun) 153] U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) because U72 = a!6220!6220U72, U72 in Mul, [144], [150] and [147], by (Fun) 154] x(X, Y) >= a!6220!6220x(X, Y) because x = a!6220!6220x, x in Mul, [144] and [150], by (Fun) 155] _|_ >= _|_ by (Bot) 156] s(X) >= s(X) because s in Mul and [157], by (Fun) 157] X >= X by (Meta) 158] _|_ >= _|_ by (Bot) 159] X >= X by (Meta) 160] X >= X by (Meta) 161] _|_ >= _|_ by (Bot) 162] X >= X by (Meta) 163] X >= X by (Meta) 164] X >= X by (Meta) 165] a!6220!6220U41(X, Y) >= U41(X, Y) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [144] and [150], by (Fun) 166] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [144], [150] and [147], by (Fun) 167] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [144], [150] and [147], by (Fun) 168] a!6220!6220plus(X, Y) >= plus(X, Y) because a!6220!6220plus = plus, a!6220!6220plus in Mul, [144] and [150], by (Fun) 169] X >= X by (Meta) 170] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [144], [150] and [147], by (Fun) 171] a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [144], [150] and [147], by (Fun) 172] a!6220!6220x(X, Y) >= x(X, Y) because a!6220!6220x = x, a!6220!6220x in Mul, [144] and [150], by (Fun) By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_5, R_0, minimal, formative) by (P_6, R_0, minimal, formative), where P_6 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U51#(tt, X, Y) =#> a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) a!6220!6220x#(X, s(Y)) =#> a!6220!6220U71#(a!6220!6220isNat(Y), Y, X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 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, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 1 : 2, 3, 4 * 2 : 9 * 3 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 4 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 5 : 6, 7, 8 * 6 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 7 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 8 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 9 : 0 * 10 : 5 * 11 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 12 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 13 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 14 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 15 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 16 : 0 * 17 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 18 : 1 * 19 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 20 : 2, 3, 4 * 21 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 22 : 9 * 23 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 24 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 25 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 26 : 5 * 27 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 28 : 6, 7, 8 * 29 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 30 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 31 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 * 32 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 This graph has the following strongly connected components: P_7: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U51#(tt, X, Y) =#> a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_6, R_0, m, f) by (P_7, R_0, m, f). Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U51#(tt, X, Y) >? a!6220!6220U52#(a!6220!6220isNat(Y), X, Y) a!6220!6220U52#(tt, X, Y) >? a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220plus#(X, 0) >? a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) Since this representation is not advantageous for the higher-order recursive path ordering, we present the strict requirements in their unextended form, which is not problematic since for any F, s and substituion gamma: (F s)gamma beta-reduces to F(s)gamma.) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[0]] = _|_ [[U11(x_1, x_2)]] = x_1 [[U12(x_1)]] = x_1 [[U21(x_1)]] = x_1 [[U31(x_1, x_2)]] = x_1 [[U32(x_1)]] = x_1 [[a!6220!6220U11(x_1, x_2)]] = x_1 [[a!6220!6220U12(x_1)]] = x_1 [[a!6220!6220U21(x_1)]] = x_1 [[a!6220!6220U31(x_1, x_2)]] = x_1 [[a!6220!6220U32(x_1)]] = x_1 [[a!6220!6220U41#(x_1, x_2)]] = a!6220!6220U41#(x_2) [[a!6220!6220isNat(x_1)]] = a!6220!6220isNat [[isNat(x_1)]] = isNat [[mark(x_1)]] = x_1 We choose Lex = {} and Mul = {U41, U51, U52, U61, U71, U72, a!6220!6220U41, a!6220!6220U41#, a!6220!6220U51, a!6220!6220U51#, a!6220!6220U52, a!6220!6220U52#, a!6220!6220U61, a!6220!6220U71, a!6220!6220U71#, a!6220!6220U72, a!6220!6220U72#, a!6220!6220isNat, a!6220!6220plus, a!6220!6220plus#, a!6220!6220x, isNat, mark#, plus, s, tt, x}, and the following precedence: U71 = U72 = a!6220!6220U71 = a!6220!6220U72 = a!6220!6220x = x > U51 = U52 = a!6220!6220U51 = a!6220!6220U52 = a!6220!6220plus = plus > s > a!6220!6220U51# = a!6220!6220isNat = isNat = tt > a!6220!6220U52# > U41 = a!6220!6220U41 > U61 = a!6220!6220U61 > a!6220!6220U41# = a!6220!6220U71# = a!6220!6220U72# = a!6220!6220plus# = mark# Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220U41#(X) >= mark#(X) a!6220!6220U51#(tt, X, Y) > a!6220!6220U52#(a!6220!6220isNat, X, Y) a!6220!6220U52#(tt, X, Y) >= a!6220!6220plus#(Y, X) a!6220!6220U52#(tt, X, Y) >= mark#(Y) a!6220!6220U52#(tt, X, Y) >= mark#(X) a!6220!6220U71#(tt, X, Y) >= a!6220!6220U72#(a!6220!6220isNat, X, Y) a!6220!6220U72#(tt, X, Y) >= mark#(Y) a!6220!6220U72#(tt, X, Y) >= mark#(X) a!6220!6220U72#(tt, X, Y) >= mark#(Y) a!6220!6220plus#(X, _|_) >= a!6220!6220U41#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) mark#(plus(X, Y)) >= mark#(X) mark#(plus(X, Y)) >= mark#(Y) mark#(U61(X)) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) tt >= a!6220!6220isNat tt >= tt tt >= tt tt >= a!6220!6220isNat tt >= tt a!6220!6220U41(tt, X) >= X a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat, X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(Y, X)) a!6220!6220U61(tt) >= _|_ a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat, X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) a!6220!6220isNat >= tt a!6220!6220isNat >= a!6220!6220isNat a!6220!6220isNat >= a!6220!6220isNat a!6220!6220isNat >= a!6220!6220isNat a!6220!6220plus(X, _|_) >= a!6220!6220U41(a!6220!6220isNat, X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) a!6220!6220x(X, _|_) >= a!6220!6220U61(a!6220!6220isNat) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) X >= X X >= X isNat >= a!6220!6220isNat X >= X X >= X X >= X U41(X, Y) >= a!6220!6220U41(X, Y) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) plus(X, Y) >= a!6220!6220plus(X, Y) U61(X) >= a!6220!6220U61(X) U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) x(X, Y) >= a!6220!6220x(X, Y) tt >= tt s(X) >= s(X) _|_ >= _|_ X >= X X >= X a!6220!6220isNat >= isNat X >= X X >= X X >= X a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) With these choices, we have: 1] a!6220!6220U41#(X) >= mark#(X) because a!6220!6220U41# = mark#, a!6220!6220U41# in Mul and [2], by (Fun) 2] X >= X by (Meta) 3] a!6220!6220U51#(tt, X, Y) > a!6220!6220U52#(a!6220!6220isNat, X, Y) because [4], by definition 4] a!6220!6220U51#*(tt, X, Y) >= a!6220!6220U52#(a!6220!6220isNat, X, Y) because a!6220!6220U51# > a!6220!6220U52#, [5], [6] and [8], by (Copy) 5] a!6220!6220U51#*(tt, X, Y) >= a!6220!6220isNat because a!6220!6220U51# = a!6220!6220isNat and a!6220!6220U51# in Mul, by (Stat) 6] a!6220!6220U51#*(tt, X, Y) >= X because [7], by (Select) 7] X >= X by (Meta) 8] a!6220!6220U51#*(tt, X, Y) >= Y because [2], by (Select) 9] a!6220!6220U52#(tt, X, Y) >= a!6220!6220plus#(Y, X) because [10], by (Star) 10] a!6220!6220U52#*(tt, X, Y) >= a!6220!6220plus#(Y, X) because a!6220!6220U52# > a!6220!6220plus#, [11] and [12], by (Copy) 11] a!6220!6220U52#*(tt, X, Y) >= Y because [2], by (Select) 12] a!6220!6220U52#*(tt, X, Y) >= X because [7], by (Select) 13] a!6220!6220U52#(tt, X, Y) >= mark#(Y) because [14], by (Star) 14] a!6220!6220U52#*(tt, X, Y) >= mark#(Y) because a!6220!6220U52# > mark# and [11], by (Copy) 15] a!6220!6220U52#(tt, X, Y) >= mark#(X) because [16], by (Star) 16] a!6220!6220U52#*(tt, X, Y) >= mark#(X) because a!6220!6220U52# > mark# and [12], by (Copy) 17] a!6220!6220U71#(tt, X, Y) >= a!6220!6220U72#(a!6220!6220isNat, X, Y) because a!6220!6220U71# = a!6220!6220U72#, a!6220!6220U71# in Mul, [18], [19] and [2], by (Fun) 18] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 19] X >= X by (Meta) 20] a!6220!6220U72#(tt, X, Y) >= mark#(Y) because [21], by (Star) 21] a!6220!6220U72#*(tt, X, Y) >= mark#(Y) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [2], by (Stat) 22] a!6220!6220U72#(tt, X, Y) >= mark#(X) because [23], by (Star) 23] a!6220!6220U72#*(tt, X, Y) >= mark#(X) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [19], by (Stat) 24] a!6220!6220U72#(tt, X, Y) >= mark#(Y) because [21], by (Star) 25] a!6220!6220plus#(X, _|_) >= a!6220!6220U41#(X) because [26], by (Star) 26] a!6220!6220plus#*(X, _|_) >= a!6220!6220U41#(X) because a!6220!6220plus# = a!6220!6220U41#, a!6220!6220plus# in Mul and [2], by (Stat) 27] mark#(X) >= mark#(X) because mark# in Mul and [28], by (Fun) 28] X >= X by (Meta) 29] mark#(X) >= mark#(X) because mark# in Mul and [30], by (Fun) 30] X >= X by (Meta) 31] mark#(X) >= mark#(X) because mark# in Mul and [32], by (Fun) 32] X >= X by (Meta) 33] mark#(X) >= mark#(X) because mark# in Mul and [34], by (Fun) 34] X >= X by (Meta) 35] mark#(X) >= mark#(X) because mark# in Mul and [36], by (Fun) 36] X >= X by (Meta) 37] mark#(U41(X, Y)) >= a!6220!6220U41#(Y) because mark# = a!6220!6220U41#, mark# in Mul and [38], by (Fun) 38] U41(X, Y) >= Y because [39], by (Star) 39] U41*(X, Y) >= Y because [40], by (Select) 40] Y >= Y by (Meta) 41] mark#(U41(X, Y)) >= mark#(X) because mark# in Mul and [42], by (Fun) 42] U41(X, Y) >= X because [43], by (Star) 43] U41*(X, Y) >= X because [34], by (Select) 44] mark#(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) because [45], by (Star) 45] mark#*(U51(X, Y, Z)) >= a!6220!6220U51#(X, Y, Z) because [46], by (Select) 46] U51(X, Y, Z) >= a!6220!6220U51#(X, Y, Z) because [47], by (Star) 47] U51*(X, Y, Z) >= a!6220!6220U51#(X, Y, Z) because U51 > a!6220!6220U51#, [48], [49] and [50], by (Copy) 48] U51*(X, Y, Z) >= X because [34], by (Select) 49] U51*(X, Y, Z) >= Y because [40], by (Select) 50] U51*(X, Y, Z) >= Z because [51], by (Select) 51] Z >= Z by (Meta) 52] mark#(U51(X, Y, Z)) >= mark#(X) because mark# in Mul and [53], by (Fun) 53] U51(X, Y, Z) >= X because [48], by (Star) 54] mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [55], by (Star) 55] mark#*(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [56], by (Select) 56] U52(X, Y, Z) >= a!6220!6220U52#(X, Y, Z) because [57], by (Star) 57] U52*(X, Y, Z) >= a!6220!6220U52#(X, Y, Z) because U52 > a!6220!6220U52#, [58], [59] and [60], by (Copy) 58] U52*(X, Y, Z) >= X because [34], by (Select) 59] U52*(X, Y, Z) >= Y because [40], by (Select) 60] U52*(X, Y, Z) >= Z because [51], by (Select) 61] mark#(U52(X, Y, Z)) >= mark#(X) because mark# in Mul and [62], by (Fun) 62] U52(X, Y, Z) >= X because [58], by (Star) 63] mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) because [64], by (Star) 64] mark#*(plus(X, Y)) >= a!6220!6220plus#(X, Y) because mark# = a!6220!6220plus#, mark# in Mul, [65] and [67], by (Stat) 65] plus(X, Y) > X because [66], by definition 66] plus*(X, Y) >= X because [34], by (Select) 67] plus(X, Y) > Y because [68], by definition 68] plus*(X, Y) >= Y because [40], by (Select) 69] mark#(plus(X, Y)) >= mark#(X) because mark# in Mul and [70], by (Fun) 70] plus(X, Y) >= X because [66], by (Star) 71] mark#(plus(X, Y)) >= mark#(Y) because mark# in Mul and [72], by (Fun) 72] plus(X, Y) >= Y because [68], by (Star) 73] mark#(U61(X)) >= mark#(X) because mark# in Mul and [74], by (Fun) 74] U61(X) >= X because [75], by (Star) 75] U61*(X) >= X because [36], by (Select) 76] mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [77], by (Star) 77] mark#*(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because mark# = a!6220!6220U71#, mark# in Mul, [78], [80] and [82], by (Stat) 78] U71(X, Y, Z) > X because [79], by definition 79] U71*(X, Y, Z) >= X because [34], by (Select) 80] U71(X, Y, Z) > Y because [81], by definition 81] U71*(X, Y, Z) >= Y because [40], by (Select) 82] U71(X, Y, Z) > Z because [83], by definition 83] U71*(X, Y, Z) >= Z because [51], by (Select) 84] mark#(U71(X, Y, Z)) >= mark#(X) because mark# in Mul and [85], by (Fun) 85] U71(X, Y, Z) >= X because [79], by (Star) 86] mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [87], by (Star) 87] mark#*(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because mark# = a!6220!6220U72#, mark# in Mul, [88], [90] and [92], by (Stat) 88] U72(X, Y, Z) > X because [89], by definition 89] U72*(X, Y, Z) >= X because [34], by (Select) 90] U72(X, Y, Z) > Y because [91], by definition 91] U72*(X, Y, Z) >= Y because [40], by (Select) 92] U72(X, Y, Z) > Z because [93], by definition 93] U72*(X, Y, Z) >= Z because [51], by (Select) 94] mark#(U72(X, Y, Z)) >= mark#(X) because mark# in Mul and [95], by (Fun) 95] U72(X, Y, Z) >= X because [89], by (Star) 96] mark#(x(X, Y)) >= mark#(X) because mark# in Mul and [97], by (Fun) 97] x(X, Y) >= X because [98], by (Star) 98] x*(X, Y) >= X because [34], by (Select) 99] mark#(x(X, Y)) >= mark#(Y) because mark# in Mul and [100], by (Fun) 100] x(X, Y) >= Y because [101], by (Star) 101] x*(X, Y) >= Y because [40], by (Select) 102] mark#(s(X)) >= mark#(X) because mark# in Mul and [103], by (Fun) 103] s(X) >= X because [104], by (Star) 104] s*(X) >= X because [36], by (Select) 105] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 106] tt >= tt by (Fun) 107] tt >= tt by (Fun) 108] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 109] tt >= tt by (Fun) 110] a!6220!6220U41(tt, X) >= X because [111], by (Star) 111] a!6220!6220U41*(tt, X) >= X because [2], by (Select) 112] a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat, X, Y) because a!6220!6220U51 = a!6220!6220U52, a!6220!6220U51 in Mul, [18], [19] and [2], by (Fun) 113] a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(Y, X)) because [114], by (Star) 114] a!6220!6220U52*(tt, X, Y) >= s(a!6220!6220plus(Y, X)) because a!6220!6220U52 > s and [115], by (Copy) 115] a!6220!6220U52*(tt, X, Y) >= a!6220!6220plus(Y, X) because a!6220!6220U52 = a!6220!6220plus, a!6220!6220U52 in Mul, [116] and [117], by (Stat) 116] X >= X by (Meta) 117] Y >= Y by (Meta) 118] a!6220!6220U61(tt) >= _|_ by (Bot) 119] a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat, X, Y) because a!6220!6220U71 = a!6220!6220U72, a!6220!6220U71 in Mul, [18], [116] and [117], by (Fun) 120] a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because [121], by (Star) 121] a!6220!6220U72*(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because a!6220!6220U72 > a!6220!6220plus, [122] and [123], by (Copy) 122] a!6220!6220U72*(tt, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72 = a!6220!6220x, a!6220!6220U72 in Mul, [116] and [117], by (Stat) 123] a!6220!6220U72*(tt, X, Y) >= Y because [117], by (Select) 124] a!6220!6220isNat >= tt because a!6220!6220isNat = tt, by (Fun) 125] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 126] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 127] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 128] a!6220!6220plus(X, _|_) >= a!6220!6220U41(a!6220!6220isNat, X) because [129], by (Star) 129] a!6220!6220plus*(X, _|_) >= a!6220!6220U41(a!6220!6220isNat, X) because a!6220!6220plus > a!6220!6220U41, [130] and [131], by (Copy) 130] a!6220!6220plus*(X, _|_) >= a!6220!6220isNat because a!6220!6220plus > a!6220!6220isNat, by (Copy) 131] a!6220!6220plus*(X, _|_) >= X because [117], by (Select) 132] a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) because [133], by (Star) 133] a!6220!6220plus*(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) because a!6220!6220plus = a!6220!6220U51, a!6220!6220plus in Mul, [117], [134] and [136], by (Stat) 134] s(Y) > a!6220!6220isNat because [135], by definition 135] s*(Y) >= a!6220!6220isNat because s > a!6220!6220isNat, by (Copy) 136] s(Y) > Y because [137], by definition 137] s*(Y) >= Y because [116], by (Select) 138] a!6220!6220x(X, _|_) >= a!6220!6220U61(a!6220!6220isNat) because [139], by (Star) 139] a!6220!6220x*(X, _|_) >= a!6220!6220U61(a!6220!6220isNat) because a!6220!6220x > a!6220!6220U61 and [140], by (Copy) 140] a!6220!6220x*(X, _|_) >= a!6220!6220isNat because a!6220!6220x > a!6220!6220isNat, by (Copy) 141] a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) because [142], by (Star) 142] a!6220!6220x*(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) because a!6220!6220x = a!6220!6220U71, a!6220!6220x in Mul, [117], [134] and [136], by (Stat) 143] X >= X by (Meta) 144] X >= X by (Meta) 145] isNat >= a!6220!6220isNat because isNat = a!6220!6220isNat and isNat in Mul, by (Fun) 146] X >= X by (Meta) 147] X >= X by (Meta) 148] X >= X by (Meta) 149] U41(X, Y) >= a!6220!6220U41(X, Y) because U41 = a!6220!6220U41, U41 in Mul, [150] and [151], by (Fun) 150] X >= X by (Meta) 151] Y >= Y by (Meta) 152] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [150], [151] and [153], by (Fun) 153] Z >= Z by (Meta) 154] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [150], [151] and [153], by (Fun) 155] plus(X, Y) >= a!6220!6220plus(X, Y) because plus = a!6220!6220plus, plus in Mul, [150] and [156], by (Fun) 156] Y >= Y by (Meta) 157] U61(X) >= a!6220!6220U61(X) because U61 = a!6220!6220U61, U61 in Mul and [158], by (Fun) 158] X >= X by (Meta) 159] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [150], [156] and [153], by (Fun) 160] U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) because U72 = a!6220!6220U72, U72 in Mul, [150], [156] and [153], by (Fun) 161] x(X, Y) >= a!6220!6220x(X, Y) because x = a!6220!6220x, x in Mul, [150] and [156], by (Fun) 162] tt >= tt by (Fun) 163] s(X) >= s(X) because s in Mul and [158], by (Fun) 164] _|_ >= _|_ by (Bot) 165] X >= X by (Meta) 166] X >= X by (Meta) 167] a!6220!6220isNat >= isNat because a!6220!6220isNat = isNat and a!6220!6220isNat in Mul, by (Fun) 168] X >= X by (Meta) 169] X >= X by (Meta) 170] X >= X by (Meta) 171] a!6220!6220U41(X, Y) >= U41(X, Y) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [150] and [156], by (Fun) 172] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [150], [156] and [153], by (Fun) 173] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [150], [156] and [153], by (Fun) 174] a!6220!6220plus(X, Y) >= plus(X, Y) because a!6220!6220plus = plus, a!6220!6220plus in Mul, [150] and [156], by (Fun) 175] a!6220!6220U61(X) >= U61(X) because a!6220!6220U61 = U61, a!6220!6220U61 in Mul and [158], by (Fun) 176] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [150], [156] and [153], by (Fun) 177] a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [150], [156] and [153], by (Fun) 178] a!6220!6220x(X, Y) >= x(X, Y) because a!6220!6220x = x, a!6220!6220x in Mul, [150] and [156], by (Fun) By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_7, R_0, minimal, formative) by (P_8, R_0, minimal, formative), where P_8 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> a!6220!6220U51#(mark(X), Y, Z) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 1 : 8 * 2 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 3 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 4 : 5, 6, 7 * 5 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 6 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 7 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 8 : 0 * 9 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 10 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 11 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 12 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 13 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 14 : 0 * 15 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 16 : * 17 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 18 : 1, 2, 3 * 19 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 20 : 8 * 21 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 22 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 23 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 24 : 4 * 25 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 26 : 5, 6, 7 * 27 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 28 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 29 : 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 * 30 : 9, 10, 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_9: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(Y) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_8, R_0, m, f) by (P_9, R_0, m, f). Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U52#(tt, X, Y) >? a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220plus#(X, 0) >? a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) >? mark#(X) mark#(plus(X, Y)) >? mark#(Y) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) Since this representation is not advantageous for the higher-order recursive path ordering, we present the strict requirements in their unextended form, which is not problematic since for any F, s and substituion gamma: (F s)gamma beta-reduces to F(s)gamma.) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[0]] = _|_ [[U11(x_1, x_2)]] = x_1 [[U12(x_1)]] = x_1 [[U21(x_1)]] = x_1 [[U31(x_1, x_2)]] = x_1 [[U32(x_1)]] = x_1 [[U61(x_1)]] = x_1 [[a!6220!6220U11(x_1, x_2)]] = x_1 [[a!6220!6220U12(x_1)]] = x_1 [[a!6220!6220U21(x_1)]] = x_1 [[a!6220!6220U31(x_1, x_2)]] = x_1 [[a!6220!6220U32(x_1)]] = x_1 [[a!6220!6220U41#(x_1, x_2)]] = a!6220!6220U41#(x_2) [[a!6220!6220U61(x_1)]] = x_1 [[a!6220!6220isNat(x_1)]] = _|_ [[a!6220!6220plus#(x_1, x_2)]] = a!6220!6220plus#(x_1) [[isNat(x_1)]] = _|_ [[mark(x_1)]] = x_1 [[tt]] = _|_ We choose Lex = {} and Mul = {U41, U51, U52, U71, U72, a!6220!6220U41, a!6220!6220U41#, a!6220!6220U51, a!6220!6220U52, a!6220!6220U52#, a!6220!6220U71, a!6220!6220U71#, a!6220!6220U72, a!6220!6220U72#, a!6220!6220plus, a!6220!6220plus#, a!6220!6220x, mark#, plus, s, x}, and the following precedence: U71 = U72 = a!6220!6220U71 = a!6220!6220U72 = a!6220!6220x = x > a!6220!6220U71# > a!6220!6220U41# = a!6220!6220U52# = a!6220!6220U72# = a!6220!6220plus# = mark# > U41 = U51 = U52 = a!6220!6220U41 = a!6220!6220U51 = a!6220!6220U52 = a!6220!6220plus = plus > s Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220U41#(X) >= mark#(X) a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y) a!6220!6220U52#(_|_, X, Y) >= mark#(Y) a!6220!6220U52#(_|_, X, Y) >= mark#(X) a!6220!6220U71#(_|_, X, Y) >= a!6220!6220U72#(_|_, X, Y) a!6220!6220U72#(_|_, X, Y) >= mark#(Y) a!6220!6220U72#(_|_, X, Y) >= mark#(X) a!6220!6220U72#(_|_, X, Y) >= mark#(Y) a!6220!6220plus#(X) >= a!6220!6220U41#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= a!6220!6220plus#(X) mark#(plus(X, Y)) >= mark#(X) mark#(plus(X, Y)) > mark#(Y) mark#(X) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220U41(_|_, X) >= X a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) _|_ >= _|_ a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220plus(X, _|_) >= a!6220!6220U41(_|_, X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) a!6220!6220x(X, _|_) >= _|_ a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X U41(X, Y) >= a!6220!6220U41(X, Y) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) plus(X, Y) >= a!6220!6220plus(X, Y) X >= X U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) x(X, Y) >= a!6220!6220x(X, Y) _|_ >= _|_ s(X) >= s(X) _|_ >= _|_ X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) X >= X a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) With these choices, we have: 1] a!6220!6220U41#(X) >= mark#(X) because a!6220!6220U41# = mark#, a!6220!6220U41# in Mul and [2], by (Fun) 2] X >= X by (Meta) 3] a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y) because [4], by (Star) 4] a!6220!6220U52#*(_|_, X, Y) >= a!6220!6220plus#(Y) because a!6220!6220U52# = a!6220!6220plus#, a!6220!6220U52# in Mul and [5], by (Stat) 5] Y >= Y by (Meta) 6] a!6220!6220U52#(_|_, X, Y) >= mark#(Y) because [7], by (Star) 7] a!6220!6220U52#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [5], by (Stat) 8] a!6220!6220U52#(_|_, X, Y) >= mark#(X) because [9], by (Star) 9] a!6220!6220U52#*(_|_, X, Y) >= mark#(X) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [10], by (Stat) 10] X >= X by (Meta) 11] a!6220!6220U71#(_|_, X, Y) >= a!6220!6220U72#(_|_, X, Y) because [12], by (Star) 12] a!6220!6220U71#*(_|_, X, Y) >= a!6220!6220U72#(_|_, X, Y) because a!6220!6220U71# > a!6220!6220U72#, [13], [14] and [15], by (Copy) 13] a!6220!6220U71#*(_|_, X, Y) >= _|_ by (Bot) 14] a!6220!6220U71#*(_|_, X, Y) >= X because [10], by (Select) 15] a!6220!6220U71#*(_|_, X, Y) >= Y because [5], by (Select) 16] a!6220!6220U72#(_|_, X, Y) >= mark#(Y) because [17], by (Star) 17] a!6220!6220U72#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [5], by (Stat) 18] a!6220!6220U72#(_|_, X, Y) >= mark#(X) because [19], by (Star) 19] a!6220!6220U72#*(_|_, X, Y) >= mark#(X) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [10], by (Stat) 20] a!6220!6220U72#(_|_, X, Y) >= mark#(Y) because [17], by (Star) 21] a!6220!6220plus#(X) >= a!6220!6220U41#(X) because a!6220!6220plus# = a!6220!6220U41#, a!6220!6220plus# in Mul and [5], by (Fun) 22] mark#(X) >= mark#(X) because mark# in Mul and [23], by (Fun) 23] X >= X by (Meta) 24] mark#(X) >= mark#(X) because mark# in Mul and [25], by (Fun) 25] X >= X by (Meta) 26] mark#(X) >= mark#(X) because mark# in Mul and [27], by (Fun) 27] X >= X by (Meta) 28] mark#(X) >= mark#(X) because mark# in Mul and [29], by (Fun) 29] X >= X by (Meta) 30] mark#(X) >= mark#(X) because mark# in Mul and [31], by (Fun) 31] X >= X by (Meta) 32] mark#(U41(X, Y)) >= a!6220!6220U41#(Y) because mark# = a!6220!6220U41#, mark# in Mul and [33], by (Fun) 33] U41(X, Y) >= Y because [34], by (Star) 34] U41*(X, Y) >= Y because [35], by (Select) 35] Y >= Y by (Meta) 36] mark#(U41(X, Y)) >= mark#(X) because mark# in Mul and [37], by (Fun) 37] U41(X, Y) >= X because [38], by (Star) 38] U41*(X, Y) >= X because [29], by (Select) 39] mark#(U51(X, Y, Z)) >= mark#(X) because mark# in Mul and [40], by (Fun) 40] U51(X, Y, Z) >= X because [41], by (Star) 41] U51*(X, Y, Z) >= X because [29], by (Select) 42] mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [43], by (Star) 43] mark#*(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because mark# = a!6220!6220U52#, mark# in Mul, [44], [46] and [48], by (Stat) 44] U52(X, Y, Z) > X because [45], by definition 45] U52*(X, Y, Z) >= X because [29], by (Select) 46] U52(X, Y, Z) > Y because [47], by definition 47] U52*(X, Y, Z) >= Y because [35], by (Select) 48] U52(X, Y, Z) > Z because [49], by definition 49] U52*(X, Y, Z) >= Z because [50], by (Select) 50] Z >= Z by (Meta) 51] mark#(U52(X, Y, Z)) >= mark#(X) because [52], by (Star) 52] mark#*(U52(X, Y, Z)) >= mark#(X) because mark# in Mul and [53], by (Stat) 53] U52(X, Y, Z) > X because [45], by definition 54] mark#(plus(X, Y)) >= a!6220!6220plus#(X) because mark# = a!6220!6220plus#, mark# in Mul and [55], by (Fun) 55] plus(X, Y) >= X because [56], by (Star) 56] plus*(X, Y) >= X because [29], by (Select) 57] mark#(plus(X, Y)) >= mark#(X) because mark# in Mul and [55], by (Fun) 58] mark#(plus(X, Y)) > mark#(Y) because [59], by definition 59] mark#*(plus(X, Y)) >= mark#(Y) because mark# in Mul and [60], by (Stat) 60] plus(X, Y) > Y because [61], by definition 61] plus*(X, Y) >= Y because [35], by (Select) 62] mark#(X) >= mark#(X) because mark# in Mul and [63], by (Fun) 63] X >= X by (Meta) 64] mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [65], by (Star) 65] mark#*(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [66], by (Select) 66] U71(X, Y, Z) >= a!6220!6220U71#(X, Y, Z) because [67], by (Star) 67] U71*(X, Y, Z) >= a!6220!6220U71#(X, Y, Z) because U71 > a!6220!6220U71#, [68], [69] and [70], by (Copy) 68] U71*(X, Y, Z) >= X because [29], by (Select) 69] U71*(X, Y, Z) >= Y because [35], by (Select) 70] U71*(X, Y, Z) >= Z because [50], by (Select) 71] mark#(U71(X, Y, Z)) >= mark#(X) because [72], by (Star) 72] mark#*(U71(X, Y, Z)) >= mark#(X) because mark# in Mul and [73], by (Stat) 73] U71(X, Y, Z) > X because [68], by definition 74] mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [75], by (Star) 75] mark#*(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because mark# = a!6220!6220U72#, mark# in Mul, [76], [78] and [80], by (Stat) 76] U72(X, Y, Z) > X because [77], by definition 77] U72*(X, Y, Z) >= X because [29], by (Select) 78] U72(X, Y, Z) > Y because [79], by definition 79] U72*(X, Y, Z) >= Y because [35], by (Select) 80] U72(X, Y, Z) > Z because [81], by definition 81] U72*(X, Y, Z) >= Z because [50], by (Select) 82] mark#(U72(X, Y, Z)) >= mark#(X) because mark# in Mul and [83], by (Fun) 83] U72(X, Y, Z) >= X because [77], by (Star) 84] mark#(x(X, Y)) >= mark#(X) because mark# in Mul and [85], by (Fun) 85] x(X, Y) >= X because [86], by (Star) 86] x*(X, Y) >= X because [29], by (Select) 87] mark#(x(X, Y)) >= mark#(Y) because [88], by (Star) 88] mark#*(x(X, Y)) >= mark#(Y) because mark# in Mul and [89], by (Stat) 89] x(X, Y) > Y because [90], by definition 90] x*(X, Y) >= Y because [35], by (Select) 91] mark#(s(X)) >= mark#(X) because mark# in Mul and [92], by (Fun) 92] s(X) >= X because [93], by (Star) 93] s*(X) >= X because [63], by (Select) 94] _|_ >= _|_ by (Bot) 95] _|_ >= _|_ by (Bot) 96] _|_ >= _|_ by (Bot) 97] _|_ >= _|_ by (Bot) 98] _|_ >= _|_ by (Bot) 99] a!6220!6220U41(_|_, X) >= X because [100], by (Star) 100] a!6220!6220U41*(_|_, X) >= X because [5], by (Select) 101] a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) because a!6220!6220U51 = a!6220!6220U52, a!6220!6220U51 in Mul, [102], [10] and [5], by (Fun) 102] _|_ >= _|_ by (Bot) 103] a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because [104], by (Star) 104] a!6220!6220U52*(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because a!6220!6220U52 > s and [105], by (Copy) 105] a!6220!6220U52*(_|_, X, Y) >= a!6220!6220plus(Y, X) because a!6220!6220U52 = a!6220!6220plus, a!6220!6220U52 in Mul, [106] and [5], by (Stat) 106] X >= X by (Meta) 107] _|_ >= _|_ by (Bot) 108] a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) because a!6220!6220U71 = a!6220!6220U72, a!6220!6220U71 in Mul, [102], [106] and [5], by (Fun) 109] a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because [110], by (Star) 110] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because a!6220!6220U72 > a!6220!6220plus, [111] and [112], by (Copy) 111] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72 = a!6220!6220x, a!6220!6220U72 in Mul, [106] and [5], by (Stat) 112] a!6220!6220U72*(_|_, X, Y) >= Y because [5], by (Select) 113] _|_ >= _|_ by (Bot) 114] _|_ >= _|_ by (Bot) 115] _|_ >= _|_ by (Bot) 116] _|_ >= _|_ by (Bot) 117] a!6220!6220plus(X, _|_) >= a!6220!6220U41(_|_, X) because a!6220!6220plus = a!6220!6220U41, a!6220!6220plus in Mul, [5] and [118], by (Fun) 118] _|_ >= _|_ by (Bot) 119] a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because [120], by (Star) 120] a!6220!6220plus*(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because a!6220!6220plus = a!6220!6220U51, a!6220!6220plus in Mul, [5], [121] and [123], by (Stat) 121] s(Y) > _|_ because [122], by definition 122] s*(Y) >= _|_ by (Bot) 123] s(Y) > Y because [124], by definition 124] s*(Y) >= Y because [106], by (Select) 125] a!6220!6220x(X, _|_) >= _|_ by (Bot) 126] a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because [127], by (Star) 127] a!6220!6220x*(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because a!6220!6220x = a!6220!6220U71, a!6220!6220x in Mul, [5], [121] and [123], by (Stat) 128] X >= X by (Meta) 129] X >= X by (Meta) 130] _|_ >= _|_ by (Bot) 131] X >= X by (Meta) 132] X >= X by (Meta) 133] X >= X by (Meta) 134] U41(X, Y) >= a!6220!6220U41(X, Y) because U41 = a!6220!6220U41, U41 in Mul, [135] and [136], by (Fun) 135] X >= X by (Meta) 136] Y >= Y by (Meta) 137] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [135], [136] and [138], by (Fun) 138] Z >= Z by (Meta) 139] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [135], [136] and [138], by (Fun) 140] plus(X, Y) >= a!6220!6220plus(X, Y) because plus = a!6220!6220plus, plus in Mul, [135] and [141], by (Fun) 141] Y >= Y by (Meta) 142] X >= X by (Meta) 143] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [135], [141] and [138], by (Fun) 144] U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) because U72 = a!6220!6220U72, U72 in Mul, [135], [141] and [138], by (Fun) 145] x(X, Y) >= a!6220!6220x(X, Y) because x = a!6220!6220x, x in Mul, [135] and [141], by (Fun) 146] _|_ >= _|_ by (Bot) 147] s(X) >= s(X) because s in Mul and [148], by (Fun) 148] X >= X by (Meta) 149] _|_ >= _|_ by (Bot) 150] X >= X by (Meta) 151] X >= X by (Meta) 152] _|_ >= _|_ by (Bot) 153] X >= X by (Meta) 154] X >= X by (Meta) 155] X >= X by (Meta) 156] a!6220!6220U41(X, Y) >= U41(X, Y) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [135] and [141], by (Fun) 157] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [135], [141] and [138], by (Fun) 158] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [135], [141] and [138], by (Fun) 159] a!6220!6220plus(X, Y) >= plus(X, Y) because a!6220!6220plus = plus, a!6220!6220plus in Mul, [135] and [141], by (Fun) 160] X >= X by (Meta) 161] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [135], [141] and [138], by (Fun) 162] a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [135], [141] and [138], by (Fun) 163] a!6220!6220x(X, Y) >= x(X, Y) because a!6220!6220x = x, a!6220!6220x in Mul, [135] and [141], by (Fun) By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_9, R_0, minimal, formative) by (P_10, R_0, minimal, formative), where P_10 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U52#(tt, X, Y) >? a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220plus#(X, 0) >? a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) >? mark#(X) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) Since this representation is not advantageous for the higher-order recursive path ordering, we present the strict requirements in their unextended form, which is not problematic since for any F, s and substituion gamma: (F s)gamma beta-reduces to F(s)gamma.) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[0]] = _|_ [[U11(x_1, x_2)]] = x_1 [[U12(x_1)]] = x_1 [[U21(x_1)]] = x_1 [[U31(x_1, x_2)]] = x_1 [[U32(x_1)]] = x_1 [[U61(x_1)]] = x_1 [[a!6220!6220U11(x_1, x_2)]] = x_1 [[a!6220!6220U12(x_1)]] = x_1 [[a!6220!6220U21(x_1)]] = x_1 [[a!6220!6220U31(x_1, x_2)]] = x_1 [[a!6220!6220U32(x_1)]] = x_1 [[a!6220!6220U41#(x_1, x_2)]] = a!6220!6220U41#(x_2) [[a!6220!6220U61(x_1)]] = x_1 [[a!6220!6220U71#(x_1, x_2, x_3)]] = a!6220!6220U71#(x_2, x_3) [[a!6220!6220isNat(x_1)]] = _|_ [[isNat(x_1)]] = _|_ [[mark(x_1)]] = x_1 [[tt]] = _|_ We choose Lex = {} and Mul = {U41, U51, U52, U71, U72, a!6220!6220U41, a!6220!6220U41#, a!6220!6220U51, a!6220!6220U52, a!6220!6220U52#, a!6220!6220U71, a!6220!6220U71#, a!6220!6220U72, a!6220!6220U72#, a!6220!6220plus, a!6220!6220plus#, a!6220!6220x, mark#, plus, s, x}, and the following precedence: U71 = U72 = a!6220!6220U71 = a!6220!6220U72 = a!6220!6220x = x > a!6220!6220U71# > a!6220!6220U41# = a!6220!6220U52# = a!6220!6220U72# = a!6220!6220plus# = mark# > U51 = U52 = a!6220!6220U51 = a!6220!6220U52 = a!6220!6220plus = plus > s > U41 = a!6220!6220U41 Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220U41#(X) >= mark#(X) a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y, X) a!6220!6220U52#(_|_, X, Y) >= mark#(Y) a!6220!6220U52#(_|_, X, Y) >= mark#(X) a!6220!6220U71#(X, Y) >= a!6220!6220U72#(_|_, X, Y) a!6220!6220U72#(_|_, X, Y) >= mark#(Y) a!6220!6220U72#(_|_, X, Y) >= mark#(X) a!6220!6220U72#(_|_, X, Y) > mark#(Y) a!6220!6220plus#(X, _|_) >= a!6220!6220U41#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) mark#(plus(X, Y)) >= mark#(X) mark#(X) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220U41(_|_, X) >= X a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) _|_ >= _|_ a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220plus(X, _|_) >= a!6220!6220U41(_|_, X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) a!6220!6220x(X, _|_) >= _|_ a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X U41(X, Y) >= a!6220!6220U41(X, Y) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) plus(X, Y) >= a!6220!6220plus(X, Y) X >= X U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) x(X, Y) >= a!6220!6220x(X, Y) _|_ >= _|_ s(X) >= s(X) _|_ >= _|_ X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) X >= X a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) With these choices, we have: 1] a!6220!6220U41#(X) >= mark#(X) because a!6220!6220U41# = mark#, a!6220!6220U41# in Mul and [2], by (Fun) 2] X >= X by (Meta) 3] a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y, X) because [4], by (Star) 4] a!6220!6220U52#*(_|_, X, Y) >= a!6220!6220plus#(Y, X) because a!6220!6220U52# = a!6220!6220plus#, a!6220!6220U52# in Mul, [5] and [6], by (Stat) 5] X >= X by (Meta) 6] Y >= Y by (Meta) 7] a!6220!6220U52#(_|_, X, Y) >= mark#(Y) because [8], by (Star) 8] a!6220!6220U52#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [6], by (Stat) 9] a!6220!6220U52#(_|_, X, Y) >= mark#(X) because [10], by (Star) 10] a!6220!6220U52#*(_|_, X, Y) >= mark#(X) because a!6220!6220U52# = mark#, a!6220!6220U52# in Mul and [5], by (Stat) 11] a!6220!6220U71#(X, Y) >= a!6220!6220U72#(_|_, X, Y) because [12], by (Star) 12] a!6220!6220U71#*(X, Y) >= a!6220!6220U72#(_|_, X, Y) because a!6220!6220U71# > a!6220!6220U72#, [13], [14] and [15], by (Copy) 13] a!6220!6220U71#*(X, Y) >= _|_ by (Bot) 14] a!6220!6220U71#*(X, Y) >= X because [5], by (Select) 15] a!6220!6220U71#*(X, Y) >= Y because [6], by (Select) 16] a!6220!6220U72#(_|_, X, Y) >= mark#(Y) because [17], by (Star) 17] a!6220!6220U72#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [6], by (Stat) 18] a!6220!6220U72#(_|_, X, Y) >= mark#(X) because [19], by (Star) 19] a!6220!6220U72#*(_|_, X, Y) >= mark#(X) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [5], by (Stat) 20] a!6220!6220U72#(_|_, X, Y) > mark#(Y) because [21], by definition 21] a!6220!6220U72#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [6], by (Stat) 22] a!6220!6220plus#(X, _|_) >= a!6220!6220U41#(X) because [23], by (Star) 23] a!6220!6220plus#*(X, _|_) >= a!6220!6220U41#(X) because a!6220!6220plus# = a!6220!6220U41#, a!6220!6220plus# in Mul and [6], by (Stat) 24] mark#(X) >= mark#(X) because mark# in Mul and [25], by (Fun) 25] X >= X by (Meta) 26] mark#(X) >= mark#(X) because mark# in Mul and [27], by (Fun) 27] X >= X by (Meta) 28] mark#(X) >= mark#(X) because mark# in Mul and [29], by (Fun) 29] X >= X by (Meta) 30] mark#(X) >= mark#(X) because mark# in Mul and [31], by (Fun) 31] X >= X by (Meta) 32] mark#(X) >= mark#(X) because mark# in Mul and [33], by (Fun) 33] X >= X by (Meta) 34] mark#(U41(X, Y)) >= a!6220!6220U41#(Y) because mark# = a!6220!6220U41#, mark# in Mul and [35], by (Fun) 35] U41(X, Y) >= Y because [36], by (Star) 36] U41*(X, Y) >= Y because [37], by (Select) 37] Y >= Y by (Meta) 38] mark#(U41(X, Y)) >= mark#(X) because mark# in Mul and [39], by (Fun) 39] U41(X, Y) >= X because [40], by (Star) 40] U41*(X, Y) >= X because [31], by (Select) 41] mark#(U51(X, Y, Z)) >= mark#(X) because mark# in Mul and [42], by (Fun) 42] U51(X, Y, Z) >= X because [43], by (Star) 43] U51*(X, Y, Z) >= X because [31], by (Select) 44] mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [45], by (Star) 45] mark#*(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because mark# = a!6220!6220U52#, mark# in Mul, [46], [48] and [50], by (Stat) 46] U52(X, Y, Z) > X because [47], by definition 47] U52*(X, Y, Z) >= X because [31], by (Select) 48] U52(X, Y, Z) > Y because [49], by definition 49] U52*(X, Y, Z) >= Y because [37], by (Select) 50] U52(X, Y, Z) > Z because [51], by definition 51] U52*(X, Y, Z) >= Z because [52], by (Select) 52] Z >= Z by (Meta) 53] mark#(U52(X, Y, Z)) >= mark#(X) because [54], by (Star) 54] mark#*(U52(X, Y, Z)) >= mark#(X) because mark# in Mul and [55], by (Stat) 55] U52(X, Y, Z) > X because [47], by definition 56] mark#(plus(X, Y)) >= a!6220!6220plus#(X, Y) because [57], by (Star) 57] mark#*(plus(X, Y)) >= a!6220!6220plus#(X, Y) because mark# = a!6220!6220plus#, mark# in Mul, [58] and [60], by (Stat) 58] plus(X, Y) > X because [59], by definition 59] plus*(X, Y) >= X because [31], by (Select) 60] plus(X, Y) > Y because [61], by definition 61] plus*(X, Y) >= Y because [37], by (Select) 62] mark#(plus(X, Y)) >= mark#(X) because mark# in Mul and [63], by (Fun) 63] plus(X, Y) >= X because [59], by (Star) 64] mark#(X) >= mark#(X) because mark# in Mul and [65], by (Fun) 65] X >= X by (Meta) 66] mark#(U71(X, Y, Z)) >= a!6220!6220U71#(Y, Z) because [67], by (Star) 67] mark#*(U71(X, Y, Z)) >= a!6220!6220U71#(Y, Z) because [68], by (Select) 68] U71(X, Y, Z) >= a!6220!6220U71#(Y, Z) because [69], by (Star) 69] U71*(X, Y, Z) >= a!6220!6220U71#(Y, Z) because U71 > a!6220!6220U71#, [70] and [71], by (Copy) 70] U71*(X, Y, Z) >= Y because [37], by (Select) 71] U71*(X, Y, Z) >= Z because [52], by (Select) 72] mark#(U71(X, Y, Z)) >= mark#(X) because mark# in Mul and [73], by (Fun) 73] U71(X, Y, Z) >= X because [74], by (Star) 74] U71*(X, Y, Z) >= X because [31], by (Select) 75] mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [76], by (Star) 76] mark#*(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because mark# = a!6220!6220U72#, mark# in Mul, [77], [79] and [81], by (Stat) 77] U72(X, Y, Z) > X because [78], by definition 78] U72*(X, Y, Z) >= X because [31], by (Select) 79] U72(X, Y, Z) > Y because [80], by definition 80] U72*(X, Y, Z) >= Y because [37], by (Select) 81] U72(X, Y, Z) > Z because [82], by definition 82] U72*(X, Y, Z) >= Z because [52], by (Select) 83] mark#(U72(X, Y, Z)) >= mark#(X) because [84], by (Star) 84] mark#*(U72(X, Y, Z)) >= mark#(X) because mark# in Mul and [85], by (Stat) 85] U72(X, Y, Z) > X because [78], by definition 86] mark#(x(X, Y)) >= mark#(X) because mark# in Mul and [87], by (Fun) 87] x(X, Y) >= X because [88], by (Star) 88] x*(X, Y) >= X because [31], by (Select) 89] mark#(x(X, Y)) >= mark#(Y) because mark# in Mul and [90], by (Fun) 90] x(X, Y) >= Y because [91], by (Star) 91] x*(X, Y) >= Y because [37], by (Select) 92] mark#(s(X)) >= mark#(X) because mark# in Mul and [93], by (Fun) 93] s(X) >= X because [94], by (Star) 94] s*(X) >= X because [65], by (Select) 95] _|_ >= _|_ by (Bot) 96] _|_ >= _|_ by (Bot) 97] _|_ >= _|_ by (Bot) 98] _|_ >= _|_ by (Bot) 99] _|_ >= _|_ by (Bot) 100] a!6220!6220U41(_|_, X) >= X because [101], by (Star) 101] a!6220!6220U41*(_|_, X) >= X because [6], by (Select) 102] a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) because a!6220!6220U51 = a!6220!6220U52, a!6220!6220U51 in Mul, [103], [5] and [6], by (Fun) 103] _|_ >= _|_ by (Bot) 104] a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because [105], by (Star) 105] a!6220!6220U52*(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because a!6220!6220U52 > s and [106], by (Copy) 106] a!6220!6220U52*(_|_, X, Y) >= a!6220!6220plus(Y, X) because a!6220!6220U52 = a!6220!6220plus, a!6220!6220U52 in Mul, [5] and [6], by (Stat) 107] _|_ >= _|_ by (Bot) 108] a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) because a!6220!6220U71 = a!6220!6220U72, a!6220!6220U71 in Mul, [103], [5] and [6], by (Fun) 109] a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because [110], by (Star) 110] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because a!6220!6220U72 > a!6220!6220plus, [111] and [112], by (Copy) 111] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72 = a!6220!6220x, a!6220!6220U72 in Mul, [5] and [6], by (Stat) 112] a!6220!6220U72*(_|_, X, Y) >= Y because [6], by (Select) 113] _|_ >= _|_ by (Bot) 114] _|_ >= _|_ by (Bot) 115] _|_ >= _|_ by (Bot) 116] _|_ >= _|_ by (Bot) 117] a!6220!6220plus(X, _|_) >= a!6220!6220U41(_|_, X) because [118], by (Star) 118] a!6220!6220plus*(X, _|_) >= a!6220!6220U41(_|_, X) because a!6220!6220plus > a!6220!6220U41, [119] and [120], by (Copy) 119] a!6220!6220plus*(X, _|_) >= _|_ by (Bot) 120] a!6220!6220plus*(X, _|_) >= X because [6], by (Select) 121] a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because [122], by (Star) 122] a!6220!6220plus*(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because a!6220!6220plus = a!6220!6220U51, a!6220!6220plus in Mul, [6], [123] and [125], by (Stat) 123] s(Y) > _|_ because [124], by definition 124] s*(Y) >= _|_ by (Bot) 125] s(Y) > Y because [126], by definition 126] s*(Y) >= Y because [5], by (Select) 127] a!6220!6220x(X, _|_) >= _|_ by (Bot) 128] a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because [129], by (Star) 129] a!6220!6220x*(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because a!6220!6220x = a!6220!6220U71, a!6220!6220x in Mul, [6], [123] and [125], by (Stat) 130] X >= X by (Meta) 131] X >= X by (Meta) 132] _|_ >= _|_ by (Bot) 133] X >= X by (Meta) 134] X >= X by (Meta) 135] X >= X by (Meta) 136] U41(X, Y) >= a!6220!6220U41(X, Y) because U41 = a!6220!6220U41, U41 in Mul, [137] and [138], by (Fun) 137] X >= X by (Meta) 138] Y >= Y by (Meta) 139] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [137], [138] and [140], by (Fun) 140] Z >= Z by (Meta) 141] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [137], [138] and [140], by (Fun) 142] plus(X, Y) >= a!6220!6220plus(X, Y) because plus = a!6220!6220plus, plus in Mul, [137] and [143], by (Fun) 143] Y >= Y by (Meta) 144] X >= X by (Meta) 145] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [137], [143] and [140], by (Fun) 146] U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) because U72 = a!6220!6220U72, U72 in Mul, [137], [143] and [140], by (Fun) 147] x(X, Y) >= a!6220!6220x(X, Y) because x = a!6220!6220x, x in Mul, [137] and [143], by (Fun) 148] _|_ >= _|_ by (Bot) 149] s(X) >= s(X) because s in Mul and [150], by (Fun) 150] X >= X by (Meta) 151] _|_ >= _|_ by (Bot) 152] X >= X by (Meta) 153] X >= X by (Meta) 154] _|_ >= _|_ by (Bot) 155] X >= X by (Meta) 156] X >= X by (Meta) 157] X >= X by (Meta) 158] a!6220!6220U41(X, Y) >= U41(X, Y) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [137] and [143], by (Fun) 159] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [137], [143] and [140], by (Fun) 160] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [137], [143] and [140], by (Fun) 161] a!6220!6220plus(X, Y) >= plus(X, Y) because a!6220!6220plus = plus, a!6220!6220plus in Mul, [137] and [143], by (Fun) 162] X >= X by (Meta) 163] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [137], [143] and [140], by (Fun) 164] a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [137], [143] and [140], by (Fun) 165] a!6220!6220x(X, Y) >= x(X, Y) because a!6220!6220x = x, a!6220!6220x in Mul, [137] and [143], by (Fun) By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_10, R_0, minimal, formative) by (P_11, R_0, minimal, formative), where P_11 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) =#> mark#(X) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U52#(tt, X, Y) >? a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) a!6220!6220plus#(X, 0) >? a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? a!6220!6220plus#(mark(X), mark(Y)) mark#(plus(X, Y)) >? mark#(X) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) Since this representation is not advantageous for the higher-order recursive path ordering, we present the strict requirements in their unextended form, which is not problematic since for any F, s and substituion gamma: (F s)gamma beta-reduces to F(s)gamma.) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[U11(x_1, x_2)]] = x_1 [[U12(x_1)]] = x_1 [[U21(x_1)]] = x_1 [[U31(x_1, x_2)]] = x_1 [[U32(x_1)]] = x_1 [[a!6220!6220U11(x_1, x_2)]] = x_1 [[a!6220!6220U12(x_1)]] = x_1 [[a!6220!6220U21(x_1)]] = x_1 [[a!6220!6220U31(x_1, x_2)]] = x_1 [[a!6220!6220U32(x_1)]] = x_1 [[a!6220!6220U41#(x_1, x_2)]] = a!6220!6220U41#(x_2) [[a!6220!6220isNat(x_1)]] = a!6220!6220isNat [[a!6220!6220plus#(x_1, x_2)]] = a!6220!6220plus#(x_1) [[isNat(x_1)]] = isNat [[mark(x_1)]] = x_1 We choose Lex = {} and Mul = {0, U41, U51, U52, U61, U71, U72, a!6220!6220U41, a!6220!6220U41#, a!6220!6220U51, a!6220!6220U52, a!6220!6220U52#, a!6220!6220U61, a!6220!6220U71, a!6220!6220U71#, a!6220!6220U72, a!6220!6220U72#, a!6220!6220isNat, a!6220!6220plus, a!6220!6220plus#, a!6220!6220x, isNat, mark#, plus, s, tt, x}, and the following precedence: U71 = U72 = a!6220!6220U71 = a!6220!6220U71# = a!6220!6220U72 = a!6220!6220U72# = a!6220!6220x = x > U41 = U51 = U52 = a!6220!6220U41 = a!6220!6220U51 = a!6220!6220U52 = a!6220!6220U52# = a!6220!6220plus = plus > a!6220!6220U41# = a!6220!6220plus# = mark# > 0 = U61 = a!6220!6220U61 > a!6220!6220isNat = isNat = s = tt Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220U41#(X) >= mark#(X) a!6220!6220U52#(tt, X, Y) >= a!6220!6220plus#(Y) a!6220!6220U52#(tt, X, Y) >= mark#(Y) a!6220!6220U52#(tt, X, Y) >= mark#(X) a!6220!6220U71#(tt, X, Y) >= a!6220!6220U72#(a!6220!6220isNat, X, Y) a!6220!6220U72#(tt, X, Y) >= mark#(Y) a!6220!6220U72#(tt, X, Y) >= mark#(X) a!6220!6220plus#(X) >= a!6220!6220U41#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) > a!6220!6220plus#(X) mark#(plus(X, Y)) >= mark#(X) mark#(U61(X)) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) tt >= a!6220!6220isNat tt >= tt tt >= tt tt >= a!6220!6220isNat tt >= tt a!6220!6220U41(tt, X) >= X a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat, X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(Y, X)) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat, X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) a!6220!6220isNat >= tt a!6220!6220isNat >= a!6220!6220isNat a!6220!6220isNat >= a!6220!6220isNat a!6220!6220isNat >= a!6220!6220isNat a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat, X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) X >= X X >= X isNat >= a!6220!6220isNat X >= X X >= X X >= X U41(X, Y) >= a!6220!6220U41(X, Y) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) plus(X, Y) >= a!6220!6220plus(X, Y) U61(X) >= a!6220!6220U61(X) U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) x(X, Y) >= a!6220!6220x(X, Y) tt >= tt s(X) >= s(X) 0 >= 0 X >= X X >= X a!6220!6220isNat >= isNat X >= X X >= X X >= X a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) With these choices, we have: 1] a!6220!6220U41#(X) >= mark#(X) because a!6220!6220U41# = mark#, a!6220!6220U41# in Mul and [2], by (Fun) 2] X >= X by (Meta) 3] a!6220!6220U52#(tt, X, Y) >= a!6220!6220plus#(Y) because [4], by (Star) 4] a!6220!6220U52#*(tt, X, Y) >= a!6220!6220plus#(Y) because a!6220!6220U52# > a!6220!6220plus# and [5], by (Copy) 5] a!6220!6220U52#*(tt, X, Y) >= Y because [2], by (Select) 6] a!6220!6220U52#(tt, X, Y) >= mark#(Y) because [7], by (Star) 7] a!6220!6220U52#*(tt, X, Y) >= mark#(Y) because a!6220!6220U52# > mark# and [5], by (Copy) 8] a!6220!6220U52#(tt, X, Y) >= mark#(X) because [9], by (Star) 9] a!6220!6220U52#*(tt, X, Y) >= mark#(X) because a!6220!6220U52# > mark# and [10], by (Copy) 10] a!6220!6220U52#*(tt, X, Y) >= X because [11], by (Select) 11] X >= X by (Meta) 12] a!6220!6220U71#(tt, X, Y) >= a!6220!6220U72#(a!6220!6220isNat, X, Y) because a!6220!6220U71# = a!6220!6220U72#, a!6220!6220U71# in Mul, [13], [14] and [2], by (Fun) 13] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 14] X >= X by (Meta) 15] a!6220!6220U72#(tt, X, Y) >= mark#(Y) because [16], by (Star) 16] a!6220!6220U72#*(tt, X, Y) >= mark#(Y) because a!6220!6220U72# > mark# and [17], by (Copy) 17] a!6220!6220U72#*(tt, X, Y) >= Y because [2], by (Select) 18] a!6220!6220U72#(tt, X, Y) >= mark#(X) because [19], by (Star) 19] a!6220!6220U72#*(tt, X, Y) >= mark#(X) because a!6220!6220U72# > mark# and [20], by (Copy) 20] a!6220!6220U72#*(tt, X, Y) >= X because [14], by (Select) 21] a!6220!6220plus#(X) >= a!6220!6220U41#(X) because a!6220!6220plus# = a!6220!6220U41#, a!6220!6220plus# in Mul and [2], by (Fun) 22] mark#(X) >= mark#(X) because mark# in Mul and [23], by (Fun) 23] X >= X by (Meta) 24] mark#(X) >= mark#(X) because mark# in Mul and [25], by (Fun) 25] X >= X by (Meta) 26] mark#(X) >= mark#(X) because mark# in Mul and [27], by (Fun) 27] X >= X by (Meta) 28] mark#(X) >= mark#(X) because mark# in Mul and [29], by (Fun) 29] X >= X by (Meta) 30] mark#(X) >= mark#(X) because mark# in Mul and [31], by (Fun) 31] X >= X by (Meta) 32] mark#(U41(X, Y)) >= a!6220!6220U41#(Y) because [33], by (Star) 33] mark#*(U41(X, Y)) >= a!6220!6220U41#(Y) because mark# = a!6220!6220U41#, mark# in Mul and [34], by (Stat) 34] U41(X, Y) > Y because [35], by definition 35] U41*(X, Y) >= Y because [36], by (Select) 36] Y >= Y by (Meta) 37] mark#(U41(X, Y)) >= mark#(X) because [38], by (Star) 38] mark#*(U41(X, Y)) >= mark#(X) because mark# in Mul and [39], by (Stat) 39] U41(X, Y) > X because [40], by definition 40] U41*(X, Y) >= X because [29], by (Select) 41] mark#(U51(X, Y, Z)) >= mark#(X) because mark# in Mul and [42], by (Fun) 42] U51(X, Y, Z) >= X because [43], by (Star) 43] U51*(X, Y, Z) >= X because [29], by (Select) 44] mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [45], by (Star) 45] mark#*(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [46], by (Select) 46] U52(X, Y, Z) >= a!6220!6220U52#(X, Y, Z) because U52 = a!6220!6220U52#, U52 in Mul, [47], [48] and [49], by (Fun) 47] X >= X by (Meta) 48] Y >= Y by (Meta) 49] Z >= Z by (Meta) 50] mark#(U52(X, Y, Z)) >= mark#(X) because mark# in Mul and [51], by (Fun) 51] U52(X, Y, Z) >= X because [52], by (Star) 52] U52*(X, Y, Z) >= X because [47], by (Select) 53] mark#(plus(X, Y)) > a!6220!6220plus#(X) because [54], by definition 54] mark#*(plus(X, Y)) >= a!6220!6220plus#(X) because mark# = a!6220!6220plus#, mark# in Mul and [55], by (Stat) 55] plus(X, Y) > X because [56], by definition 56] plus*(X, Y) >= X because [47], by (Select) 57] mark#(plus(X, Y)) >= mark#(X) because [58], by (Star) 58] mark#*(plus(X, Y)) >= mark#(X) because mark# in Mul and [59], by (Stat) 59] plus(X, Y) > X because [56], by definition 60] mark#(U61(X)) >= mark#(X) because mark# in Mul and [61], by (Fun) 61] U61(X) >= X because [62], by (Star) 62] U61*(X) >= X because [31], by (Select) 63] mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [64], by (Star) 64] mark#*(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [65], by (Select) 65] U71(X, Y, Z) >= a!6220!6220U71#(X, Y, Z) because U71 = a!6220!6220U71#, U71 in Mul, [47], [48] and [49], by (Fun) 66] mark#(U71(X, Y, Z)) >= mark#(X) because [67], by (Star) 67] mark#*(U71(X, Y, Z)) >= mark#(X) because [68], by (Select) 68] U71(X, Y, Z) >= mark#(X) because [69], by (Star) 69] U71*(X, Y, Z) >= mark#(X) because U71 > mark# and [70], by (Copy) 70] U71*(X, Y, Z) >= X because [47], by (Select) 71] mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [72], by (Star) 72] mark#*(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [73], by (Select) 73] U72(X, Y, Z) >= a!6220!6220U72#(X, Y, Z) because U72 = a!6220!6220U72#, U72 in Mul, [47], [48] and [49], by (Fun) 74] mark#(U72(X, Y, Z)) >= mark#(X) because [75], by (Star) 75] mark#*(U72(X, Y, Z)) >= mark#(X) because [76], by (Select) 76] U72(X, Y, Z) >= mark#(X) because [77], by (Star) 77] U72*(X, Y, Z) >= mark#(X) because U72 > mark# and [78], by (Copy) 78] U72*(X, Y, Z) >= X because [47], by (Select) 79] mark#(x(X, Y)) >= mark#(X) because mark# in Mul and [80], by (Fun) 80] x(X, Y) >= X because [81], by (Star) 81] x*(X, Y) >= X because [47], by (Select) 82] mark#(x(X, Y)) >= mark#(Y) because mark# in Mul and [83], by (Fun) 83] x(X, Y) >= Y because [84], by (Star) 84] x*(X, Y) >= Y because [48], by (Select) 85] mark#(s(X)) >= mark#(X) because mark# in Mul and [86], by (Fun) 86] s(X) >= X because [87], by (Star) 87] s*(X) >= X because [31], by (Select) 88] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 89] tt >= tt by (Fun) 90] tt >= tt by (Fun) 91] tt >= a!6220!6220isNat because tt = a!6220!6220isNat, by (Fun) 92] tt >= tt by (Fun) 93] a!6220!6220U41(tt, X) >= X because [94], by (Star) 94] a!6220!6220U41*(tt, X) >= X because [2], by (Select) 95] a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat, X, Y) because a!6220!6220U51 = a!6220!6220U52, a!6220!6220U51 in Mul, [13], [14] and [2], by (Fun) 96] a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(Y, X)) because [97], by (Star) 97] a!6220!6220U52*(tt, X, Y) >= s(a!6220!6220plus(Y, X)) because a!6220!6220U52 > s and [98], by (Copy) 98] a!6220!6220U52*(tt, X, Y) >= a!6220!6220plus(Y, X) because a!6220!6220U52 = a!6220!6220plus, a!6220!6220U52 in Mul, [99] and [100], by (Stat) 99] X >= X by (Meta) 100] Y >= Y by (Meta) 101] a!6220!6220U61(tt) >= 0 because [102], by (Star) 102] a!6220!6220U61*(tt) >= 0 because a!6220!6220U61 = 0 and a!6220!6220U61 in Mul, by (Stat) 103] a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat, X, Y) because a!6220!6220U71 = a!6220!6220U72, a!6220!6220U71 in Mul, [13], [99] and [100], by (Fun) 104] a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because [105], by (Star) 105] a!6220!6220U72*(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because a!6220!6220U72 > a!6220!6220plus, [106] and [107], by (Copy) 106] a!6220!6220U72*(tt, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72 = a!6220!6220x, a!6220!6220U72 in Mul, [99] and [100], by (Stat) 107] a!6220!6220U72*(tt, X, Y) >= Y because [100], by (Select) 108] a!6220!6220isNat >= tt because a!6220!6220isNat = tt, by (Fun) 109] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 110] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 111] a!6220!6220isNat >= a!6220!6220isNat because a!6220!6220isNat in Mul, by (Fun) 112] a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat, X) because [113], by (Star) 113] a!6220!6220plus*(X, 0) >= a!6220!6220U41(a!6220!6220isNat, X) because a!6220!6220plus = a!6220!6220U41, a!6220!6220plus in Mul, [100] and [114], by (Stat) 114] 0 > a!6220!6220isNat because [115], by definition 115] 0* >= a!6220!6220isNat because 0 > a!6220!6220isNat, by (Copy) 116] a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) because [117], by (Star) 117] a!6220!6220plus*(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat, Y, X) because a!6220!6220plus = a!6220!6220U51, a!6220!6220plus in Mul, [100], [118] and [120], by (Stat) 118] s(Y) > a!6220!6220isNat because [119], by definition 119] s*(Y) >= a!6220!6220isNat because s = a!6220!6220isNat and s in Mul, by (Stat) 120] s(Y) > Y because [121], by definition 121] s*(Y) >= Y because [99], by (Select) 122] a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat) because [123], by (Star) 123] a!6220!6220x*(X, 0) >= a!6220!6220U61(a!6220!6220isNat) because a!6220!6220x > a!6220!6220U61 and [124], by (Copy) 124] a!6220!6220x*(X, 0) >= a!6220!6220isNat because a!6220!6220x > a!6220!6220isNat, by (Copy) 125] a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) because [126], by (Star) 126] a!6220!6220x*(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat, Y, X) because a!6220!6220x = a!6220!6220U71, a!6220!6220x in Mul, [100], [118] and [120], by (Stat) 127] X >= X by (Meta) 128] X >= X by (Meta) 129] isNat >= a!6220!6220isNat because isNat = a!6220!6220isNat and isNat in Mul, by (Fun) 130] X >= X by (Meta) 131] X >= X by (Meta) 132] X >= X by (Meta) 133] U41(X, Y) >= a!6220!6220U41(X, Y) because U41 = a!6220!6220U41, U41 in Mul, [47] and [48], by (Fun) 134] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [47], [48] and [49], by (Fun) 135] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [47], [48] and [49], by (Fun) 136] plus(X, Y) >= a!6220!6220plus(X, Y) because plus = a!6220!6220plus, plus in Mul, [47] and [137], by (Fun) 137] Y >= Y by (Meta) 138] U61(X) >= a!6220!6220U61(X) because U61 = a!6220!6220U61, U61 in Mul and [139], by (Fun) 139] X >= X by (Meta) 140] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [47], [137] and [49], by (Fun) 141] U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) because U72 = a!6220!6220U72, U72 in Mul, [47], [137] and [49], by (Fun) 142] x(X, Y) >= a!6220!6220x(X, Y) because x = a!6220!6220x, x in Mul, [47] and [137], by (Fun) 143] tt >= tt by (Fun) 144] s(X) >= s(X) because s in Mul and [139], by (Fun) 145] 0 >= 0 by (Fun) 146] X >= X by (Meta) 147] X >= X by (Meta) 148] a!6220!6220isNat >= isNat because a!6220!6220isNat = isNat and a!6220!6220isNat in Mul, by (Fun) 149] X >= X by (Meta) 150] X >= X by (Meta) 151] X >= X by (Meta) 152] a!6220!6220U41(X, Y) >= U41(X, Y) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [47] and [137], by (Fun) 153] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [47], [137] and [49], by (Fun) 154] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [47], [137] and [49], by (Fun) 155] a!6220!6220plus(X, Y) >= plus(X, Y) because a!6220!6220plus = plus, a!6220!6220plus in Mul, [47] and [137], by (Fun) 156] a!6220!6220U61(X) >= U61(X) because a!6220!6220U61 = U61, a!6220!6220U61 in Mul and [139], by (Fun) 157] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [47], [137] and [49], by (Fun) 158] a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [47], [137] and [49], by (Fun) 159] a!6220!6220x(X, Y) >= x(X, Y) because a!6220!6220x = x, a!6220!6220x in Mul, [47] and [137], by (Fun) By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_11, R_0, minimal, formative) by (P_12, R_0, minimal, formative), where P_12 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) a!6220!6220plus#(X, 0) =#> a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(X) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U52#(tt, X, Y) >? a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) a!6220!6220plus#(X, 0) >? a!6220!6220U41#(a!6220!6220isNat(X), X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? mark#(X) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) Since this representation is not advantageous for the higher-order recursive path ordering, we present the strict requirements in their unextended form, which is not problematic since for any F, s and substituion gamma: (F s)gamma beta-reduces to F(s)gamma.) We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[0]] = _|_ [[U11(x_1, x_2)]] = x_1 [[U12(x_1)]] = x_1 [[U21(x_1)]] = x_1 [[U31(x_1, x_2)]] = x_1 [[U32(x_1)]] = x_1 [[U61(x_1)]] = x_1 [[a!6220!6220U11(x_1, x_2)]] = x_1 [[a!6220!6220U12(x_1)]] = x_1 [[a!6220!6220U21(x_1)]] = x_1 [[a!6220!6220U31(x_1, x_2)]] = x_1 [[a!6220!6220U32(x_1)]] = x_1 [[a!6220!6220U61(x_1)]] = x_1 [[a!6220!6220isNat(x_1)]] = _|_ [[isNat(x_1)]] = _|_ [[mark(x_1)]] = x_1 [[tt]] = _|_ We choose Lex = {} and Mul = {U41, U51, U52, U71, U72, a!6220!6220U41, a!6220!6220U41#, a!6220!6220U51, a!6220!6220U52, a!6220!6220U52#, a!6220!6220U71, a!6220!6220U71#, a!6220!6220U72, a!6220!6220U72#, a!6220!6220plus, a!6220!6220plus#, a!6220!6220x, mark#, plus, s, x}, and the following precedence: U71 = U72 = a!6220!6220U71 = a!6220!6220U72 = a!6220!6220x = x > U51 = U52 = a!6220!6220U51 = a!6220!6220U52 = a!6220!6220U52# = a!6220!6220plus = a!6220!6220plus# = plus > a!6220!6220U41# = a!6220!6220U71# = a!6220!6220U72# = mark# = s > U41 = a!6220!6220U41 Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220U41#(_|_, X) >= mark#(X) a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y, X) a!6220!6220U52#(_|_, X, Y) >= mark#(Y) a!6220!6220U52#(_|_, X, Y) >= mark#(X) a!6220!6220U71#(_|_, X, Y) >= a!6220!6220U72#(_|_, X, Y) a!6220!6220U72#(_|_, X, Y) >= mark#(Y) a!6220!6220U72#(_|_, X, Y) >= mark#(X) a!6220!6220plus#(X, _|_) > a!6220!6220U41#(_|_, X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(X) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(X, Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= mark#(X) mark#(X) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220U41(_|_, X) >= X a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) _|_ >= _|_ a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ _|_ >= _|_ a!6220!6220plus(X, _|_) >= a!6220!6220U41(_|_, X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) a!6220!6220x(X, _|_) >= _|_ a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X U41(X, Y) >= a!6220!6220U41(X, Y) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) plus(X, Y) >= a!6220!6220plus(X, Y) X >= X U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) x(X, Y) >= a!6220!6220x(X, Y) _|_ >= _|_ s(X) >= s(X) _|_ >= _|_ X >= X X >= X _|_ >= _|_ X >= X X >= X X >= X a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) X >= X a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(X, Y) With these choices, we have: 1] a!6220!6220U41#(_|_, X) >= mark#(X) because [2], by (Star) 2] a!6220!6220U41#*(_|_, X) >= mark#(X) because a!6220!6220U41# = mark#, a!6220!6220U41# in Mul and [3], by (Stat) 3] X >= X by (Meta) 4] a!6220!6220U52#(_|_, X, Y) >= a!6220!6220plus#(Y, X) because [5], by (Star) 5] a!6220!6220U52#*(_|_, X, Y) >= a!6220!6220plus#(Y, X) because a!6220!6220U52# = a!6220!6220plus#, a!6220!6220U52# in Mul, [6] and [7], by (Stat) 6] X >= X by (Meta) 7] Y >= Y by (Meta) 8] a!6220!6220U52#(_|_, X, Y) >= mark#(Y) because [9], by (Star) 9] a!6220!6220U52#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U52# > mark# and [10], by (Copy) 10] a!6220!6220U52#*(_|_, X, Y) >= Y because [7], by (Select) 11] a!6220!6220U52#(_|_, X, Y) >= mark#(X) because [12], by (Star) 12] a!6220!6220U52#*(_|_, X, Y) >= mark#(X) because a!6220!6220U52# > mark# and [13], by (Copy) 13] a!6220!6220U52#*(_|_, X, Y) >= X because [6], by (Select) 14] a!6220!6220U71#(_|_, X, Y) >= a!6220!6220U72#(_|_, X, Y) because a!6220!6220U71# = a!6220!6220U72#, a!6220!6220U71# in Mul, [15], [6] and [7], by (Fun) 15] _|_ >= _|_ by (Bot) 16] a!6220!6220U72#(_|_, X, Y) >= mark#(Y) because [17], by (Star) 17] a!6220!6220U72#*(_|_, X, Y) >= mark#(Y) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [7], by (Stat) 18] a!6220!6220U72#(_|_, X, Y) >= mark#(X) because [19], by (Star) 19] a!6220!6220U72#*(_|_, X, Y) >= mark#(X) because a!6220!6220U72# = mark#, a!6220!6220U72# in Mul and [6], by (Stat) 20] a!6220!6220plus#(X, _|_) > a!6220!6220U41#(_|_, X) because [21], by definition 21] a!6220!6220plus#*(X, _|_) >= a!6220!6220U41#(_|_, X) because a!6220!6220plus# > a!6220!6220U41#, [22] and [23], by (Copy) 22] a!6220!6220plus#*(X, _|_) >= _|_ by (Bot) 23] a!6220!6220plus#*(X, _|_) >= X because [7], by (Select) 24] mark#(X) >= mark#(X) because mark# in Mul and [25], by (Fun) 25] X >= X by (Meta) 26] mark#(X) >= mark#(X) because mark# in Mul and [27], by (Fun) 27] X >= X by (Meta) 28] mark#(X) >= mark#(X) because mark# in Mul and [29], by (Fun) 29] X >= X by (Meta) 30] mark#(X) >= mark#(X) because mark# in Mul and [31], by (Fun) 31] X >= X by (Meta) 32] mark#(X) >= mark#(X) because mark# in Mul and [33], by (Fun) 33] X >= X by (Meta) 34] mark#(U41(X, Y)) >= a!6220!6220U41#(X, Y) because [35], by (Star) 35] mark#*(U41(X, Y)) >= a!6220!6220U41#(X, Y) because mark# = a!6220!6220U41#, mark# in Mul, [36] and [38], by (Stat) 36] U41(X, Y) > X because [37], by definition 37] U41*(X, Y) >= X because [31], by (Select) 38] U41(X, Y) > Y because [39], by definition 39] U41*(X, Y) >= Y because [40], by (Select) 40] Y >= Y by (Meta) 41] mark#(U41(X, Y)) >= mark#(X) because mark# in Mul and [42], by (Fun) 42] U41(X, Y) >= X because [37], by (Star) 43] mark#(U51(X, Y, Z)) >= mark#(X) because mark# in Mul and [44], by (Fun) 44] U51(X, Y, Z) >= X because [45], by (Star) 45] U51*(X, Y, Z) >= X because [31], by (Select) 46] mark#(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [47], by (Star) 47] mark#*(U52(X, Y, Z)) >= a!6220!6220U52#(X, Y, Z) because [48], by (Select) 48] U52(X, Y, Z) >= a!6220!6220U52#(X, Y, Z) because U52 = a!6220!6220U52#, U52 in Mul, [49], [50] and [51], by (Fun) 49] X >= X by (Meta) 50] Y >= Y by (Meta) 51] Z >= Z by (Meta) 52] mark#(U52(X, Y, Z)) >= mark#(X) because [53], by (Star) 53] mark#*(U52(X, Y, Z)) >= mark#(X) because [54], by (Select) 54] U52(X, Y, Z) >= mark#(X) because [55], by (Star) 55] U52*(X, Y, Z) >= mark#(X) because U52 > mark# and [56], by (Copy) 56] U52*(X, Y, Z) >= X because [49], by (Select) 57] mark#(plus(X, Y)) >= mark#(X) because mark# in Mul and [58], by (Fun) 58] plus(X, Y) >= X because [59], by (Star) 59] plus*(X, Y) >= X because [49], by (Select) 60] mark#(X) >= mark#(X) because mark# in Mul and [61], by (Fun) 61] X >= X by (Meta) 62] mark#(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because [63], by (Star) 63] mark#*(U71(X, Y, Z)) >= a!6220!6220U71#(X, Y, Z) because mark# = a!6220!6220U71#, mark# in Mul, [64], [66] and [68], by (Stat) 64] U71(X, Y, Z) > X because [65], by definition 65] U71*(X, Y, Z) >= X because [49], by (Select) 66] U71(X, Y, Z) > Y because [67], by definition 67] U71*(X, Y, Z) >= Y because [50], by (Select) 68] U71(X, Y, Z) > Z because [69], by definition 69] U71*(X, Y, Z) >= Z because [51], by (Select) 70] mark#(U71(X, Y, Z)) >= mark#(X) because [71], by (Star) 71] mark#*(U71(X, Y, Z)) >= mark#(X) because mark# in Mul and [72], by (Stat) 72] U71(X, Y, Z) > X because [65], by definition 73] mark#(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because [74], by (Star) 74] mark#*(U72(X, Y, Z)) >= a!6220!6220U72#(X, Y, Z) because mark# = a!6220!6220U72#, mark# in Mul, [75], [77] and [79], by (Stat) 75] U72(X, Y, Z) > X because [76], by definition 76] U72*(X, Y, Z) >= X because [49], by (Select) 77] U72(X, Y, Z) > Y because [78], by definition 78] U72*(X, Y, Z) >= Y because [50], by (Select) 79] U72(X, Y, Z) > Z because [80], by definition 80] U72*(X, Y, Z) >= Z because [51], by (Select) 81] mark#(U72(X, Y, Z)) >= mark#(X) because mark# in Mul and [82], by (Fun) 82] U72(X, Y, Z) >= X because [76], by (Star) 83] mark#(x(X, Y)) >= mark#(X) because mark# in Mul and [84], by (Fun) 84] x(X, Y) >= X because [85], by (Star) 85] x*(X, Y) >= X because [49], by (Select) 86] mark#(x(X, Y)) >= mark#(Y) because [87], by (Star) 87] mark#*(x(X, Y)) >= mark#(Y) because mark# in Mul and [88], by (Stat) 88] x(X, Y) > Y because [89], by definition 89] x*(X, Y) >= Y because [50], by (Select) 90] mark#(s(X)) >= mark#(X) because [91], by (Star) 91] mark#*(s(X)) >= mark#(X) because [92], by (Select) 92] s(X) >= mark#(X) because s = mark#, s in Mul and [93], by (Fun) 93] X >= X by (Meta) 94] _|_ >= _|_ by (Bot) 95] _|_ >= _|_ by (Bot) 96] _|_ >= _|_ by (Bot) 97] _|_ >= _|_ by (Bot) 98] _|_ >= _|_ by (Bot) 99] a!6220!6220U41(_|_, X) >= X because [100], by (Star) 100] a!6220!6220U41*(_|_, X) >= X because [7], by (Select) 101] a!6220!6220U51(_|_, X, Y) >= a!6220!6220U52(_|_, X, Y) because a!6220!6220U51 = a!6220!6220U52, a!6220!6220U51 in Mul, [15], [6] and [7], by (Fun) 102] a!6220!6220U52(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because [103], by (Star) 103] a!6220!6220U52*(_|_, X, Y) >= s(a!6220!6220plus(Y, X)) because a!6220!6220U52 > s and [104], by (Copy) 104] a!6220!6220U52*(_|_, X, Y) >= a!6220!6220plus(Y, X) because a!6220!6220U52 = a!6220!6220plus, a!6220!6220U52 in Mul, [6] and [7], by (Stat) 105] _|_ >= _|_ by (Bot) 106] a!6220!6220U71(_|_, X, Y) >= a!6220!6220U72(_|_, X, Y) because a!6220!6220U71 = a!6220!6220U72, a!6220!6220U71 in Mul, [15], [6] and [7], by (Fun) 107] a!6220!6220U72(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because [108], by (Star) 108] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220plus(a!6220!6220x(Y, X), Y) because a!6220!6220U72 > a!6220!6220plus, [109] and [110], by (Copy) 109] a!6220!6220U72*(_|_, X, Y) >= a!6220!6220x(Y, X) because a!6220!6220U72 = a!6220!6220x, a!6220!6220U72 in Mul, [6] and [7], by (Stat) 110] a!6220!6220U72*(_|_, X, Y) >= Y because [7], by (Select) 111] _|_ >= _|_ by (Bot) 112] _|_ >= _|_ by (Bot) 113] _|_ >= _|_ by (Bot) 114] _|_ >= _|_ by (Bot) 115] a!6220!6220plus(X, _|_) >= a!6220!6220U41(_|_, X) because [116], by (Star) 116] a!6220!6220plus*(X, _|_) >= a!6220!6220U41(_|_, X) because a!6220!6220plus > a!6220!6220U41, [117] and [118], by (Copy) 117] a!6220!6220plus*(X, _|_) >= _|_ by (Bot) 118] a!6220!6220plus*(X, _|_) >= X because [7], by (Select) 119] a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because [120], by (Star) 120] a!6220!6220plus*(X, s(Y)) >= a!6220!6220U51(_|_, Y, X) because a!6220!6220plus = a!6220!6220U51, a!6220!6220plus in Mul, [7], [121] and [123], by (Stat) 121] s(Y) > _|_ because [122], by definition 122] s*(Y) >= _|_ by (Bot) 123] s(Y) > Y because [124], by definition 124] s*(Y) >= Y because [6], by (Select) 125] a!6220!6220x(X, _|_) >= _|_ by (Bot) 126] a!6220!6220x(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because [127], by (Star) 127] a!6220!6220x*(X, s(Y)) >= a!6220!6220U71(_|_, Y, X) because a!6220!6220x = a!6220!6220U71, a!6220!6220x in Mul, [7], [121] and [123], by (Stat) 128] X >= X by (Meta) 129] X >= X by (Meta) 130] _|_ >= _|_ by (Bot) 131] X >= X by (Meta) 132] X >= X by (Meta) 133] X >= X by (Meta) 134] U41(X, Y) >= a!6220!6220U41(X, Y) because U41 = a!6220!6220U41, U41 in Mul, [49] and [50], by (Fun) 135] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [49], [50] and [51], by (Fun) 136] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [49], [50] and [51], by (Fun) 137] plus(X, Y) >= a!6220!6220plus(X, Y) because plus = a!6220!6220plus, plus in Mul, [49] and [138], by (Fun) 138] Y >= Y by (Meta) 139] X >= X by (Meta) 140] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [49], [138] and [51], by (Fun) 141] U72(X, Y, Z) >= a!6220!6220U72(X, Y, Z) because U72 = a!6220!6220U72, U72 in Mul, [49], [138] and [51], by (Fun) 142] x(X, Y) >= a!6220!6220x(X, Y) because x = a!6220!6220x, x in Mul, [49] and [138], by (Fun) 143] _|_ >= _|_ by (Bot) 144] s(X) >= s(X) because s in Mul and [145], by (Fun) 145] X >= X by (Meta) 146] _|_ >= _|_ by (Bot) 147] X >= X by (Meta) 148] X >= X by (Meta) 149] _|_ >= _|_ by (Bot) 150] X >= X by (Meta) 151] X >= X by (Meta) 152] X >= X by (Meta) 153] a!6220!6220U41(X, Y) >= U41(X, Y) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [49] and [138], by (Fun) 154] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [49], [138] and [51], by (Fun) 155] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [49], [138] and [51], by (Fun) 156] a!6220!6220plus(X, Y) >= plus(X, Y) because a!6220!6220plus = plus, a!6220!6220plus in Mul, [49] and [138], by (Fun) 157] X >= X by (Meta) 158] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [49], [138] and [51], by (Fun) 159] a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [49], [138] and [51], by (Fun) 160] a!6220!6220x(X, Y) >= x(X, Y) because a!6220!6220x = x, a!6220!6220x in Mul, [49] and [138], by (Fun) By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_12, R_0, minimal, formative) by (P_13, R_0, minimal, formative), where P_13 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U52#(tt, X, Y) =#> a!6220!6220plus#(mark(Y), mark(X)) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(X) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 1 : * 2 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 3 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 4 : 5, 6 * 5 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 6 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 7 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 8 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 9 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 10 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 11 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 12 : 0 * 13 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 14 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 15 : 1, 2, 3 * 16 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 17 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 18 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 19 : 4 * 20 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 21 : 5, 6 * 22 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 23 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 24 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 * 25 : 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 This graph has the following strongly connected components: P_14: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U71#(tt, X, Y) =#> a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(X) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_13, R_0, m, f) by (P_14, R_0, m, f). Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U71#(tt, X, Y) >? a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? mark#(X) mark#(U61(X)) >? mark#(X) mark#(U71(X, Y, Z)) >? a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(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: a!6220!6220U41#(x_1,x_2) = a!6220!6220U41#(x_2) a!6220!6220U52#(x_1,x_2,x_3) = a!6220!6220U52#(x_2x_3) a!6220!6220U71#(x_1,x_2,x_3) = a!6220!6220U71#(x_2x_3) a!6220!6220U72#(x_1,x_2,x_3) = a!6220!6220U72#(x_2x_3) This leaves the following ordering requirements: a!6220!6220U41#(tt, X) >= mark#(X) a!6220!6220U52#(tt, X, Y) >= mark#(Y) a!6220!6220U52#(tt, X, Y) >= mark#(X) a!6220!6220U71#(tt, X, Y) > a!6220!6220U72#(a!6220!6220isNat(Y), X, Y) a!6220!6220U72#(tt, X, Y) >= mark#(Y) a!6220!6220U72#(tt, X, Y) >= mark#(X) mark#(U11(X, Y)) >= mark#(X) mark#(U12(X)) >= mark#(X) mark#(U21(X)) >= mark#(X) mark#(U31(X, Y)) >= mark#(X) mark#(U32(X)) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= mark#(X) mark#(U61(X)) >= mark#(X) mark#(U71(X, Y, Z)) >= a!6220!6220U71#(mark(X), Y, Z) mark#(U71(X, Y, Z)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1.y0 U12 = \y0.y0 U21 = \y0.y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0y1.2y0 + 2y1 U51 = \y0y1y2.2y0 U52 = \y0y1y2.2y0 + 2y1 + 2y2 U61 = \y0.y0 U71 = \y0y1y2.1 + y0 + 2y1 + 2y2 U72 = \y0y1y2.y0 + y1 + y2 a!6220!6220U11 = \y0y1.0 a!6220!6220U12 = \y0.0 a!6220!6220U21 = \y0.0 a!6220!6220U31 = \y0y1.0 a!6220!6220U32 = \y0.0 a!6220!6220U41 = \y0y1.0 a!6220!6220U41# = \y0y1.y1 a!6220!6220U51 = \y0y1y2.0 a!6220!6220U52 = \y0y1y2.0 a!6220!6220U52# = \y0y1y2.2y1 + 2y2 a!6220!6220U61 = \y0.0 a!6220!6220U71 = \y0y1y2.0 a!6220!6220U71# = \y0y1y2.1 + y1 + y2 a!6220!6220U72 = \y0y1y2.0 a!6220!6220U72# = \y0y1y2.y1 + y2 a!6220!6220isNat = \y0.0 a!6220!6220plus = \y0y1.0 a!6220!6220x = \y0y1.0 isNat = \y0.0 mark = \y0.0 mark# = \y0.y0 plus = \y0y1.y0 s = \y0.2y0 tt = 0 x = \y0y1.y0 + y1 Using this interpretation, the requirements translate to: [[a!6220!6220U41#(tt, _x0)]] = x0 >= x0 = [[mark#(_x0)]] [[a!6220!6220U52#(tt, _x0, _x1)]] = 2x0 + 2x1 >= x1 = [[mark#(_x1)]] [[a!6220!6220U52#(tt, _x0, _x1)]] = 2x0 + 2x1 >= x0 = [[mark#(_x0)]] [[a!6220!6220U71#(tt, _x0, _x1)]] = 1 + x0 + x1 > x0 + x1 = [[a!6220!6220U72#(a!6220!6220isNat(_x1), _x0, _x1)]] [[a!6220!6220U72#(tt, _x0, _x1)]] = x0 + x1 >= x1 = [[mark#(_x1)]] [[a!6220!6220U72#(tt, _x0, _x1)]] = x0 + x1 >= x0 = [[mark#(_x0)]] [[mark#(U11(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U12(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U21(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U41(_x0, _x1))]] = 2x0 + 2x1 >= x1 = [[a!6220!6220U41#(mark(_x0), _x1)]] [[mark#(U41(_x0, _x1))]] = 2x0 + 2x1 >= x0 = [[mark#(_x0)]] [[mark#(U51(_x0, _x1, _x2))]] = 2x0 >= x0 = [[mark#(_x0)]] [[mark#(U52(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x1 + 2x2 = [[a!6220!6220U52#(mark(_x0), _x1, _x2)]] [[mark#(U52(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U61(_x0))]] = x0 >= x0 = [[mark#(_x0)]] [[mark#(U71(_x0, _x1, _x2))]] = 1 + x0 + 2x1 + 2x2 >= 1 + x1 + x2 = [[a!6220!6220U71#(mark(_x0), _x1, _x2)]] [[mark#(U71(_x0, _x1, _x2))]] = 1 + x0 + 2x1 + 2x2 > x0 = [[mark#(_x0)]] [[mark#(U72(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x1 + x2 = [[a!6220!6220U72#(mark(_x0), _x1, _x2)]] [[mark#(U72(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 = [[mark#(_x0)]] [[mark#(x(_x0, _x1))]] = x0 + x1 >= x0 = [[mark#(_x0)]] [[mark#(x(_x0, _x1))]] = x0 + x1 >= x1 = [[mark#(_x1)]] [[mark#(s(_x0))]] = 2x0 >= x0 = [[mark#(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_14, R_0, minimal, formative) by (P_15, R_0, minimal, formative), where P_15 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(X) mark#(U61(X)) =#> mark#(X) mark#(U71(X, Y, Z)) =#> a!6220!6220U71#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 1 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 2 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 3 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 4 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 5 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 6 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 7 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 8 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 9 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 10 : 0 * 11 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 12 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 13 : 1, 2 * 14 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 15 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 16 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 17 : * 18 : 3, 4 * 19 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 20 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 21 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 * 22 : 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 This graph has the following strongly connected components: P_16: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U52#(tt, X, Y) =#> mark#(Y) a!6220!6220U52#(tt, X, Y) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U41(X, Y)) =#> a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(U52(X, Y, Z)) =#> a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(X) mark#(U61(X)) =#> mark#(X) mark#(U72(X, Y, Z)) =#> a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_15, R_0, m, f) by (P_16, R_0, m, f). Thus, the original system is terminating if each of (P_1, 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 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: a!6220!6220U41#(tt, X) >? mark#(X) a!6220!6220U52#(tt, X, Y) >? mark#(Y) a!6220!6220U52#(tt, X, Y) >? mark#(X) a!6220!6220U72#(tt, X, Y) >? mark#(Y) a!6220!6220U72#(tt, X, Y) >? mark#(X) mark#(U11(X, Y)) >? mark#(X) mark#(U12(X)) >? mark#(X) mark#(U21(X)) >? mark#(X) mark#(U31(X, Y)) >? mark#(X) mark#(U32(X)) >? mark#(X) mark#(U41(X, Y)) >? a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >? mark#(X) mark#(U51(X, Y, Z)) >? mark#(X) mark#(U52(X, Y, Z)) >? a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >? mark#(X) mark#(plus(X, Y)) >? mark#(X) mark#(U61(X)) >? mark#(X) mark#(U72(X, Y, Z)) >? a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >? mark#(X) mark#(x(X, Y)) >? mark#(X) mark#(x(X, Y)) >? mark#(Y) mark#(s(X)) >? mark#(X) a!6220!6220U11(tt, X) >= a!6220!6220U12(a!6220!6220isNat(X)) a!6220!6220U12(tt) >= tt a!6220!6220U21(tt) >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isNat(X)) a!6220!6220U32(tt) >= tt a!6220!6220U41(tt, X) >= mark(X) a!6220!6220U51(tt, X, Y) >= a!6220!6220U52(a!6220!6220isNat(Y), X, Y) a!6220!6220U52(tt, X, Y) >= s(a!6220!6220plus(mark(Y), mark(X))) a!6220!6220U61(tt) >= 0 a!6220!6220U71(tt, X, Y) >= a!6220!6220U72(a!6220!6220isNat(Y), X, Y) a!6220!6220U72(tt, X, Y) >= a!6220!6220plus(a!6220!6220x(mark(Y), mark(X)), mark(Y)) a!6220!6220isNat(0) >= tt a!6220!6220isNat(plus(X, Y)) >= a!6220!6220U11(a!6220!6220isNat(X), Y) a!6220!6220isNat(s(X)) >= a!6220!6220U21(a!6220!6220isNat(X)) a!6220!6220isNat(x(X, Y)) >= a!6220!6220U31(a!6220!6220isNat(X), Y) a!6220!6220plus(X, 0) >= a!6220!6220U41(a!6220!6220isNat(X), X) a!6220!6220plus(X, s(Y)) >= a!6220!6220U51(a!6220!6220isNat(Y), Y, X) a!6220!6220x(X, 0) >= a!6220!6220U61(a!6220!6220isNat(X)) a!6220!6220x(X, s(Y)) >= a!6220!6220U71(a!6220!6220isNat(Y), Y, X) mark(U11(X, Y)) >= a!6220!6220U11(mark(X), Y) mark(U12(X)) >= a!6220!6220U12(mark(X)) mark(isNat(X)) >= a!6220!6220isNat(X) mark(U21(X)) >= a!6220!6220U21(mark(X)) mark(U31(X, Y)) >= a!6220!6220U31(mark(X), Y) mark(U32(X)) >= a!6220!6220U32(mark(X)) mark(U41(X, Y)) >= a!6220!6220U41(mark(X), Y) mark(U51(X, Y, Z)) >= a!6220!6220U51(mark(X), Y, Z) mark(U52(X, Y, Z)) >= a!6220!6220U52(mark(X), Y, Z) mark(plus(X, Y)) >= a!6220!6220plus(mark(X), mark(Y)) mark(U61(X)) >= a!6220!6220U61(mark(X)) mark(U71(X, Y, Z)) >= a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y, Z)) >= a!6220!6220U72(mark(X), Y, Z) mark(x(X, Y)) >= a!6220!6220x(mark(X), mark(Y)) mark(tt) >= tt mark(s(X)) >= s(mark(X)) mark(0) >= 0 a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X) >= U12(X) a!6220!6220isNat(X) >= isNat(X) a!6220!6220U21(X) >= U21(X) a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X) >= U32(X) a!6220!6220U41(X, Y) >= U41(X, Y) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220plus(X, Y) >= plus(X, Y) a!6220!6220U61(X) >= U61(X) a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y, Z) >= U72(X, Y, Z) a!6220!6220x(X, Y) >= x(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: a!6220!6220U41#(x_1,x_2) = a!6220!6220U41#(x_2) a!6220!6220U52#(x_1,x_2,x_3) = a!6220!6220U52#(x_2x_3) a!6220!6220U72#(x_1,x_2,x_3) = a!6220!6220U72#(x_2x_3) This leaves the following ordering requirements: a!6220!6220U41#(tt, X) >= mark#(X) a!6220!6220U52#(tt, X, Y) > mark#(Y) a!6220!6220U52#(tt, X, Y) >= mark#(X) a!6220!6220U72#(tt, X, Y) >= mark#(Y) a!6220!6220U72#(tt, X, Y) >= mark#(X) mark#(U11(X, Y)) >= mark#(X) mark#(U12(X)) >= mark#(X) mark#(U21(X)) >= mark#(X) mark#(U31(X, Y)) >= mark#(X) mark#(U32(X)) >= mark#(X) mark#(U41(X, Y)) >= a!6220!6220U41#(mark(X), Y) mark#(U41(X, Y)) >= mark#(X) mark#(U51(X, Y, Z)) >= mark#(X) mark#(U52(X, Y, Z)) >= a!6220!6220U52#(mark(X), Y, Z) mark#(U52(X, Y, Z)) >= mark#(X) mark#(plus(X, Y)) >= mark#(X) mark#(U61(X)) >= mark#(X) mark#(U72(X, Y, Z)) >= a!6220!6220U72#(mark(X), Y, Z) mark#(U72(X, Y, Z)) >= mark#(X) mark#(x(X, Y)) >= mark#(X) mark#(x(X, Y)) >= mark#(Y) mark#(s(X)) >= mark#(X) The following interpretation satisfies the requirements: 0 = 0 U11 = \y0y1.2y0 U12 = \y0.2y0 U21 = \y0.y0 U31 = \y0y1.y0 U32 = \y0.y0 U41 = \y0y1.3 + 2y0 + 2y1 U51 = \y0y1y2.y0 U52 = \y0y1y2.3 + 2y0 + 2y1 + 2y2 U61 = \y0.y0 U71 = \y0y1y2.0 U72 = \y0y1y2.3 + y0 + 2y1 + 2y2 a!6220!6220U11 = \y0y1.0 a!6220!6220U12 = \y0.0 a!6220!6220U21 = \y0.0 a!6220!6220U31 = \y0y1.0 a!6220!6220U32 = \y0.0 a!6220!6220U41 = \y0y1.0 a!6220!6220U41# = \y0y1.2 + 2y1 a!6220!6220U51 = \y0y1y2.0 a!6220!6220U52 = \y0y1y2.0 a!6220!6220U52# = \y0y1y2.3 + 2y1 + 2y2 a!6220!6220U61 = \y0.0 a!6220!6220U71 = \y0y1y2.0 a!6220!6220U72 = \y0y1y2.0 a!6220!6220U72# = \y0y1y2.2 + 2y1 + 2y2 a!6220!6220isNat = \y0.0 a!6220!6220plus = \y0y1.0 a!6220!6220x = \y0y1.0 isNat = \y0.0 mark = \y0.0 mark# = \y0.2 + 2y0 plus = \y0y1.y0 s = \y0.y0 tt = 0 x = \y0y1.y0 + y1 Using this interpretation, the requirements translate to: [[a!6220!6220U41#(tt, _x0)]] = 2 + 2x0 >= 2 + 2x0 = [[mark#(_x0)]] [[a!6220!6220U52#(tt, _x0, _x1)]] = 3 + 2x0 + 2x1 > 2 + 2x1 = [[mark#(_x1)]] [[a!6220!6220U52#(tt, _x0, _x1)]] = 3 + 2x0 + 2x1 > 2 + 2x0 = [[mark#(_x0)]] [[a!6220!6220U72#(tt, _x0, _x1)]] = 2 + 2x0 + 2x1 >= 2 + 2x1 = [[mark#(_x1)]] [[a!6220!6220U72#(tt, _x0, _x1)]] = 2 + 2x0 + 2x1 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(U11(_x0, _x1))]] = 2 + 4x0 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(U12(_x0))]] = 2 + 4x0 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(U21(_x0))]] = 2 + 2x0 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(U31(_x0, _x1))]] = 2 + 2x0 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(U32(_x0))]] = 2 + 2x0 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(U41(_x0, _x1))]] = 8 + 4x0 + 4x1 > 2 + 2x1 = [[a!6220!6220U41#(mark(_x0), _x1)]] [[mark#(U41(_x0, _x1))]] = 8 + 4x0 + 4x1 > 2 + 2x0 = [[mark#(_x0)]] [[mark#(U51(_x0, _x1, _x2))]] = 2 + 2x0 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(U52(_x0, _x1, _x2))]] = 8 + 4x0 + 4x1 + 4x2 > 3 + 2x1 + 2x2 = [[a!6220!6220U52#(mark(_x0), _x1, _x2)]] [[mark#(U52(_x0, _x1, _x2))]] = 8 + 4x0 + 4x1 + 4x2 > 2 + 2x0 = [[mark#(_x0)]] [[mark#(plus(_x0, _x1))]] = 2 + 2x0 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(U61(_x0))]] = 2 + 2x0 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(U72(_x0, _x1, _x2))]] = 8 + 2x0 + 4x1 + 4x2 > 2 + 2x1 + 2x2 = [[a!6220!6220U72#(mark(_x0), _x1, _x2)]] [[mark#(U72(_x0, _x1, _x2))]] = 8 + 2x0 + 4x1 + 4x2 > 2 + 2x0 = [[mark#(_x0)]] [[mark#(x(_x0, _x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 = [[mark#(_x0)]] [[mark#(x(_x0, _x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x1 = [[mark#(_x1)]] [[mark#(s(_x0))]] = 2 + 2x0 >= 2 + 2x0 = [[mark#(_x0)]] By the observations in [Kop12, Sec. 6.6], this reduction pair suffices; we may thus replace the dependency pair problem (P_16, R_0, minimal, formative) by (P_17, R_0, minimal, formative), where P_17 consists of: a!6220!6220U41#(tt, X) =#> mark#(X) a!6220!6220U72#(tt, X, Y) =#> mark#(Y) a!6220!6220U72#(tt, X, Y) =#> mark#(X) mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(X) mark#(U61(X)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) Thus, the original system is terminating if each of (P_1, 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 place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 1 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 2 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 3 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 4 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 5 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 6 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 7 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 8 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 9 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 10 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 11 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 12 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 * 13 : 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 This graph has the following strongly connected components: P_18: mark#(U11(X, Y)) =#> mark#(X) mark#(U12(X)) =#> mark#(X) mark#(U21(X)) =#> mark#(X) mark#(U31(X, Y)) =#> mark#(X) mark#(U32(X)) =#> mark#(X) mark#(U51(X, Y, Z)) =#> mark#(X) mark#(plus(X, Y)) =#> mark#(X) mark#(U61(X)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(X) mark#(x(X, Y)) =#> mark#(Y) mark#(s(X)) =#> mark#(X) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_17, R_0, m, f) by (P_18, R_0, m, f). Thus, the original system is terminating if each of (P_1, 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(mark#) = 1 Thus, we can orient the dependency pairs as follows: nu(mark#(U11(X, Y))) = U11(X, Y) |> X = nu(mark#(X)) nu(mark#(U12(X))) = U12(X) |> X = nu(mark#(X)) nu(mark#(U21(X))) = U21(X) |> X = nu(mark#(X)) nu(mark#(U31(X, Y))) = U31(X, Y) |> X = nu(mark#(X)) nu(mark#(U32(X))) = U32(X) |> X = nu(mark#(X)) nu(mark#(U51(X, Y, Z))) = U51(X, Y, Z) |> X = nu(mark#(X)) nu(mark#(plus(X, Y))) = plus(X, Y) |> X = nu(mark#(X)) nu(mark#(U61(X))) = U61(X) |> X = nu(mark#(X)) nu(mark#(x(X, Y))) = x(X, Y) |> X = nu(mark#(X)) nu(mark#(x(X, Y))) = x(X, Y) |> Y = nu(mark#(Y)) nu(mark#(s(X))) = s(X) |> X = nu(mark#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_18, 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 apply the subterm criterion with the following projection function: nu(a!6220!6220U11#) = 2 nu(a!6220!6220U31#) = 2 nu(a!6220!6220isNat#) = 1 Thus, we can orient the dependency pairs as follows: nu(a!6220!6220U11#(tt, X)) = X = X = nu(a!6220!6220isNat#(X)) nu(a!6220!6220U31#(tt, X)) = X = X = nu(a!6220!6220isNat#(X)) nu(a!6220!6220isNat#(plus(X, Y))) = plus(X, Y) |> Y = nu(a!6220!6220U11#(a!6220!6220isNat(X), Y)) nu(a!6220!6220isNat#(plus(X, Y))) = plus(X, Y) |> X = nu(a!6220!6220isNat#(X)) nu(a!6220!6220isNat#(s(X))) = s(X) |> X = nu(a!6220!6220isNat#(X)) nu(a!6220!6220isNat#(x(X, Y))) = x(X, Y) |> Y = nu(a!6220!6220U31#(a!6220!6220isNat(X), Y)) nu(a!6220!6220isNat#(x(X, Y))) = x(X, Y) |> X = nu(a!6220!6220isNat#(X)) By [Kop12, Thm. 7.35], we may replace a dependency pair problem (P_1, R_0, minimal, f) by (P_19, R_0, minimal, f), where P_19 contains: a!6220!6220U11#(tt, X) =#> a!6220!6220isNat#(X) a!6220!6220U31#(tt, X) =#> a!6220!6220isNat#(X) Thus, the original system is terminating if (P_19, R_0, minimal, formative) is finite. We consider the dependency pair problem (P_19, 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 : * 1 : This graph has no strongly connected components. By [Kop12, Thm. 7.31], this implies finiteness of the dependency pair problem. 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.