/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. !6220!6220 : [o * o] --> o U11 : [o * o] --> o U12 : [o * o] --> o U13 : [o] --> o U21 : [o * o * o] --> o U22 : [o * o * o] --> o U23 : [o * o * o] --> o U24 : [o * o * o] --> o U25 : [o * o] --> o U26 : [o] --> o U31 : [o * o] --> o U32 : [o * o] --> o U33 : [o] --> o U41 : [o * o * o] --> o U42 : [o * o * o] --> o U43 : [o * o * o] --> o U44 : [o * o * o] --> o U45 : [o * o] --> o U46 : [o] --> o U51 : [o * o * o] --> o U52 : [o * o * o] --> o U53 : [o * o * o] --> o U54 : [o * o * o] --> o U55 : [o * o] --> o U56 : [o] --> o U61 : [o * o] --> o U62 : [o * o] --> o U63 : [o] --> o U71 : [o * o * o] --> o U72 : [o * o] --> o U73 : [o * o] --> o U74 : [o] --> o U81 : [o * o] --> o U82 : [o * o] --> o U83 : [o] --> o U91 : [o * o] --> o U92 : [o] --> o a : [] --> o a!6220!6220!6220!6220 : [o * o] --> o a!6220!6220U11 : [o * o] --> o a!6220!6220U12 : [o * o] --> o a!6220!6220U13 : [o] --> o a!6220!6220U21 : [o * o * o] --> o a!6220!6220U22 : [o * o * o] --> o a!6220!6220U23 : [o * o * o] --> o a!6220!6220U24 : [o * o * o] --> o a!6220!6220U25 : [o * o] --> o a!6220!6220U26 : [o] --> o a!6220!6220U31 : [o * o] --> o a!6220!6220U32 : [o * o] --> o a!6220!6220U33 : [o] --> o a!6220!6220U41 : [o * o * o] --> o a!6220!6220U42 : [o * o * o] --> o a!6220!6220U43 : [o * o * o] --> o a!6220!6220U44 : [o * o * o] --> o a!6220!6220U45 : [o * o] --> o a!6220!6220U46 : [o] --> o a!6220!6220U51 : [o * o * o] --> o a!6220!6220U52 : [o * o * o] --> o a!6220!6220U53 : [o * o * o] --> o a!6220!6220U54 : [o * o * o] --> o a!6220!6220U55 : [o * o] --> o a!6220!6220U56 : [o] --> o a!6220!6220U61 : [o * o] --> o a!6220!6220U62 : [o * o] --> o a!6220!6220U63 : [o] --> o a!6220!6220U71 : [o * o * o] --> o a!6220!6220U72 : [o * o] --> o a!6220!6220U73 : [o * o] --> o a!6220!6220U74 : [o] --> o a!6220!6220U81 : [o * o] --> o a!6220!6220U82 : [o * o] --> o a!6220!6220U83 : [o] --> o a!6220!6220U91 : [o * o] --> o a!6220!6220U92 : [o] --> o a!6220!6220isList : [o] --> o a!6220!6220isNeList : [o] --> o a!6220!6220isNePal : [o] --> o a!6220!6220isPal : [o] --> o a!6220!6220isPalListKind : [o] --> o a!6220!6220isQid : [o] --> o e : [] --> o i : [] --> o isList : [o] --> o isNeList : [o] --> o isNePal : [o] --> o isPal : [o] --> o isPalListKind : [o] --> o isQid : [o] --> o mark : [o] --> o nil : [] --> o o : [] --> o tt : [] --> o u : [] --> o a!6220!6220!6220!6220(!6220!6220(X, Y), Z) => a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220!6220!6220(X, nil) => mark(X) a!6220!6220!6220!6220(nil, X) => mark(X) a!6220!6220U11(tt, X) => a!6220!6220U12(a!6220!6220isPalListKind(X), X) a!6220!6220U12(tt, X) => a!6220!6220U13(a!6220!6220isNeList(X)) a!6220!6220U13(tt) => tt a!6220!6220U21(tt, X, Y) => a!6220!6220U22(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U22(tt, X, Y) => a!6220!6220U23(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U23(tt, X, Y) => a!6220!6220U24(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U24(tt, X, Y) => a!6220!6220U25(a!6220!6220isList(X), Y) a!6220!6220U25(tt, X) => a!6220!6220U26(a!6220!6220isList(X)) a!6220!6220U26(tt) => tt a!6220!6220U31(tt, X) => a!6220!6220U32(a!6220!6220isPalListKind(X), X) a!6220!6220U32(tt, X) => a!6220!6220U33(a!6220!6220isQid(X)) a!6220!6220U33(tt) => tt a!6220!6220U41(tt, X, Y) => a!6220!6220U42(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U42(tt, X, Y) => a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U43(tt, X, Y) => a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U44(tt, X, Y) => a!6220!6220U45(a!6220!6220isList(X), Y) a!6220!6220U45(tt, X) => a!6220!6220U46(a!6220!6220isNeList(X)) a!6220!6220U46(tt) => tt a!6220!6220U51(tt, X, Y) => a!6220!6220U52(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U52(tt, X, Y) => a!6220!6220U53(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U53(tt, X, Y) => a!6220!6220U54(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U54(tt, X, Y) => a!6220!6220U55(a!6220!6220isNeList(X), Y) a!6220!6220U55(tt, X) => a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U56(tt) => tt a!6220!6220U61(tt, X) => a!6220!6220U62(a!6220!6220isPalListKind(X), X) a!6220!6220U62(tt, X) => a!6220!6220U63(a!6220!6220isQid(X)) a!6220!6220U63(tt) => tt a!6220!6220U71(tt, X, Y) => a!6220!6220U72(a!6220!6220isPalListKind(X), Y) a!6220!6220U72(tt, X) => a!6220!6220U73(a!6220!6220isPal(X), X) a!6220!6220U73(tt, X) => a!6220!6220U74(a!6220!6220isPalListKind(X)) a!6220!6220U74(tt) => tt a!6220!6220U81(tt, X) => a!6220!6220U82(a!6220!6220isPalListKind(X), X) a!6220!6220U82(tt, X) => a!6220!6220U83(a!6220!6220isNePal(X)) a!6220!6220U83(tt) => tt a!6220!6220U91(tt, X) => a!6220!6220U92(a!6220!6220isPalListKind(X)) a!6220!6220U92(tt) => tt a!6220!6220isList(X) => a!6220!6220U11(a!6220!6220isPalListKind(X), X) a!6220!6220isList(nil) => tt a!6220!6220isList(!6220!6220(X, Y)) => a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) => a!6220!6220U31(a!6220!6220isPalListKind(X), X) a!6220!6220isNeList(!6220!6220(X, Y)) => a!6220!6220U41(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(!6220!6220(X, Y)) => a!6220!6220U51(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNePal(X) => a!6220!6220U61(a!6220!6220isPalListKind(X), X) a!6220!6220isNePal(!6220!6220(X, !6220!6220(Y, X))) => a!6220!6220U71(a!6220!6220isQid(X), X, Y) a!6220!6220isPal(X) => a!6220!6220U81(a!6220!6220isPalListKind(X), X) a!6220!6220isPal(nil) => tt a!6220!6220isPalListKind(a) => tt a!6220!6220isPalListKind(e) => tt a!6220!6220isPalListKind(i) => tt a!6220!6220isPalListKind(nil) => tt a!6220!6220isPalListKind(o) => tt a!6220!6220isPalListKind(u) => tt a!6220!6220isPalListKind(!6220!6220(X, Y)) => a!6220!6220U91(a!6220!6220isPalListKind(X), Y) a!6220!6220isQid(a) => tt a!6220!6220isQid(e) => tt a!6220!6220isQid(i) => tt a!6220!6220isQid(o) => tt a!6220!6220isQid(u) => tt mark(!6220!6220(X, Y)) => a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) => a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) => a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) => a!6220!6220isPalListKind(X) mark(U13(X)) => a!6220!6220U13(mark(X)) mark(isNeList(X)) => a!6220!6220isNeList(X) mark(U21(X, Y, Z)) => a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) => a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) => a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) => a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) => a!6220!6220U25(mark(X), Y) mark(isList(X)) => a!6220!6220isList(X) mark(U26(X)) => a!6220!6220U26(mark(X)) mark(U31(X, Y)) => a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) => a!6220!6220U32(mark(X), Y) mark(U33(X)) => a!6220!6220U33(mark(X)) mark(isQid(X)) => a!6220!6220isQid(X) mark(U41(X, Y, Z)) => a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) => a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) => a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) => a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) => a!6220!6220U45(mark(X), Y) mark(U46(X)) => a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) => a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) => a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) => a!6220!6220U55(mark(X), Y) mark(U56(X)) => a!6220!6220U56(mark(X)) mark(U61(X, Y)) => a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) => a!6220!6220U62(mark(X), Y) mark(U63(X)) => a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) => a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) => a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) => a!6220!6220U73(mark(X), Y) mark(isPal(X)) => a!6220!6220isPal(X) mark(U74(X)) => a!6220!6220U74(mark(X)) mark(U81(X, Y)) => a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) => a!6220!6220U82(mark(X), Y) mark(U83(X)) => a!6220!6220U83(mark(X)) mark(isNePal(X)) => a!6220!6220isNePal(X) mark(U91(X, Y)) => a!6220!6220U91(mark(X), Y) mark(U92(X)) => a!6220!6220U92(mark(X)) mark(nil) => nil mark(tt) => tt mark(a) => a mark(e) => e mark(i) => i mark(o) => o mark(u) => u a!6220!6220!6220!6220(X, Y) => !6220!6220(X, Y) a!6220!6220U11(X, Y) => U11(X, Y) a!6220!6220U12(X, Y) => U12(X, Y) a!6220!6220isPalListKind(X) => isPalListKind(X) a!6220!6220U13(X) => U13(X) a!6220!6220isNeList(X) => isNeList(X) a!6220!6220U21(X, Y, Z) => U21(X, Y, Z) a!6220!6220U22(X, Y, Z) => U22(X, Y, Z) a!6220!6220U23(X, Y, Z) => U23(X, Y, Z) a!6220!6220U24(X, Y, Z) => U24(X, Y, Z) a!6220!6220U25(X, Y) => U25(X, Y) a!6220!6220isList(X) => isList(X) a!6220!6220U26(X) => U26(X) a!6220!6220U31(X, Y) => U31(X, Y) a!6220!6220U32(X, Y) => U32(X, Y) a!6220!6220U33(X) => U33(X) a!6220!6220isQid(X) => isQid(X) a!6220!6220U41(X, Y, Z) => U41(X, Y, Z) a!6220!6220U42(X, Y, Z) => U42(X, Y, Z) a!6220!6220U43(X, Y, Z) => U43(X, Y, Z) a!6220!6220U44(X, Y, Z) => U44(X, Y, Z) a!6220!6220U45(X, Y) => U45(X, Y) a!6220!6220U46(X) => U46(X) a!6220!6220U51(X, Y, Z) => U51(X, Y, Z) a!6220!6220U52(X, Y, Z) => U52(X, Y, Z) a!6220!6220U53(X, Y, Z) => U53(X, Y, Z) a!6220!6220U54(X, Y, Z) => U54(X, Y, Z) a!6220!6220U55(X, Y) => U55(X, Y) a!6220!6220U56(X) => U56(X) a!6220!6220U61(X, Y) => U61(X, Y) a!6220!6220U62(X, Y) => U62(X, Y) a!6220!6220U63(X) => U63(X) a!6220!6220U71(X, Y, Z) => U71(X, Y, Z) a!6220!6220U72(X, Y) => U72(X, Y) a!6220!6220U73(X, Y) => U73(X, Y) a!6220!6220isPal(X) => isPal(X) a!6220!6220U74(X) => U74(X) a!6220!6220U81(X, Y) => U81(X, Y) a!6220!6220U82(X, Y) => U82(X, Y) a!6220!6220U83(X) => U83(X) a!6220!6220isNePal(X) => isNePal(X) a!6220!6220U91(X, Y) => U91(X, Y) a!6220!6220U92(X) => U92(X) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220!6220!6220(X, nil) >? mark(X) a!6220!6220!6220!6220(nil, X) >? mark(X) a!6220!6220U11(tt, X) >? a!6220!6220U12(a!6220!6220isPalListKind(X), X) a!6220!6220U12(tt, X) >? a!6220!6220U13(a!6220!6220isNeList(X)) a!6220!6220U13(tt) >? tt a!6220!6220U21(tt, X, Y) >? a!6220!6220U22(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U22(tt, X, Y) >? a!6220!6220U23(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U23(tt, X, Y) >? a!6220!6220U24(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U24(tt, X, Y) >? a!6220!6220U25(a!6220!6220isList(X), Y) a!6220!6220U25(tt, X) >? a!6220!6220U26(a!6220!6220isList(X)) a!6220!6220U26(tt) >? tt a!6220!6220U31(tt, X) >? a!6220!6220U32(a!6220!6220isPalListKind(X), X) a!6220!6220U32(tt, X) >? a!6220!6220U33(a!6220!6220isQid(X)) a!6220!6220U33(tt) >? tt a!6220!6220U41(tt, X, Y) >? a!6220!6220U42(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U42(tt, X, Y) >? a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U43(tt, X, Y) >? a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U44(tt, X, Y) >? a!6220!6220U45(a!6220!6220isList(X), Y) a!6220!6220U45(tt, X) >? a!6220!6220U46(a!6220!6220isNeList(X)) a!6220!6220U46(tt) >? tt a!6220!6220U51(tt, X, Y) >? a!6220!6220U52(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U52(tt, X, Y) >? a!6220!6220U53(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U53(tt, X, Y) >? a!6220!6220U54(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U54(tt, X, Y) >? a!6220!6220U55(a!6220!6220isNeList(X), Y) a!6220!6220U55(tt, X) >? a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U56(tt) >? tt a!6220!6220U61(tt, X) >? a!6220!6220U62(a!6220!6220isPalListKind(X), X) a!6220!6220U62(tt, X) >? a!6220!6220U63(a!6220!6220isQid(X)) a!6220!6220U63(tt) >? tt a!6220!6220U71(tt, X, Y) >? a!6220!6220U72(a!6220!6220isPalListKind(X), Y) a!6220!6220U72(tt, X) >? a!6220!6220U73(a!6220!6220isPal(X), X) a!6220!6220U73(tt, X) >? a!6220!6220U74(a!6220!6220isPalListKind(X)) a!6220!6220U74(tt) >? tt a!6220!6220U81(tt, X) >? a!6220!6220U82(a!6220!6220isPalListKind(X), X) a!6220!6220U82(tt, X) >? a!6220!6220U83(a!6220!6220isNePal(X)) a!6220!6220U83(tt) >? tt a!6220!6220U91(tt, X) >? a!6220!6220U92(a!6220!6220isPalListKind(X)) a!6220!6220U92(tt) >? tt a!6220!6220isList(X) >? a!6220!6220U11(a!6220!6220isPalListKind(X), X) a!6220!6220isList(nil) >? tt a!6220!6220isList(!6220!6220(X, Y)) >? a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) a!6220!6220isNeList(!6220!6220(X, Y)) >? a!6220!6220U41(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(!6220!6220(X, Y)) >? a!6220!6220U51(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNePal(X) >? a!6220!6220U61(a!6220!6220isPalListKind(X), X) a!6220!6220isNePal(!6220!6220(X, !6220!6220(Y, X))) >? a!6220!6220U71(a!6220!6220isQid(X), X, Y) a!6220!6220isPal(X) >? a!6220!6220U81(a!6220!6220isPalListKind(X), X) a!6220!6220isPal(nil) >? tt a!6220!6220isPalListKind(a) >? tt a!6220!6220isPalListKind(e) >? tt a!6220!6220isPalListKind(i) >? tt a!6220!6220isPalListKind(nil) >? tt a!6220!6220isPalListKind(o) >? tt a!6220!6220isPalListKind(u) >? tt a!6220!6220isPalListKind(!6220!6220(X, Y)) >? a!6220!6220U91(a!6220!6220isPalListKind(X), Y) a!6220!6220isQid(a) >? tt a!6220!6220isQid(e) >? tt a!6220!6220isQid(i) >? tt a!6220!6220isQid(o) >? tt a!6220!6220isQid(u) >? tt mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) about to try horpo We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[U13(x_1)]] = x_1 [[U26(x_1)]] = x_1 [[U33(x_1)]] = x_1 [[U56(x_1)]] = x_1 [[U63(x_1)]] = x_1 [[U74(x_1)]] = x_1 [[U83(x_1)]] = x_1 [[U92(x_1)]] = x_1 [[a!6220!6220U13(x_1)]] = x_1 [[a!6220!6220U26(x_1)]] = x_1 [[a!6220!6220U33(x_1)]] = x_1 [[a!6220!6220U56(x_1)]] = x_1 [[a!6220!6220U63(x_1)]] = x_1 [[a!6220!6220U74(x_1)]] = x_1 [[a!6220!6220U83(x_1)]] = x_1 [[a!6220!6220U92(x_1)]] = x_1 [[mark(x_1)]] = x_1 We choose Lex = {!6220!6220, a!6220!6220!6220!6220} and Mul = {U11, U12, U21, U22, U23, U24, U25, U31, U32, U41, U42, U43, U44, U45, U46, U51, U52, U53, U54, U55, U61, U62, U71, U72, U73, U81, U82, U91, a, a!6220!6220U11, a!6220!6220U12, a!6220!6220U21, a!6220!6220U22, a!6220!6220U23, a!6220!6220U24, a!6220!6220U25, a!6220!6220U31, a!6220!6220U32, a!6220!6220U41, a!6220!6220U42, a!6220!6220U43, a!6220!6220U44, a!6220!6220U45, a!6220!6220U46, a!6220!6220U51, a!6220!6220U52, a!6220!6220U53, a!6220!6220U54, a!6220!6220U55, a!6220!6220U61, a!6220!6220U62, a!6220!6220U71, a!6220!6220U72, a!6220!6220U73, a!6220!6220U81, a!6220!6220U82, a!6220!6220U91, a!6220!6220isList, a!6220!6220isNeList, a!6220!6220isNePal, a!6220!6220isPal, a!6220!6220isPalListKind, a!6220!6220isQid, e, i, isList, isNeList, isNePal, isPal, isPalListKind, isQid, nil, o, tt, u}, and the following precedence: i > !6220!6220 = a!6220!6220!6220!6220 > U41 = a!6220!6220U41 > U42 = a!6220!6220U42 > U43 = a!6220!6220U43 > U51 = a!6220!6220U51 > nil > u > U44 = a!6220!6220U44 > U21 = a!6220!6220U21 > U22 = a!6220!6220U22 > a > U52 = a!6220!6220U52 > U23 = a!6220!6220U23 > U24 = a!6220!6220U24 > e = o = tt > U25 = a!6220!6220U25 > U45 = a!6220!6220U45 > U71 = a!6220!6220U71 > U53 = a!6220!6220U53 > U91 = a!6220!6220U91 > U72 = a!6220!6220U72 > a!6220!6220isPal = isPal > U81 = a!6220!6220U81 > U46 = a!6220!6220U46 > U54 = a!6220!6220U54 > U55 = a!6220!6220U55 > a!6220!6220isList = isList > U11 = a!6220!6220U11 > U12 = a!6220!6220U12 > a!6220!6220isNeList = isNeList > U31 = a!6220!6220U31 > U82 = a!6220!6220U82 > U32 = a!6220!6220U32 > a!6220!6220isNePal = isNePal > U61 = a!6220!6220U61 > U73 = a!6220!6220U73 > a!6220!6220isPalListKind = isPalListKind > U62 = a!6220!6220U62 > a!6220!6220isQid = isQid Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >= a!6220!6220!6220!6220(X, a!6220!6220!6220!6220(Y, Z)) a!6220!6220!6220!6220(X, nil) >= X a!6220!6220!6220!6220(nil, X) >= X a!6220!6220U11(tt, X) > a!6220!6220U12(a!6220!6220isPalListKind(X), X) a!6220!6220U12(tt, X) >= a!6220!6220isNeList(X) tt >= tt a!6220!6220U21(tt, X, Y) >= a!6220!6220U22(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U22(tt, X, Y) > a!6220!6220U23(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U23(tt, X, Y) >= a!6220!6220U24(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U24(tt, X, Y) >= a!6220!6220U25(a!6220!6220isList(X), Y) a!6220!6220U25(tt, X) >= a!6220!6220isList(X) tt >= tt a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isPalListKind(X), X) a!6220!6220U32(tt, X) >= a!6220!6220isQid(X) tt >= tt a!6220!6220U41(tt, X, Y) >= a!6220!6220U42(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U42(tt, X, Y) >= a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U43(tt, X, Y) >= a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U44(tt, X, Y) >= a!6220!6220U45(a!6220!6220isList(X), Y) a!6220!6220U45(tt, X) >= a!6220!6220U46(a!6220!6220isNeList(X)) a!6220!6220U46(tt) > tt a!6220!6220U51(tt, X, Y) > a!6220!6220U52(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U52(tt, X, Y) > a!6220!6220U53(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U53(tt, X, Y) >= a!6220!6220U54(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U54(tt, X, Y) > a!6220!6220U55(a!6220!6220isNeList(X), Y) a!6220!6220U55(tt, X) >= a!6220!6220isList(X) tt >= tt a!6220!6220U61(tt, X) >= a!6220!6220U62(a!6220!6220isPalListKind(X), X) a!6220!6220U62(tt, X) >= a!6220!6220isQid(X) tt >= tt a!6220!6220U71(tt, X, Y) > a!6220!6220U72(a!6220!6220isPalListKind(X), Y) a!6220!6220U72(tt, X) > a!6220!6220U73(a!6220!6220isPal(X), X) a!6220!6220U73(tt, X) >= a!6220!6220isPalListKind(X) tt >= tt a!6220!6220U81(tt, X) >= a!6220!6220U82(a!6220!6220isPalListKind(X), X) a!6220!6220U82(tt, X) >= a!6220!6220isNePal(X) tt >= tt a!6220!6220U91(tt, X) >= a!6220!6220isPalListKind(X) tt >= tt a!6220!6220isList(X) > a!6220!6220U11(a!6220!6220isPalListKind(X), X) a!6220!6220isList(nil) > tt a!6220!6220isList(!6220!6220(X, Y)) >= a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) >= a!6220!6220U31(a!6220!6220isPalListKind(X), X) a!6220!6220isNeList(!6220!6220(X, Y)) > a!6220!6220U41(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(!6220!6220(X, Y)) >= a!6220!6220U51(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNePal(X) > a!6220!6220U61(a!6220!6220isPalListKind(X), X) a!6220!6220isNePal(!6220!6220(X, !6220!6220(Y, X))) >= a!6220!6220U71(a!6220!6220isQid(X), X, Y) a!6220!6220isPal(X) > a!6220!6220U81(a!6220!6220isPalListKind(X), X) a!6220!6220isPal(nil) > tt a!6220!6220isPalListKind(a) >= tt a!6220!6220isPalListKind(e) > tt a!6220!6220isPalListKind(i) > tt a!6220!6220isPalListKind(nil) >= tt a!6220!6220isPalListKind(o) > tt a!6220!6220isPalListKind(u) >= tt a!6220!6220isPalListKind(!6220!6220(X, Y)) > a!6220!6220U91(a!6220!6220isPalListKind(X), Y) a!6220!6220isQid(a) > tt a!6220!6220isQid(e) >= tt a!6220!6220isQid(i) > tt a!6220!6220isQid(o) > tt a!6220!6220isQid(u) > tt !6220!6220(X, Y) >= a!6220!6220!6220!6220(X, Y) U11(X, Y) >= a!6220!6220U11(X, Y) U12(X, Y) >= a!6220!6220U12(X, Y) isPalListKind(X) >= a!6220!6220isPalListKind(X) X >= X isNeList(X) >= a!6220!6220isNeList(X) U21(X, Y, Z) >= a!6220!6220U21(X, Y, Z) U22(X, Y, Z) >= a!6220!6220U22(X, Y, Z) U23(X, Y, Z) >= a!6220!6220U23(X, Y, Z) U24(X, Y, Z) >= a!6220!6220U24(X, Y, Z) U25(X, Y) >= a!6220!6220U25(X, Y) isList(X) >= a!6220!6220isList(X) X >= X U31(X, Y) >= a!6220!6220U31(X, Y) U32(X, Y) >= a!6220!6220U32(X, Y) X >= X isQid(X) >= a!6220!6220isQid(X) U41(X, Y, Z) >= a!6220!6220U41(X, Y, Z) U42(X, Y, Z) >= a!6220!6220U42(X, Y, Z) U43(X, Y, Z) >= a!6220!6220U43(X, Y, Z) U44(X, Y, Z) >= a!6220!6220U44(X, Y, Z) U45(X, Y) >= a!6220!6220U45(X, Y) U46(X) >= a!6220!6220U46(X) U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) U53(X, Y, Z) >= a!6220!6220U53(X, Y, Z) U54(X, Y, Z) >= a!6220!6220U54(X, Y, Z) U55(X, Y) >= a!6220!6220U55(X, Y) X >= X U61(X, Y) >= a!6220!6220U61(X, Y) U62(X, Y) >= a!6220!6220U62(X, Y) X >= X U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y) >= a!6220!6220U72(X, Y) U73(X, Y) >= a!6220!6220U73(X, Y) isPal(X) >= a!6220!6220isPal(X) X >= X U81(X, Y) >= a!6220!6220U81(X, Y) U82(X, Y) >= a!6220!6220U82(X, Y) X >= X isNePal(X) >= a!6220!6220isNePal(X) U91(X, Y) >= a!6220!6220U91(X, Y) X >= X nil >= nil tt >= tt a >= a e >= e i >= i o >= o u >= u a!6220!6220!6220!6220(X, Y) >= !6220!6220(X, Y) a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X, Y) >= U12(X, Y) a!6220!6220isPalListKind(X) >= isPalListKind(X) X >= X a!6220!6220isNeList(X) >= isNeList(X) a!6220!6220U21(X, Y, Z) >= U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >= U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >= U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >= U24(X, Y, Z) a!6220!6220U25(X, Y) >= U25(X, Y) a!6220!6220isList(X) >= isList(X) X >= X a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X, Y) >= U32(X, Y) X >= X a!6220!6220isQid(X) >= isQid(X) a!6220!6220U41(X, Y, Z) >= U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >= U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >= U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >= U44(X, Y, Z) a!6220!6220U45(X, Y) >= U45(X, Y) a!6220!6220U46(X) >= U46(X) a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >= U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >= U54(X, Y, Z) a!6220!6220U55(X, Y) >= U55(X, Y) X >= X a!6220!6220U61(X, Y) >= U61(X, Y) a!6220!6220U62(X, Y) >= U62(X, Y) X >= X a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y) >= U72(X, Y) a!6220!6220U73(X, Y) >= U73(X, Y) a!6220!6220isPal(X) >= isPal(X) X >= X a!6220!6220U81(X, Y) >= U81(X, Y) a!6220!6220U82(X, Y) >= U82(X, Y) X >= X a!6220!6220isNePal(X) >= isNePal(X) a!6220!6220U91(X, Y) >= U91(X, Y) X >= X With these choices, we have: 1] a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >= a!6220!6220!6220!6220(X, a!6220!6220!6220!6220(Y, Z)) because [2], by (Star) 2] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= a!6220!6220!6220!6220(X, a!6220!6220!6220!6220(Y, Z)) because [3], [6] and [8], by (Stat) 3] !6220!6220(X, Y) > X because [4], by definition 4] !6220!6220*(X, Y) >= X because [5], by (Select) 5] X >= X by (Meta) 6] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= X because [7], by (Select) 7] !6220!6220(X, Y) >= X because [4], by (Star) 8] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= a!6220!6220!6220!6220(Y, Z) because [9], [12] and [14], by (Stat) 9] !6220!6220(X, Y) > Y because [10], by definition 10] !6220!6220*(X, Y) >= Y because [11], by (Select) 11] Y >= Y by (Meta) 12] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= Y because [13], by (Select) 13] !6220!6220(X, Y) >= Y because [10], by (Star) 14] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= Z because [15], by (Select) 15] Z >= Z by (Meta) 16] a!6220!6220!6220!6220(X, nil) >= X because [17], by (Star) 17] a!6220!6220!6220!6220*(X, nil) >= X because [5], by (Select) 18] a!6220!6220!6220!6220(nil, X) >= X because [19], by (Star) 19] a!6220!6220!6220!6220*(nil, X) >= X because [5], by (Select) 20] a!6220!6220U11(tt, X) > a!6220!6220U12(a!6220!6220isPalListKind(X), X) because [21], by definition 21] a!6220!6220U11*(tt, X) >= a!6220!6220U12(a!6220!6220isPalListKind(X), X) because a!6220!6220U11 > a!6220!6220U12, [22] and [23], by (Copy) 22] a!6220!6220U11*(tt, X) >= a!6220!6220isPalListKind(X) because a!6220!6220U11 > a!6220!6220isPalListKind and [23], by (Copy) 23] a!6220!6220U11*(tt, X) >= X because [24], by (Select) 24] X >= X by (Meta) 25] a!6220!6220U12(tt, X) >= a!6220!6220isNeList(X) because [26], by (Star) 26] a!6220!6220U12*(tt, X) >= a!6220!6220isNeList(X) because a!6220!6220U12 > a!6220!6220isNeList and [27], by (Copy) 27] a!6220!6220U12*(tt, X) >= X because [24], by (Select) 28] tt >= tt by (Fun) 29] a!6220!6220U21(tt, X, Y) >= a!6220!6220U22(a!6220!6220isPalListKind(X), X, Y) because [30], by (Star) 30] a!6220!6220U21*(tt, X, Y) >= a!6220!6220U22(a!6220!6220isPalListKind(X), X, Y) because a!6220!6220U21 > a!6220!6220U22, [31], [32] and [34], by (Copy) 31] a!6220!6220U21*(tt, X, Y) >= a!6220!6220isPalListKind(X) because a!6220!6220U21 > a!6220!6220isPalListKind and [32], by (Copy) 32] a!6220!6220U21*(tt, X, Y) >= X because [33], by (Select) 33] X >= X by (Meta) 34] a!6220!6220U21*(tt, X, Y) >= Y because [35], by (Select) 35] Y >= Y by (Meta) 36] a!6220!6220U22(tt, X, Y) > a!6220!6220U23(a!6220!6220isPalListKind(Y), X, Y) because [37], by definition 37] a!6220!6220U22*(tt, X, Y) >= a!6220!6220U23(a!6220!6220isPalListKind(Y), X, Y) because a!6220!6220U22 > a!6220!6220U23, [38], [40] and [39], by (Copy) 38] a!6220!6220U22*(tt, X, Y) >= a!6220!6220isPalListKind(Y) because a!6220!6220U22 > a!6220!6220isPalListKind and [39], by (Copy) 39] a!6220!6220U22*(tt, X, Y) >= Y because [35], by (Select) 40] a!6220!6220U22*(tt, X, Y) >= X because [33], by (Select) 41] a!6220!6220U23(tt, X, Y) >= a!6220!6220U24(a!6220!6220isPalListKind(Y), X, Y) because [42], by (Star) 42] a!6220!6220U23*(tt, X, Y) >= a!6220!6220U24(a!6220!6220isPalListKind(Y), X, Y) because a!6220!6220U23 > a!6220!6220U24, [43], [45] and [44], by (Copy) 43] a!6220!6220U23*(tt, X, Y) >= a!6220!6220isPalListKind(Y) because a!6220!6220U23 > a!6220!6220isPalListKind and [44], by (Copy) 44] a!6220!6220U23*(tt, X, Y) >= Y because [35], by (Select) 45] a!6220!6220U23*(tt, X, Y) >= X because [33], by (Select) 46] a!6220!6220U24(tt, X, Y) >= a!6220!6220U25(a!6220!6220isList(X), Y) because [47], by (Star) 47] a!6220!6220U24*(tt, X, Y) >= a!6220!6220U25(a!6220!6220isList(X), Y) because a!6220!6220U24 > a!6220!6220U25, [48] and [50], by (Copy) 48] a!6220!6220U24*(tt, X, Y) >= a!6220!6220isList(X) because a!6220!6220U24 > a!6220!6220isList and [49], by (Copy) 49] a!6220!6220U24*(tt, X, Y) >= X because [33], by (Select) 50] a!6220!6220U24*(tt, X, Y) >= Y because [35], by (Select) 51] a!6220!6220U25(tt, X) >= a!6220!6220isList(X) because [52], by (Star) 52] a!6220!6220U25*(tt, X) >= a!6220!6220isList(X) because a!6220!6220U25 > a!6220!6220isList and [53], by (Copy) 53] a!6220!6220U25*(tt, X) >= X because [35], by (Select) 54] tt >= tt by (Fun) 55] a!6220!6220U31(tt, X) >= a!6220!6220U32(a!6220!6220isPalListKind(X), X) because [56], by (Star) 56] a!6220!6220U31*(tt, X) >= a!6220!6220U32(a!6220!6220isPalListKind(X), X) because a!6220!6220U31 > a!6220!6220U32, [57] and [58], by (Copy) 57] a!6220!6220U31*(tt, X) >= a!6220!6220isPalListKind(X) because a!6220!6220U31 > a!6220!6220isPalListKind and [58], by (Copy) 58] a!6220!6220U31*(tt, X) >= X because [24], by (Select) 59] a!6220!6220U32(tt, X) >= a!6220!6220isQid(X) because [60], by (Star) 60] a!6220!6220U32*(tt, X) >= a!6220!6220isQid(X) because a!6220!6220U32 > a!6220!6220isQid and [61], by (Copy) 61] a!6220!6220U32*(tt, X) >= X because [24], by (Select) 62] tt >= tt by (Fun) 63] a!6220!6220U41(tt, X, Y) >= a!6220!6220U42(a!6220!6220isPalListKind(X), X, Y) because [64], by (Star) 64] a!6220!6220U41*(tt, X, Y) >= a!6220!6220U42(a!6220!6220isPalListKind(X), X, Y) because a!6220!6220U41 > a!6220!6220U42, [65], [66] and [67], by (Copy) 65] a!6220!6220U41*(tt, X, Y) >= a!6220!6220isPalListKind(X) because a!6220!6220U41 > a!6220!6220isPalListKind and [66], by (Copy) 66] a!6220!6220U41*(tt, X, Y) >= X because [33], by (Select) 67] a!6220!6220U41*(tt, X, Y) >= Y because [35], by (Select) 68] a!6220!6220U42(tt, X, Y) >= a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) because [69], by (Star) 69] a!6220!6220U42*(tt, X, Y) >= a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) because a!6220!6220U42 > a!6220!6220U43, [70], [72] and [71], by (Copy) 70] a!6220!6220U42*(tt, X, Y) >= a!6220!6220isPalListKind(Y) because a!6220!6220U42 > a!6220!6220isPalListKind and [71], by (Copy) 71] a!6220!6220U42*(tt, X, Y) >= Y because [35], by (Select) 72] a!6220!6220U42*(tt, X, Y) >= X because [33], by (Select) 73] a!6220!6220U43(tt, X, Y) >= a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) because [74], by (Star) 74] a!6220!6220U43*(tt, X, Y) >= a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) because a!6220!6220U43 > a!6220!6220U44, [75], [77] and [76], by (Copy) 75] a!6220!6220U43*(tt, X, Y) >= a!6220!6220isPalListKind(Y) because a!6220!6220U43 > a!6220!6220isPalListKind and [76], by (Copy) 76] a!6220!6220U43*(tt, X, Y) >= Y because [35], by (Select) 77] a!6220!6220U43*(tt, X, Y) >= X because [33], by (Select) 78] a!6220!6220U44(tt, X, Y) >= a!6220!6220U45(a!6220!6220isList(X), Y) because [79], by (Star) 79] a!6220!6220U44*(tt, X, Y) >= a!6220!6220U45(a!6220!6220isList(X), Y) because a!6220!6220U44 > a!6220!6220U45, [80] and [82], by (Copy) 80] a!6220!6220U44*(tt, X, Y) >= a!6220!6220isList(X) because a!6220!6220U44 > a!6220!6220isList and [81], by (Copy) 81] a!6220!6220U44*(tt, X, Y) >= X because [33], by (Select) 82] a!6220!6220U44*(tt, X, Y) >= Y because [35], by (Select) 83] a!6220!6220U45(tt, X) >= a!6220!6220U46(a!6220!6220isNeList(X)) because [84], by (Star) 84] a!6220!6220U45*(tt, X) >= a!6220!6220U46(a!6220!6220isNeList(X)) because a!6220!6220U45 > a!6220!6220U46 and [85], by (Copy) 85] a!6220!6220U45*(tt, X) >= a!6220!6220isNeList(X) because a!6220!6220U45 > a!6220!6220isNeList and [86], by (Copy) 86] a!6220!6220U45*(tt, X) >= X because [35], by (Select) 87] a!6220!6220U46(tt) > tt because [88], by definition 88] a!6220!6220U46*(tt) >= tt because [62], by (Select) 89] a!6220!6220U51(tt, X, Y) > a!6220!6220U52(a!6220!6220isPalListKind(X), X, Y) because [90], by definition 90] a!6220!6220U51*(tt, X, Y) >= a!6220!6220U52(a!6220!6220isPalListKind(X), X, Y) because a!6220!6220U51 > a!6220!6220U52, [91], [92] and [93], by (Copy) 91] a!6220!6220U51*(tt, X, Y) >= a!6220!6220isPalListKind(X) because a!6220!6220U51 > a!6220!6220isPalListKind and [92], by (Copy) 92] a!6220!6220U51*(tt, X, Y) >= X because [33], by (Select) 93] a!6220!6220U51*(tt, X, Y) >= Y because [35], by (Select) 94] a!6220!6220U52(tt, X, Y) > a!6220!6220U53(a!6220!6220isPalListKind(Y), X, Y) because [95], by definition 95] a!6220!6220U52*(tt, X, Y) >= a!6220!6220U53(a!6220!6220isPalListKind(Y), X, Y) because a!6220!6220U52 > a!6220!6220U53, [96], [98] and [97], by (Copy) 96] a!6220!6220U52*(tt, X, Y) >= a!6220!6220isPalListKind(Y) because a!6220!6220U52 > a!6220!6220isPalListKind and [97], by (Copy) 97] a!6220!6220U52*(tt, X, Y) >= Y because [35], by (Select) 98] a!6220!6220U52*(tt, X, Y) >= X because [33], by (Select) 99] a!6220!6220U53(tt, X, Y) >= a!6220!6220U54(a!6220!6220isPalListKind(Y), X, Y) because [100], by (Star) 100] a!6220!6220U53*(tt, X, Y) >= a!6220!6220U54(a!6220!6220isPalListKind(Y), X, Y) because a!6220!6220U53 > a!6220!6220U54, [101], [103] and [102], by (Copy) 101] a!6220!6220U53*(tt, X, Y) >= a!6220!6220isPalListKind(Y) because a!6220!6220U53 > a!6220!6220isPalListKind and [102], by (Copy) 102] a!6220!6220U53*(tt, X, Y) >= Y because [35], by (Select) 103] a!6220!6220U53*(tt, X, Y) >= X because [33], by (Select) 104] a!6220!6220U54(tt, X, Y) > a!6220!6220U55(a!6220!6220isNeList(X), Y) because [105], by definition 105] a!6220!6220U54*(tt, X, Y) >= a!6220!6220U55(a!6220!6220isNeList(X), Y) because a!6220!6220U54 > a!6220!6220U55, [106] and [108], by (Copy) 106] a!6220!6220U54*(tt, X, Y) >= a!6220!6220isNeList(X) because a!6220!6220U54 > a!6220!6220isNeList and [107], by (Copy) 107] a!6220!6220U54*(tt, X, Y) >= X because [33], by (Select) 108] a!6220!6220U54*(tt, X, Y) >= Y because [35], by (Select) 109] a!6220!6220U55(tt, X) >= a!6220!6220isList(X) because [110], by (Star) 110] a!6220!6220U55*(tt, X) >= a!6220!6220isList(X) because a!6220!6220U55 > a!6220!6220isList and [111], by (Copy) 111] a!6220!6220U55*(tt, X) >= X because [35], by (Select) 112] tt >= tt by (Fun) 113] a!6220!6220U61(tt, X) >= a!6220!6220U62(a!6220!6220isPalListKind(X), X) because [114], by (Star) 114] a!6220!6220U61*(tt, X) >= a!6220!6220U62(a!6220!6220isPalListKind(X), X) because a!6220!6220U61 > a!6220!6220U62, [115] and [116], by (Copy) 115] a!6220!6220U61*(tt, X) >= a!6220!6220isPalListKind(X) because a!6220!6220U61 > a!6220!6220isPalListKind and [116], by (Copy) 116] a!6220!6220U61*(tt, X) >= X because [24], by (Select) 117] a!6220!6220U62(tt, X) >= a!6220!6220isQid(X) because [118], by (Star) 118] a!6220!6220U62*(tt, X) >= a!6220!6220isQid(X) because a!6220!6220U62 > a!6220!6220isQid and [119], by (Copy) 119] a!6220!6220U62*(tt, X) >= X because [24], by (Select) 120] tt >= tt by (Fun) 121] a!6220!6220U71(tt, X, Y) > a!6220!6220U72(a!6220!6220isPalListKind(X), Y) because [122], by definition 122] a!6220!6220U71*(tt, X, Y) >= a!6220!6220U72(a!6220!6220isPalListKind(X), Y) because a!6220!6220U71 > a!6220!6220U72, [123] and [126], by (Copy) 123] a!6220!6220U71*(tt, X, Y) >= a!6220!6220isPalListKind(X) because a!6220!6220U71 > a!6220!6220isPalListKind and [124], by (Copy) 124] a!6220!6220U71*(tt, X, Y) >= X because [125], by (Select) 125] X >= X by (Meta) 126] a!6220!6220U71*(tt, X, Y) >= Y because [127], by (Select) 127] Y >= Y by (Meta) 128] a!6220!6220U72(tt, X) > a!6220!6220U73(a!6220!6220isPal(X), X) because [129], by definition 129] a!6220!6220U72*(tt, X) >= a!6220!6220U73(a!6220!6220isPal(X), X) because a!6220!6220U72 > a!6220!6220U73, [130] and [131], by (Copy) 130] a!6220!6220U72*(tt, X) >= a!6220!6220isPal(X) because a!6220!6220U72 > a!6220!6220isPal and [131], by (Copy) 131] a!6220!6220U72*(tt, X) >= X because [127], by (Select) 132] a!6220!6220U73(tt, X) >= a!6220!6220isPalListKind(X) because [133], by (Star) 133] a!6220!6220U73*(tt, X) >= a!6220!6220isPalListKind(X) because a!6220!6220U73 > a!6220!6220isPalListKind and [134], by (Copy) 134] a!6220!6220U73*(tt, X) >= X because [127], by (Select) 135] tt >= tt by (Fun) 136] a!6220!6220U81(tt, X) >= a!6220!6220U82(a!6220!6220isPalListKind(X), X) because [137], by (Star) 137] a!6220!6220U81*(tt, X) >= a!6220!6220U82(a!6220!6220isPalListKind(X), X) because a!6220!6220U81 > a!6220!6220U82, [138] and [139], by (Copy) 138] a!6220!6220U81*(tt, X) >= a!6220!6220isPalListKind(X) because a!6220!6220U81 > a!6220!6220isPalListKind and [139], by (Copy) 139] a!6220!6220U81*(tt, X) >= X because [24], by (Select) 140] a!6220!6220U82(tt, X) >= a!6220!6220isNePal(X) because [141], by (Star) 141] a!6220!6220U82*(tt, X) >= a!6220!6220isNePal(X) because a!6220!6220U82 > a!6220!6220isNePal and [142], by (Copy) 142] a!6220!6220U82*(tt, X) >= X because [24], by (Select) 143] tt >= tt by (Fun) 144] a!6220!6220U91(tt, X) >= a!6220!6220isPalListKind(X) because [145], by (Star) 145] a!6220!6220U91*(tt, X) >= a!6220!6220isPalListKind(X) because a!6220!6220U91 > a!6220!6220isPalListKind and [146], by (Copy) 146] a!6220!6220U91*(tt, X) >= X because [35], by (Select) 147] tt >= tt by (Fun) 148] a!6220!6220isList(X) > a!6220!6220U11(a!6220!6220isPalListKind(X), X) because [149], by definition 149] a!6220!6220isList*(X) >= a!6220!6220U11(a!6220!6220isPalListKind(X), X) because a!6220!6220isList > a!6220!6220U11, [150] and [151], by (Copy) 150] a!6220!6220isList*(X) >= a!6220!6220isPalListKind(X) because a!6220!6220isList > a!6220!6220isPalListKind and [151], by (Copy) 151] a!6220!6220isList*(X) >= X because [24], by (Select) 152] a!6220!6220isList(nil) > tt because [153], by definition 153] a!6220!6220isList*(nil) >= tt because [154], by (Select) 154] nil >= tt because [155], by (Star) 155] nil* >= tt because nil > tt, by (Copy) 156] a!6220!6220isList(!6220!6220(X, Y)) >= a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) because [157], by (Star) 157] a!6220!6220isList*(!6220!6220(X, Y)) >= a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) because [158], by (Select) 158] !6220!6220(X, Y) >= a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) because [159], by (Star) 159] !6220!6220*(X, Y) >= a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) because !6220!6220 > a!6220!6220U21, [160], [161] and [162], by (Copy) 160] !6220!6220*(X, Y) >= a!6220!6220isPalListKind(X) because !6220!6220 > a!6220!6220isPalListKind and [161], by (Copy) 161] !6220!6220*(X, Y) >= X because [33], by (Select) 162] !6220!6220*(X, Y) >= Y because [35], by (Select) 163] a!6220!6220isNeList(X) >= a!6220!6220U31(a!6220!6220isPalListKind(X), X) because [164], by (Star) 164] a!6220!6220isNeList*(X) >= a!6220!6220U31(a!6220!6220isPalListKind(X), X) because a!6220!6220isNeList > a!6220!6220U31, [165] and [166], by (Copy) 165] a!6220!6220isNeList*(X) >= a!6220!6220isPalListKind(X) because a!6220!6220isNeList > a!6220!6220isPalListKind and [166], by (Copy) 166] a!6220!6220isNeList*(X) >= X because [24], by (Select) 167] a!6220!6220isNeList(!6220!6220(X, Y)) > a!6220!6220U41(a!6220!6220isPalListKind(X), X, Y) because [168], by definition 168] a!6220!6220isNeList*(!6220!6220(X, Y)) >= a!6220!6220U41(a!6220!6220isPalListKind(X), X, Y) because [169], by (Select) 169] !6220!6220(X, Y) >= a!6220!6220U41(a!6220!6220isPalListKind(X), X, Y) because [170], by (Star) 170] !6220!6220*(X, Y) >= a!6220!6220U41(a!6220!6220isPalListKind(X), X, Y) because !6220!6220 > a!6220!6220U41, [160], [161] and [162], by (Copy) 171] a!6220!6220isNeList(!6220!6220(X, Y)) >= a!6220!6220U51(a!6220!6220isPalListKind(X), X, Y) because [172], by (Star) 172] a!6220!6220isNeList*(!6220!6220(X, Y)) >= a!6220!6220U51(a!6220!6220isPalListKind(X), X, Y) because [173], by (Select) 173] !6220!6220(X, Y) >= a!6220!6220U51(a!6220!6220isPalListKind(X), X, Y) because [174], by (Star) 174] !6220!6220*(X, Y) >= a!6220!6220U51(a!6220!6220isPalListKind(X), X, Y) because !6220!6220 > a!6220!6220U51, [160], [161] and [162], by (Copy) 175] a!6220!6220isNePal(X) > a!6220!6220U61(a!6220!6220isPalListKind(X), X) because [176], by definition 176] a!6220!6220isNePal*(X) >= a!6220!6220U61(a!6220!6220isPalListKind(X), X) because a!6220!6220isNePal > a!6220!6220U61, [177] and [178], by (Copy) 177] a!6220!6220isNePal*(X) >= a!6220!6220isPalListKind(X) because a!6220!6220isNePal > a!6220!6220isPalListKind and [178], by (Copy) 178] a!6220!6220isNePal*(X) >= X because [24], by (Select) 179] a!6220!6220isNePal(!6220!6220(X, !6220!6220(Y, X))) >= a!6220!6220U71(a!6220!6220isQid(X), X, Y) because [180], by (Star) 180] a!6220!6220isNePal*(!6220!6220(X, !6220!6220(Y, X))) >= a!6220!6220U71(a!6220!6220isQid(X), X, Y) because [181], by (Select) 181] !6220!6220(X, !6220!6220(Y, X)) >= a!6220!6220U71(a!6220!6220isQid(X), X, Y) because [182], by (Star) 182] !6220!6220*(X, !6220!6220(Y, X)) >= a!6220!6220U71(a!6220!6220isQid(X), X, Y) because !6220!6220 > a!6220!6220U71, [183], [184] and [185], by (Copy) 183] !6220!6220*(X, !6220!6220(Y, X)) >= a!6220!6220isQid(X) because !6220!6220 > a!6220!6220isQid and [184], by (Copy) 184] !6220!6220*(X, !6220!6220(Y, X)) >= X because [125], by (Select) 185] !6220!6220*(X, !6220!6220(Y, X)) >= Y because [186], by (Select) 186] !6220!6220(Y, X) >= Y because [187], by (Star) 187] !6220!6220*(Y, X) >= Y because [127], by (Select) 188] a!6220!6220isPal(X) > a!6220!6220U81(a!6220!6220isPalListKind(X), X) because [189], by definition 189] a!6220!6220isPal*(X) >= a!6220!6220U81(a!6220!6220isPalListKind(X), X) because a!6220!6220isPal > a!6220!6220U81, [190] and [191], by (Copy) 190] a!6220!6220isPal*(X) >= a!6220!6220isPalListKind(X) because a!6220!6220isPal > a!6220!6220isPalListKind and [191], by (Copy) 191] a!6220!6220isPal*(X) >= X because [24], by (Select) 192] a!6220!6220isPal(nil) > tt because [193], by definition 193] a!6220!6220isPal*(nil) >= tt because [154], by (Select) 194] a!6220!6220isPalListKind(a) >= tt because [195], by (Star) 195] a!6220!6220isPalListKind*(a) >= tt because [196], by (Select) 196] a >= tt because [197], by (Star) 197] a* >= tt because a > tt, by (Copy) 198] a!6220!6220isPalListKind(e) > tt because [199], by definition 199] a!6220!6220isPalListKind*(e) >= tt because [200], by (Select) 200] e >= tt because e = tt, by (Fun) 201] a!6220!6220isPalListKind(i) > tt because [202], by definition 202] a!6220!6220isPalListKind*(i) >= tt because [203], by (Select) 203] i >= tt because [204], by (Star) 204] i* >= tt because i > tt, by (Copy) 205] a!6220!6220isPalListKind(nil) >= tt because [206], by (Star) 206] a!6220!6220isPalListKind*(nil) >= tt because [154], by (Select) 207] a!6220!6220isPalListKind(o) > tt because [208], by definition 208] a!6220!6220isPalListKind*(o) >= tt because [209], by (Select) 209] o >= tt because o = tt, by (Fun) 210] a!6220!6220isPalListKind(u) >= tt because [211], by (Star) 211] a!6220!6220isPalListKind*(u) >= tt because [212], by (Select) 212] u >= tt because [213], by (Star) 213] u* >= tt because u > tt, by (Copy) 214] a!6220!6220isPalListKind(!6220!6220(X, Y)) > a!6220!6220U91(a!6220!6220isPalListKind(X), Y) because [215], by definition 215] a!6220!6220isPalListKind*(!6220!6220(X, Y)) >= a!6220!6220U91(a!6220!6220isPalListKind(X), Y) because [216], by (Select) 216] !6220!6220(X, Y) >= a!6220!6220U91(a!6220!6220isPalListKind(X), Y) because [217], by (Star) 217] !6220!6220*(X, Y) >= a!6220!6220U91(a!6220!6220isPalListKind(X), Y) because !6220!6220 > a!6220!6220U91, [160] and [162], by (Copy) 218] a!6220!6220isQid(a) > tt because [219], by definition 219] a!6220!6220isQid*(a) >= tt because [196], by (Select) 220] a!6220!6220isQid(e) >= tt because [221], by (Star) 221] a!6220!6220isQid*(e) >= tt because [200], by (Select) 222] a!6220!6220isQid(i) > tt because [223], by definition 223] a!6220!6220isQid*(i) >= tt because [203], by (Select) 224] a!6220!6220isQid(o) > tt because [225], by definition 225] a!6220!6220isQid*(o) >= tt because [209], by (Select) 226] a!6220!6220isQid(u) > tt because [227], by definition 227] a!6220!6220isQid*(u) >= tt because [212], by (Select) 228] !6220!6220(X, Y) >= a!6220!6220!6220!6220(X, Y) because !6220!6220 = a!6220!6220!6220!6220, [229] and [230], by (Fun) 229] X >= X by (Meta) 230] Y >= Y by (Meta) 231] U11(X, Y) >= a!6220!6220U11(X, Y) because U11 = a!6220!6220U11, U11 in Mul, [229] and [230], by (Fun) 232] U12(X, Y) >= a!6220!6220U12(X, Y) because U12 = a!6220!6220U12, U12 in Mul, [229] and [230], by (Fun) 233] isPalListKind(X) >= a!6220!6220isPalListKind(X) because isPalListKind = a!6220!6220isPalListKind, isPalListKind in Mul and [234], by (Fun) 234] X >= X by (Meta) 235] X >= X by (Meta) 236] isNeList(X) >= a!6220!6220isNeList(X) because isNeList = a!6220!6220isNeList, isNeList in Mul and [234], by (Fun) 237] U21(X, Y, Z) >= a!6220!6220U21(X, Y, Z) because U21 = a!6220!6220U21, U21 in Mul, [229], [230] and [238], by (Fun) 238] Z >= Z by (Meta) 239] U22(X, Y, Z) >= a!6220!6220U22(X, Y, Z) because U22 = a!6220!6220U22, U22 in Mul, [229], [230] and [238], by (Fun) 240] U23(X, Y, Z) >= a!6220!6220U23(X, Y, Z) because U23 = a!6220!6220U23, U23 in Mul, [229], [230] and [238], by (Fun) 241] U24(X, Y, Z) >= a!6220!6220U24(X, Y, Z) because U24 = a!6220!6220U24, U24 in Mul, [229], [230] and [238], by (Fun) 242] U25(X, Y) >= a!6220!6220U25(X, Y) because U25 = a!6220!6220U25, U25 in Mul, [229] and [230], by (Fun) 243] isList(X) >= a!6220!6220isList(X) because isList = a!6220!6220isList, isList in Mul and [234], by (Fun) 244] X >= X by (Meta) 245] U31(X, Y) >= a!6220!6220U31(X, Y) because U31 = a!6220!6220U31, U31 in Mul, [229] and [230], by (Fun) 246] U32(X, Y) >= a!6220!6220U32(X, Y) because U32 = a!6220!6220U32, U32 in Mul, [229] and [230], by (Fun) 247] X >= X by (Meta) 248] isQid(X) >= a!6220!6220isQid(X) because isQid = a!6220!6220isQid, isQid in Mul and [234], by (Fun) 249] U41(X, Y, Z) >= a!6220!6220U41(X, Y, Z) because U41 = a!6220!6220U41, U41 in Mul, [229], [230] and [238], by (Fun) 250] U42(X, Y, Z) >= a!6220!6220U42(X, Y, Z) because U42 = a!6220!6220U42, U42 in Mul, [229], [230] and [238], by (Fun) 251] U43(X, Y, Z) >= a!6220!6220U43(X, Y, Z) because U43 = a!6220!6220U43, U43 in Mul, [229], [230] and [238], by (Fun) 252] U44(X, Y, Z) >= a!6220!6220U44(X, Y, Z) because U44 = a!6220!6220U44, U44 in Mul, [229], [230] and [238], by (Fun) 253] U45(X, Y) >= a!6220!6220U45(X, Y) because U45 = a!6220!6220U45, U45 in Mul, [229] and [230], by (Fun) 254] U46(X) >= a!6220!6220U46(X) because U46 = a!6220!6220U46, U46 in Mul and [255], by (Fun) 255] X >= X by (Meta) 256] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [229], [230] and [238], by (Fun) 257] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [229], [230] and [238], by (Fun) 258] U53(X, Y, Z) >= a!6220!6220U53(X, Y, Z) because U53 = a!6220!6220U53, U53 in Mul, [229], [230] and [238], by (Fun) 259] U54(X, Y, Z) >= a!6220!6220U54(X, Y, Z) because U54 = a!6220!6220U54, U54 in Mul, [229], [230] and [238], by (Fun) 260] U55(X, Y) >= a!6220!6220U55(X, Y) because U55 = a!6220!6220U55, U55 in Mul, [229] and [230], by (Fun) 261] X >= X by (Meta) 262] U61(X, Y) >= a!6220!6220U61(X, Y) because U61 = a!6220!6220U61, U61 in Mul, [229] and [230], by (Fun) 263] U62(X, Y) >= a!6220!6220U62(X, Y) because U62 = a!6220!6220U62, U62 in Mul, [229] and [230], by (Fun) 264] X >= X by (Meta) 265] U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) because U71 = a!6220!6220U71, U71 in Mul, [229], [230] and [238], by (Fun) 266] U72(X, Y) >= a!6220!6220U72(X, Y) because U72 = a!6220!6220U72, U72 in Mul, [229] and [230], by (Fun) 267] U73(X, Y) >= a!6220!6220U73(X, Y) because U73 = a!6220!6220U73, U73 in Mul, [229] and [230], by (Fun) 268] isPal(X) >= a!6220!6220isPal(X) because isPal = a!6220!6220isPal, isPal in Mul and [255], by (Fun) 269] X >= X by (Meta) 270] U81(X, Y) >= a!6220!6220U81(X, Y) because U81 = a!6220!6220U81, U81 in Mul, [229] and [230], by (Fun) 271] U82(X, Y) >= a!6220!6220U82(X, Y) because U82 = a!6220!6220U82, U82 in Mul, [229] and [230], by (Fun) 272] X >= X by (Meta) 273] isNePal(X) >= a!6220!6220isNePal(X) because isNePal = a!6220!6220isNePal, isNePal in Mul and [255], by (Fun) 274] U91(X, Y) >= a!6220!6220U91(X, Y) because U91 = a!6220!6220U91, U91 in Mul, [229] and [230], by (Fun) 275] X >= X by (Meta) 276] nil >= nil by (Fun) 277] tt >= tt by (Fun) 278] a >= a by (Fun) 279] e >= e by (Fun) 280] i >= i by (Fun) 281] o >= o by (Fun) 282] u >= u by (Fun) 283] a!6220!6220!6220!6220(X, Y) >= !6220!6220(X, Y) because a!6220!6220!6220!6220 = !6220!6220, [229] and [230], by (Fun) 284] a!6220!6220U11(X, Y) >= U11(X, Y) because a!6220!6220U11 = U11, a!6220!6220U11 in Mul, [229] and [230], by (Fun) 285] a!6220!6220U12(X, Y) >= U12(X, Y) because a!6220!6220U12 = U12, a!6220!6220U12 in Mul, [229] and [230], by (Fun) 286] a!6220!6220isPalListKind(X) >= isPalListKind(X) because a!6220!6220isPalListKind = isPalListKind, a!6220!6220isPalListKind in Mul and [255], by (Fun) 287] X >= X by (Meta) 288] a!6220!6220isNeList(X) >= isNeList(X) because a!6220!6220isNeList = isNeList, a!6220!6220isNeList in Mul and [255], by (Fun) 289] a!6220!6220U21(X, Y, Z) >= U21(X, Y, Z) because a!6220!6220U21 = U21, a!6220!6220U21 in Mul, [229], [230] and [238], by (Fun) 290] a!6220!6220U22(X, Y, Z) >= U22(X, Y, Z) because a!6220!6220U22 = U22, a!6220!6220U22 in Mul, [229], [230] and [238], by (Fun) 291] a!6220!6220U23(X, Y, Z) >= U23(X, Y, Z) because a!6220!6220U23 = U23, a!6220!6220U23 in Mul, [229], [230] and [238], by (Fun) 292] a!6220!6220U24(X, Y, Z) >= U24(X, Y, Z) because a!6220!6220U24 = U24, a!6220!6220U24 in Mul, [229], [230] and [238], by (Fun) 293] a!6220!6220U25(X, Y) >= U25(X, Y) because a!6220!6220U25 = U25, a!6220!6220U25 in Mul, [229] and [230], by (Fun) 294] a!6220!6220isList(X) >= isList(X) because a!6220!6220isList = isList, a!6220!6220isList in Mul and [255], by (Fun) 295] X >= X by (Meta) 296] a!6220!6220U31(X, Y) >= U31(X, Y) because a!6220!6220U31 = U31, a!6220!6220U31 in Mul, [229] and [230], by (Fun) 297] a!6220!6220U32(X, Y) >= U32(X, Y) because a!6220!6220U32 = U32, a!6220!6220U32 in Mul, [229] and [230], by (Fun) 298] X >= X by (Meta) 299] a!6220!6220isQid(X) >= isQid(X) because a!6220!6220isQid = isQid, a!6220!6220isQid in Mul and [255], by (Fun) 300] a!6220!6220U41(X, Y, Z) >= U41(X, Y, Z) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [229], [230] and [238], by (Fun) 301] a!6220!6220U42(X, Y, Z) >= U42(X, Y, Z) because a!6220!6220U42 = U42, a!6220!6220U42 in Mul, [229], [230] and [238], by (Fun) 302] a!6220!6220U43(X, Y, Z) >= U43(X, Y, Z) because a!6220!6220U43 = U43, a!6220!6220U43 in Mul, [229], [230] and [238], by (Fun) 303] a!6220!6220U44(X, Y, Z) >= U44(X, Y, Z) because a!6220!6220U44 = U44, a!6220!6220U44 in Mul, [229], [230] and [238], by (Fun) 304] a!6220!6220U45(X, Y) >= U45(X, Y) because a!6220!6220U45 = U45, a!6220!6220U45 in Mul, [229] and [230], by (Fun) 305] a!6220!6220U46(X) >= U46(X) because a!6220!6220U46 = U46, a!6220!6220U46 in Mul and [255], by (Fun) 306] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [229], [230] and [238], by (Fun) 307] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [229], [230] and [238], by (Fun) 308] a!6220!6220U53(X, Y, Z) >= U53(X, Y, Z) because a!6220!6220U53 = U53, a!6220!6220U53 in Mul, [229], [230] and [238], by (Fun) 309] a!6220!6220U54(X, Y, Z) >= U54(X, Y, Z) because a!6220!6220U54 = U54, a!6220!6220U54 in Mul, [229], [230] and [238], by (Fun) 310] a!6220!6220U55(X, Y) >= U55(X, Y) because a!6220!6220U55 = U55, a!6220!6220U55 in Mul, [229] and [230], by (Fun) 311] X >= X by (Meta) 312] a!6220!6220U61(X, Y) >= U61(X, Y) because a!6220!6220U61 = U61, a!6220!6220U61 in Mul, [229] and [230], by (Fun) 313] a!6220!6220U62(X, Y) >= U62(X, Y) because a!6220!6220U62 = U62, a!6220!6220U62 in Mul, [229] and [230], by (Fun) 314] X >= X by (Meta) 315] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [229], [230] and [238], by (Fun) 316] a!6220!6220U72(X, Y) >= U72(X, Y) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [229] and [230], by (Fun) 317] a!6220!6220U73(X, Y) >= U73(X, Y) because a!6220!6220U73 = U73, a!6220!6220U73 in Mul, [229] and [230], by (Fun) 318] a!6220!6220isPal(X) >= isPal(X) because a!6220!6220isPal = isPal, a!6220!6220isPal in Mul and [255], by (Fun) 319] X >= X by (Meta) 320] a!6220!6220U81(X, Y) >= U81(X, Y) because a!6220!6220U81 = U81, a!6220!6220U81 in Mul, [229] and [230], by (Fun) 321] a!6220!6220U82(X, Y) >= U82(X, Y) because a!6220!6220U82 = U82, a!6220!6220U82 in Mul, [229] and [230], by (Fun) 322] X >= X by (Meta) 323] a!6220!6220isNePal(X) >= isNePal(X) because a!6220!6220isNePal = isNePal, a!6220!6220isNePal in Mul and [255], by (Fun) 324] a!6220!6220U91(X, Y) >= U91(X, Y) because a!6220!6220U91 = U91, a!6220!6220U91 in Mul, [229] and [230], by (Fun) 325] X >= X by (Meta) We can thus remove the following rules: a!6220!6220U11(tt, X) => a!6220!6220U12(a!6220!6220isPalListKind(X), X) a!6220!6220U22(tt, X, Y) => a!6220!6220U23(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U46(tt) => tt a!6220!6220U51(tt, X, Y) => a!6220!6220U52(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U52(tt, X, Y) => a!6220!6220U53(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U54(tt, X, Y) => a!6220!6220U55(a!6220!6220isNeList(X), Y) a!6220!6220U71(tt, X, Y) => a!6220!6220U72(a!6220!6220isPalListKind(X), Y) a!6220!6220U72(tt, X) => a!6220!6220U73(a!6220!6220isPal(X), X) a!6220!6220isList(X) => a!6220!6220U11(a!6220!6220isPalListKind(X), X) a!6220!6220isList(nil) => tt a!6220!6220isNeList(!6220!6220(X, Y)) => a!6220!6220U41(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNePal(X) => a!6220!6220U61(a!6220!6220isPalListKind(X), X) a!6220!6220isPal(X) => a!6220!6220U81(a!6220!6220isPalListKind(X), X) a!6220!6220isPal(nil) => tt a!6220!6220isPalListKind(e) => tt a!6220!6220isPalListKind(i) => tt a!6220!6220isPalListKind(o) => tt a!6220!6220isPalListKind(!6220!6220(X, Y)) => a!6220!6220U91(a!6220!6220isPalListKind(X), Y) a!6220!6220isQid(a) => tt a!6220!6220isQid(i) => tt a!6220!6220isQid(o) => tt a!6220!6220isQid(u) => tt We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220!6220!6220(X, nil) >? mark(X) a!6220!6220!6220!6220(nil, X) >? mark(X) a!6220!6220U12(tt, X) >? a!6220!6220U13(a!6220!6220isNeList(X)) a!6220!6220U13(tt) >? tt a!6220!6220U21(tt, X, Y) >? a!6220!6220U22(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U23(tt, X, Y) >? a!6220!6220U24(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U24(tt, X, Y) >? a!6220!6220U25(a!6220!6220isList(X), Y) a!6220!6220U25(tt, X) >? a!6220!6220U26(a!6220!6220isList(X)) a!6220!6220U26(tt) >? tt a!6220!6220U31(tt, X) >? a!6220!6220U32(a!6220!6220isPalListKind(X), X) a!6220!6220U32(tt, X) >? a!6220!6220U33(a!6220!6220isQid(X)) a!6220!6220U33(tt) >? tt a!6220!6220U41(tt, X, Y) >? a!6220!6220U42(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U42(tt, X, Y) >? a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U43(tt, X, Y) >? a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U44(tt, X, Y) >? a!6220!6220U45(a!6220!6220isList(X), Y) a!6220!6220U45(tt, X) >? a!6220!6220U46(a!6220!6220isNeList(X)) a!6220!6220U53(tt, X, Y) >? a!6220!6220U54(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U55(tt, X) >? a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U56(tt) >? tt a!6220!6220U61(tt, X) >? a!6220!6220U62(a!6220!6220isPalListKind(X), X) a!6220!6220U62(tt, X) >? a!6220!6220U63(a!6220!6220isQid(X)) a!6220!6220U63(tt) >? tt a!6220!6220U73(tt, X) >? a!6220!6220U74(a!6220!6220isPalListKind(X)) a!6220!6220U74(tt) >? tt a!6220!6220U81(tt, X) >? a!6220!6220U82(a!6220!6220isPalListKind(X), X) a!6220!6220U82(tt, X) >? a!6220!6220U83(a!6220!6220isNePal(X)) a!6220!6220U83(tt) >? tt a!6220!6220U91(tt, X) >? a!6220!6220U92(a!6220!6220isPalListKind(X)) a!6220!6220U92(tt) >? tt a!6220!6220isList(!6220!6220(X, Y)) >? a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) a!6220!6220isNeList(!6220!6220(X, Y)) >? a!6220!6220U51(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNePal(!6220!6220(X, !6220!6220(Y, X))) >? a!6220!6220U71(a!6220!6220isQid(X), X, Y) a!6220!6220isPalListKind(a) >? tt a!6220!6220isPalListKind(nil) >? tt a!6220!6220isPalListKind(u) >? tt a!6220!6220isQid(e) >? tt mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) about to try horpo We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[U13(x_1)]] = x_1 [[U26(x_1)]] = x_1 [[U46(x_1)]] = x_1 [[U63(x_1)]] = x_1 [[U74(x_1)]] = x_1 [[U83(x_1)]] = x_1 [[U92(x_1)]] = x_1 [[a!6220!6220U13(x_1)]] = x_1 [[a!6220!6220U26(x_1)]] = x_1 [[a!6220!6220U46(x_1)]] = x_1 [[a!6220!6220U63(x_1)]] = x_1 [[a!6220!6220U74(x_1)]] = x_1 [[a!6220!6220U83(x_1)]] = x_1 [[a!6220!6220U92(x_1)]] = x_1 [[a!6220!6220isPalListKind(x_1)]] = x_1 [[a!6220!6220isQid(x_1)]] = x_1 [[isPalListKind(x_1)]] = x_1 [[isQid(x_1)]] = x_1 [[mark(x_1)]] = x_1 [[nil]] = _|_ [[o]] = _|_ [[tt]] = _|_ We choose Lex = {!6220!6220, a!6220!6220!6220!6220} and Mul = {U11, U12, U21, U22, U23, U24, U25, U31, U32, U33, U41, U42, U43, U44, U45, U51, U52, U53, U54, U55, U56, U61, U62, U71, U72, U73, U81, U82, U91, a, a!6220!6220U11, a!6220!6220U12, a!6220!6220U21, a!6220!6220U22, a!6220!6220U23, a!6220!6220U24, a!6220!6220U25, a!6220!6220U31, a!6220!6220U32, a!6220!6220U33, a!6220!6220U41, a!6220!6220U42, a!6220!6220U43, a!6220!6220U44, a!6220!6220U45, a!6220!6220U51, a!6220!6220U52, a!6220!6220U53, a!6220!6220U54, a!6220!6220U55, a!6220!6220U56, a!6220!6220U61, a!6220!6220U62, a!6220!6220U71, a!6220!6220U72, a!6220!6220U73, a!6220!6220U81, a!6220!6220U82, a!6220!6220U91, a!6220!6220isList, a!6220!6220isNeList, a!6220!6220isNePal, a!6220!6220isPal, e, i, isList, isNeList, isNePal, isPal, u}, and the following precedence: u > U72 = a!6220!6220U72 > a!6220!6220isPal = isPal > U41 = a!6220!6220U41 > U42 = a!6220!6220U42 > U43 = a!6220!6220U43 > U12 = a!6220!6220U12 > U73 = a!6220!6220U73 > U91 = a!6220!6220U91 > U53 = a!6220!6220U53 > U54 = a!6220!6220U54 > e > U44 = a!6220!6220U44 > U45 = a!6220!6220U45 > U23 = a!6220!6220U23 > U24 = a!6220!6220U24 > U52 = a!6220!6220U52 > U61 = a!6220!6220U61 > U55 = a!6220!6220U55 > U56 = a!6220!6220U56 > U25 = a!6220!6220U25 > a!6220!6220isList = isList > U11 = a!6220!6220U11 > U21 = a!6220!6220U21 > U22 = a!6220!6220U22 > U81 = a!6220!6220U81 > U82 = a!6220!6220U82 > a!6220!6220isNePal = isNePal > !6220!6220 = a!6220!6220!6220!6220 > U51 = a!6220!6220U51 > a!6220!6220isNeList = isNeList > U31 = a!6220!6220U31 > i > U62 = a!6220!6220U62 > U32 = U33 = a!6220!6220U32 = a!6220!6220U33 > a > U71 = a!6220!6220U71 Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >= a!6220!6220!6220!6220(X, a!6220!6220!6220!6220(Y, Z)) a!6220!6220!6220!6220(X, _|_) >= X a!6220!6220!6220!6220(_|_, X) >= X a!6220!6220U12(_|_, X) >= a!6220!6220isNeList(X) _|_ >= _|_ a!6220!6220U21(_|_, X, Y) > a!6220!6220U22(X, X, Y) a!6220!6220U23(_|_, X, Y) > a!6220!6220U24(Y, X, Y) a!6220!6220U24(_|_, X, Y) > a!6220!6220U25(a!6220!6220isList(X), Y) a!6220!6220U25(_|_, X) >= a!6220!6220isList(X) _|_ >= _|_ a!6220!6220U31(_|_, X) > a!6220!6220U32(X, X) a!6220!6220U32(_|_, X) >= a!6220!6220U33(X) a!6220!6220U33(_|_) >= _|_ a!6220!6220U41(_|_, X, Y) > a!6220!6220U42(X, X, Y) a!6220!6220U42(_|_, X, Y) >= a!6220!6220U43(Y, X, Y) a!6220!6220U43(_|_, X, Y) >= a!6220!6220U44(Y, X, Y) a!6220!6220U44(_|_, X, Y) > a!6220!6220U45(a!6220!6220isList(X), Y) a!6220!6220U45(_|_, X) >= a!6220!6220isNeList(X) a!6220!6220U53(_|_, X, Y) >= a!6220!6220U54(Y, X, Y) a!6220!6220U55(_|_, X) >= a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U56(_|_) >= _|_ a!6220!6220U61(_|_, X) > a!6220!6220U62(X, X) a!6220!6220U62(_|_, X) >= X _|_ >= _|_ a!6220!6220U73(_|_, X) >= X _|_ >= _|_ a!6220!6220U81(_|_, X) >= a!6220!6220U82(X, X) a!6220!6220U82(_|_, X) > a!6220!6220isNePal(X) _|_ >= _|_ a!6220!6220U91(_|_, X) >= X _|_ >= _|_ a!6220!6220isList(!6220!6220(X, Y)) >= a!6220!6220U21(X, X, Y) a!6220!6220isNeList(X) >= a!6220!6220U31(X, X) a!6220!6220isNeList(!6220!6220(X, Y)) > a!6220!6220U51(X, X, Y) a!6220!6220isNePal(!6220!6220(X, !6220!6220(Y, X))) >= a!6220!6220U71(X, X, Y) a >= _|_ _|_ >= _|_ u >= _|_ e >= _|_ !6220!6220(X, Y) >= a!6220!6220!6220!6220(X, Y) U11(X, Y) >= a!6220!6220U11(X, Y) U12(X, Y) >= a!6220!6220U12(X, Y) X >= X X >= X isNeList(X) >= a!6220!6220isNeList(X) U21(X, Y, Z) >= a!6220!6220U21(X, Y, Z) U22(X, Y, Z) >= a!6220!6220U22(X, Y, Z) U23(X, Y, Z) >= a!6220!6220U23(X, Y, Z) U24(X, Y, Z) >= a!6220!6220U24(X, Y, Z) U25(X, Y) >= a!6220!6220U25(X, Y) isList(X) >= a!6220!6220isList(X) X >= X U31(X, Y) >= a!6220!6220U31(X, Y) U32(X, Y) >= a!6220!6220U32(X, Y) U33(X) >= a!6220!6220U33(X) X >= X U41(X, Y, Z) >= a!6220!6220U41(X, Y, Z) U42(X, Y, Z) >= a!6220!6220U42(X, Y, Z) U43(X, Y, Z) >= a!6220!6220U43(X, Y, Z) U44(X, Y, Z) >= a!6220!6220U44(X, Y, Z) U45(X, Y) >= a!6220!6220U45(X, Y) X >= X U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) U53(X, Y, Z) >= a!6220!6220U53(X, Y, Z) U54(X, Y, Z) >= a!6220!6220U54(X, Y, Z) U55(X, Y) >= a!6220!6220U55(X, Y) U56(X) >= a!6220!6220U56(X) U61(X, Y) >= a!6220!6220U61(X, Y) U62(X, Y) >= a!6220!6220U62(X, Y) X >= X U71(X, Y, Z) >= a!6220!6220U71(X, Y, Z) U72(X, Y) >= a!6220!6220U72(X, Y) U73(X, Y) >= a!6220!6220U73(X, Y) isPal(X) >= a!6220!6220isPal(X) X >= X U81(X, Y) >= a!6220!6220U81(X, Y) U82(X, Y) >= a!6220!6220U82(X, Y) X >= X isNePal(X) >= a!6220!6220isNePal(X) U91(X, Y) >= a!6220!6220U91(X, Y) X >= X _|_ >= _|_ _|_ >= _|_ a >= a e >= e i >= i _|_ >= _|_ u >= u a!6220!6220!6220!6220(X, Y) >= !6220!6220(X, Y) a!6220!6220U11(X, Y) >= U11(X, Y) a!6220!6220U12(X, Y) >= U12(X, Y) X >= X X >= X a!6220!6220isNeList(X) >= isNeList(X) a!6220!6220U21(X, Y, Z) >= U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >= U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >= U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >= U24(X, Y, Z) a!6220!6220U25(X, Y) >= U25(X, Y) a!6220!6220isList(X) >= isList(X) X >= X a!6220!6220U31(X, Y) >= U31(X, Y) a!6220!6220U32(X, Y) >= U32(X, Y) a!6220!6220U33(X) >= U33(X) X >= X a!6220!6220U41(X, Y, Z) >= U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >= U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >= U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >= U44(X, Y, Z) a!6220!6220U45(X, Y) >= U45(X, Y) X >= X a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >= U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >= U54(X, Y, Z) a!6220!6220U55(X, Y) >= U55(X, Y) a!6220!6220U56(X) >= U56(X) a!6220!6220U61(X, Y) >= U61(X, Y) a!6220!6220U62(X, Y) >= U62(X, Y) X >= X a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) a!6220!6220U72(X, Y) >= U72(X, Y) a!6220!6220U73(X, Y) >= U73(X, Y) a!6220!6220isPal(X) >= isPal(X) X >= X a!6220!6220U81(X, Y) >= U81(X, Y) a!6220!6220U82(X, Y) >= U82(X, Y) X >= X a!6220!6220isNePal(X) >= isNePal(X) a!6220!6220U91(X, Y) >= U91(X, Y) X >= X With these choices, we have: 1] a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >= a!6220!6220!6220!6220(X, a!6220!6220!6220!6220(Y, Z)) because [2], by (Star) 2] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= a!6220!6220!6220!6220(X, a!6220!6220!6220!6220(Y, Z)) because [3], [6] and [8], by (Stat) 3] !6220!6220(X, Y) > X because [4], by definition 4] !6220!6220*(X, Y) >= X because [5], by (Select) 5] X >= X by (Meta) 6] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= X because [7], by (Select) 7] !6220!6220(X, Y) >= X because [4], by (Star) 8] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= a!6220!6220!6220!6220(Y, Z) because [9], [12] and [14], by (Stat) 9] !6220!6220(X, Y) > Y because [10], by definition 10] !6220!6220*(X, Y) >= Y because [11], by (Select) 11] Y >= Y by (Meta) 12] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= Y because [13], by (Select) 13] !6220!6220(X, Y) >= Y because [10], by (Star) 14] a!6220!6220!6220!6220*(!6220!6220(X, Y), Z) >= Z because [15], by (Select) 15] Z >= Z by (Meta) 16] a!6220!6220!6220!6220(X, _|_) >= X because [17], by (Star) 17] a!6220!6220!6220!6220*(X, _|_) >= X because [5], by (Select) 18] a!6220!6220!6220!6220(_|_, X) >= X because [19], by (Star) 19] a!6220!6220!6220!6220*(_|_, X) >= X because [5], by (Select) 20] a!6220!6220U12(_|_, X) >= a!6220!6220isNeList(X) because [21], by (Star) 21] a!6220!6220U12*(_|_, X) >= a!6220!6220isNeList(X) because a!6220!6220U12 > a!6220!6220isNeList and [22], by (Copy) 22] a!6220!6220U12*(_|_, X) >= X because [23], by (Select) 23] X >= X by (Meta) 24] _|_ >= _|_ by (Bot) 25] a!6220!6220U21(_|_, X, Y) > a!6220!6220U22(X, X, Y) because [26], by definition 26] a!6220!6220U21*(_|_, X, Y) >= a!6220!6220U22(X, X, Y) because a!6220!6220U21 > a!6220!6220U22, [27], [27] and [29], by (Copy) 27] a!6220!6220U21*(_|_, X, Y) >= X because [28], by (Select) 28] X >= X by (Meta) 29] a!6220!6220U21*(_|_, X, Y) >= Y because [30], by (Select) 30] Y >= Y by (Meta) 31] a!6220!6220U23(_|_, X, Y) > a!6220!6220U24(Y, X, Y) because [32], by definition 32] a!6220!6220U23*(_|_, X, Y) >= a!6220!6220U24(Y, X, Y) because a!6220!6220U23 > a!6220!6220U24, [33], [34] and [33], by (Copy) 33] a!6220!6220U23*(_|_, X, Y) >= Y because [30], by (Select) 34] a!6220!6220U23*(_|_, X, Y) >= X because [28], by (Select) 35] a!6220!6220U24(_|_, X, Y) > a!6220!6220U25(a!6220!6220isList(X), Y) because [36], by definition 36] a!6220!6220U24*(_|_, X, Y) >= a!6220!6220U25(a!6220!6220isList(X), Y) because a!6220!6220U24 > a!6220!6220U25, [37] and [39], by (Copy) 37] a!6220!6220U24*(_|_, X, Y) >= a!6220!6220isList(X) because a!6220!6220U24 > a!6220!6220isList and [38], by (Copy) 38] a!6220!6220U24*(_|_, X, Y) >= X because [28], by (Select) 39] a!6220!6220U24*(_|_, X, Y) >= Y because [30], by (Select) 40] a!6220!6220U25(_|_, X) >= a!6220!6220isList(X) because [41], by (Star) 41] a!6220!6220U25*(_|_, X) >= a!6220!6220isList(X) because a!6220!6220U25 > a!6220!6220isList and [42], by (Copy) 42] a!6220!6220U25*(_|_, X) >= X because [30], by (Select) 43] _|_ >= _|_ by (Bot) 44] a!6220!6220U31(_|_, X) > a!6220!6220U32(X, X) because [45], by definition 45] a!6220!6220U31*(_|_, X) >= a!6220!6220U32(X, X) because a!6220!6220U31 > a!6220!6220U32, [46] and [46], by (Copy) 46] a!6220!6220U31*(_|_, X) >= X because [23], by (Select) 47] a!6220!6220U32(_|_, X) >= a!6220!6220U33(X) because [48], by (Star) 48] a!6220!6220U32*(_|_, X) >= a!6220!6220U33(X) because a!6220!6220U32 = a!6220!6220U33, a!6220!6220U32 in Mul and [49], by (Stat) 49] X >= X by (Meta) 50] a!6220!6220U33(_|_) >= _|_ by (Bot) 51] a!6220!6220U41(_|_, X, Y) > a!6220!6220U42(X, X, Y) because [52], by definition 52] a!6220!6220U41*(_|_, X, Y) >= a!6220!6220U42(X, X, Y) because a!6220!6220U41 > a!6220!6220U42, [53], [53] and [54], by (Copy) 53] a!6220!6220U41*(_|_, X, Y) >= X because [28], by (Select) 54] a!6220!6220U41*(_|_, X, Y) >= Y because [30], by (Select) 55] a!6220!6220U42(_|_, X, Y) >= a!6220!6220U43(Y, X, Y) because [56], by (Star) 56] a!6220!6220U42*(_|_, X, Y) >= a!6220!6220U43(Y, X, Y) because a!6220!6220U42 > a!6220!6220U43, [57], [58] and [57], by (Copy) 57] a!6220!6220U42*(_|_, X, Y) >= Y because [30], by (Select) 58] a!6220!6220U42*(_|_, X, Y) >= X because [28], by (Select) 59] a!6220!6220U43(_|_, X, Y) >= a!6220!6220U44(Y, X, Y) because [60], by (Star) 60] a!6220!6220U43*(_|_, X, Y) >= a!6220!6220U44(Y, X, Y) because a!6220!6220U43 > a!6220!6220U44, [61], [62] and [61], by (Copy) 61] a!6220!6220U43*(_|_, X, Y) >= Y because [30], by (Select) 62] a!6220!6220U43*(_|_, X, Y) >= X because [28], by (Select) 63] a!6220!6220U44(_|_, X, Y) > a!6220!6220U45(a!6220!6220isList(X), Y) because [64], by definition 64] a!6220!6220U44*(_|_, X, Y) >= a!6220!6220U45(a!6220!6220isList(X), Y) because a!6220!6220U44 > a!6220!6220U45, [65] and [67], by (Copy) 65] a!6220!6220U44*(_|_, X, Y) >= a!6220!6220isList(X) because a!6220!6220U44 > a!6220!6220isList and [66], by (Copy) 66] a!6220!6220U44*(_|_, X, Y) >= X because [28], by (Select) 67] a!6220!6220U44*(_|_, X, Y) >= Y because [30], by (Select) 68] a!6220!6220U45(_|_, X) >= a!6220!6220isNeList(X) because [69], by (Star) 69] a!6220!6220U45*(_|_, X) >= a!6220!6220isNeList(X) because a!6220!6220U45 > a!6220!6220isNeList and [70], by (Copy) 70] a!6220!6220U45*(_|_, X) >= X because [30], by (Select) 71] a!6220!6220U53(_|_, X, Y) >= a!6220!6220U54(Y, X, Y) because [72], by (Star) 72] a!6220!6220U53*(_|_, X, Y) >= a!6220!6220U54(Y, X, Y) because a!6220!6220U53 > a!6220!6220U54, [73], [74] and [73], by (Copy) 73] a!6220!6220U53*(_|_, X, Y) >= Y because [30], by (Select) 74] a!6220!6220U53*(_|_, X, Y) >= X because [28], by (Select) 75] a!6220!6220U55(_|_, X) >= a!6220!6220U56(a!6220!6220isList(X)) because [76], by (Star) 76] a!6220!6220U55*(_|_, X) >= a!6220!6220U56(a!6220!6220isList(X)) because a!6220!6220U55 > a!6220!6220U56 and [77], by (Copy) 77] a!6220!6220U55*(_|_, X) >= a!6220!6220isList(X) because a!6220!6220U55 > a!6220!6220isList and [78], by (Copy) 78] a!6220!6220U55*(_|_, X) >= X because [30], by (Select) 79] a!6220!6220U56(_|_) >= _|_ by (Bot) 80] a!6220!6220U61(_|_, X) > a!6220!6220U62(X, X) because [81], by definition 81] a!6220!6220U61*(_|_, X) >= a!6220!6220U62(X, X) because a!6220!6220U61 > a!6220!6220U62, [82] and [82], by (Copy) 82] a!6220!6220U61*(_|_, X) >= X because [49], by (Select) 83] a!6220!6220U62(_|_, X) >= X because [84], by (Star) 84] a!6220!6220U62*(_|_, X) >= X because [49], by (Select) 85] _|_ >= _|_ by (Bot) 86] a!6220!6220U73(_|_, X) >= X because [87], by (Star) 87] a!6220!6220U73*(_|_, X) >= X because [88], by (Select) 88] X >= X by (Meta) 89] _|_ >= _|_ by (Bot) 90] a!6220!6220U81(_|_, X) >= a!6220!6220U82(X, X) because [91], by (Star) 91] a!6220!6220U81*(_|_, X) >= a!6220!6220U82(X, X) because a!6220!6220U81 > a!6220!6220U82, [92] and [92], by (Copy) 92] a!6220!6220U81*(_|_, X) >= X because [49], by (Select) 93] a!6220!6220U82(_|_, X) > a!6220!6220isNePal(X) because [94], by definition 94] a!6220!6220U82*(_|_, X) >= a!6220!6220isNePal(X) because a!6220!6220U82 > a!6220!6220isNePal and [95], by (Copy) 95] a!6220!6220U82*(_|_, X) >= X because [49], by (Select) 96] _|_ >= _|_ by (Bot) 97] a!6220!6220U91(_|_, X) >= X because [98], by (Star) 98] a!6220!6220U91*(_|_, X) >= X because [30], by (Select) 99] _|_ >= _|_ by (Bot) 100] a!6220!6220isList(!6220!6220(X, Y)) >= a!6220!6220U21(X, X, Y) because [101], by (Star) 101] a!6220!6220isList*(!6220!6220(X, Y)) >= a!6220!6220U21(X, X, Y) because a!6220!6220isList > a!6220!6220U21, [102], [102] and [105], by (Copy) 102] a!6220!6220isList*(!6220!6220(X, Y)) >= X because [103], by (Select) 103] !6220!6220(X, Y) >= X because [104], by (Star) 104] !6220!6220*(X, Y) >= X because [28], by (Select) 105] a!6220!6220isList*(!6220!6220(X, Y)) >= Y because [106], by (Select) 106] !6220!6220(X, Y) >= Y because [107], by (Star) 107] !6220!6220*(X, Y) >= Y because [30], by (Select) 108] a!6220!6220isNeList(X) >= a!6220!6220U31(X, X) because [109], by (Star) 109] a!6220!6220isNeList*(X) >= a!6220!6220U31(X, X) because a!6220!6220isNeList > a!6220!6220U31, [110] and [110], by (Copy) 110] a!6220!6220isNeList*(X) >= X because [49], by (Select) 111] a!6220!6220isNeList(!6220!6220(X, Y)) > a!6220!6220U51(X, X, Y) because [112], by definition 112] a!6220!6220isNeList*(!6220!6220(X, Y)) >= a!6220!6220U51(X, X, Y) because [113], by (Select) 113] !6220!6220(X, Y) >= a!6220!6220U51(X, X, Y) because [114], by (Star) 114] !6220!6220*(X, Y) >= a!6220!6220U51(X, X, Y) because !6220!6220 > a!6220!6220U51, [115], [115] and [116], by (Copy) 115] !6220!6220*(X, Y) >= X because [28], by (Select) 116] !6220!6220*(X, Y) >= Y because [30], by (Select) 117] a!6220!6220isNePal(!6220!6220(X, !6220!6220(Y, X))) >= a!6220!6220U71(X, X, Y) because [118], by (Star) 118] a!6220!6220isNePal*(!6220!6220(X, !6220!6220(Y, X))) >= a!6220!6220U71(X, X, Y) because a!6220!6220isNePal > a!6220!6220U71, [119], [119] and [123], by (Copy) 119] a!6220!6220isNePal*(!6220!6220(X, !6220!6220(Y, X))) >= X because [120], by (Select) 120] !6220!6220(X, !6220!6220(Y, X)) >= X because [121], by (Star) 121] !6220!6220*(X, !6220!6220(Y, X)) >= X because [122], by (Select) 122] X >= X by (Meta) 123] a!6220!6220isNePal*(!6220!6220(X, !6220!6220(Y, X))) >= Y because [124], by (Select) 124] !6220!6220(X, !6220!6220(Y, X)) >= Y because [125], by (Star) 125] !6220!6220*(X, !6220!6220(Y, X)) >= Y because [126], by (Select) 126] !6220!6220(Y, X) >= Y because [127], by (Star) 127] !6220!6220*(Y, X) >= Y because [88], by (Select) 128] a >= _|_ by (Bot) 129] _|_ >= _|_ by (Bot) 130] u >= _|_ by (Bot) 131] e >= _|_ by (Bot) 132] !6220!6220(X, Y) >= a!6220!6220!6220!6220(X, Y) because !6220!6220 = a!6220!6220!6220!6220, [133] and [134], by (Fun) 133] X >= X by (Meta) 134] Y >= Y by (Meta) 135] U11(X, Y) >= a!6220!6220U11(X, Y) because U11 = a!6220!6220U11, U11 in Mul, [133] and [134], by (Fun) 136] U12(X, Y) >= a!6220!6220U12(X, Y) because U12 = a!6220!6220U12, U12 in Mul, [133] and [134], by (Fun) 137] X >= X by (Meta) 138] X >= X by (Meta) 139] isNeList(X) >= a!6220!6220isNeList(X) because isNeList = a!6220!6220isNeList, isNeList in Mul and [140], by (Fun) 140] X >= X by (Meta) 141] U21(X, Y, Z) >= a!6220!6220U21(X, Y, Z) because U21 = a!6220!6220U21, U21 in Mul, [133], [134] and [142], by (Fun) 142] Z >= Z by (Meta) 143] U22(X, Y, Z) >= a!6220!6220U22(X, Y, Z) because U22 = a!6220!6220U22, U22 in Mul, [133], [134] and [142], by (Fun) 144] U23(X, Y, Z) >= a!6220!6220U23(X, Y, Z) because U23 = a!6220!6220U23, U23 in Mul, [133], [134] and [142], by (Fun) 145] U24(X, Y, Z) >= a!6220!6220U24(X, Y, Z) because U24 = a!6220!6220U24, U24 in Mul, [133], [134] and [142], by (Fun) 146] U25(X, Y) >= a!6220!6220U25(X, Y) because U25 = a!6220!6220U25, U25 in Mul, [133] and [134], by (Fun) 147] isList(X) >= a!6220!6220isList(X) because isList = a!6220!6220isList, isList in Mul and [140], by (Fun) 148] X >= X by (Meta) 149] U31(X, Y) >= a!6220!6220U31(X, Y) because U31 = a!6220!6220U31, U31 in Mul, [133] and [134], by (Fun) 150] U32(X, Y) >= a!6220!6220U32(X, Y) because U32 = a!6220!6220U32, U32 in Mul, [133] and [134], by (Fun) 151] U33(X) >= a!6220!6220U33(X) because U33 = a!6220!6220U33, U33 in Mul and [152], by (Fun) 152] X >= X by (Meta) 153] X >= X by (Meta) 154] U41(X, Y, Z) >= a!6220!6220U41(X, Y, Z) because U41 = a!6220!6220U41, U41 in Mul, [133], [134] and [142], by (Fun) 155] U42(X, Y, Z) >= a!6220!6220U42(X, Y, Z) because U42 = a!6220!6220U42, U42 in Mul, [133], [134] and [142], by (Fun) 156] U43(X, Y, Z) >= a!6220!6220U43(X, Y, Z) because U43 = a!6220!6220U43, U43 in Mul, [133], [134] and [142], by (Fun) 157] U44(X, Y, Z) >= a!6220!6220U44(X, Y, Z) because U44 = a!6220!6220U44, U44 in Mul, [133], [134] and [142], by (Fun) 158] U45(X, Y) >= a!6220!6220U45(X, Y) because U45 = a!6220!6220U45, U45 in Mul, [133] and [134], by (Fun) 159] X >= X by (Meta) 160] U51(X, Y, Z) >= a!6220!6220U51(X, Y, Z) because U51 = a!6220!6220U51, U51 in Mul, [133], [134] and [142], by (Fun) 161] U52(X, Y, Z) >= a!6220!6220U52(X, Y, Z) because U52 = a!6220!6220U52, U52 in Mul, [133], [134] and [142], by (Fun) 162] U53(X, Y, Z) >= a!6220!6220U53(X, Y, Z) because U53 = a!6220!6220U53, U53 in Mul, [133], [134] and [142], by (Fun) 163] U54(X, Y, Z) >= a!6220!6220U54(X, Y, Z) because U54 = a!6220!6220U54, U54 in Mul, [133], [134] and [142], by (Fun) 164] U55(X, Y) >= a!6220!6220U55(X, Y) because U55 = a!6220!6220U55, U55 in Mul, [133] and [134], by (Fun) 165] U56(X) >= a!6220!6220U56(X) because U56 = a!6220!6220U56, U56 in Mul and [152], by (Fun) 166] U61(X, Y) >= a!6220!6220U61(X, Y) because U61 = a!6220!6220U61, U61 in Mul, [133] and [134], by (Fun) 167] U62(X, Y) >= a!6220!6220U62(X, Y) because U62 = a!6220!6220U62, U62 in Mul, [133] and [134], 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, [133], [134] and [142], by (Fun) 170] U72(X, Y) >= a!6220!6220U72(X, Y) because U72 = a!6220!6220U72, U72 in Mul, [133] and [134], by (Fun) 171] U73(X, Y) >= a!6220!6220U73(X, Y) because U73 = a!6220!6220U73, U73 in Mul, [133] and [134], by (Fun) 172] isPal(X) >= a!6220!6220isPal(X) because isPal = a!6220!6220isPal, isPal in Mul and [152], by (Fun) 173] X >= X by (Meta) 174] U81(X, Y) >= a!6220!6220U81(X, Y) because U81 = a!6220!6220U81, U81 in Mul, [133] and [134], by (Fun) 175] U82(X, Y) >= a!6220!6220U82(X, Y) because U82 = a!6220!6220U82, U82 in Mul, [133] and [134], by (Fun) 176] X >= X by (Meta) 177] isNePal(X) >= a!6220!6220isNePal(X) because isNePal = a!6220!6220isNePal, isNePal in Mul and [152], by (Fun) 178] U91(X, Y) >= a!6220!6220U91(X, Y) because U91 = a!6220!6220U91, U91 in Mul, [133] and [134], by (Fun) 179] X >= X by (Meta) 180] _|_ >= _|_ by (Bot) 181] _|_ >= _|_ by (Bot) 182] a >= a by (Fun) 183] e >= e by (Fun) 184] i >= i by (Fun) 185] _|_ >= _|_ by (Bot) 186] u >= u by (Fun) 187] a!6220!6220!6220!6220(X, Y) >= !6220!6220(X, Y) because a!6220!6220!6220!6220 = !6220!6220, [133] and [134], by (Fun) 188] a!6220!6220U11(X, Y) >= U11(X, Y) because a!6220!6220U11 = U11, a!6220!6220U11 in Mul, [133] and [134], by (Fun) 189] a!6220!6220U12(X, Y) >= U12(X, Y) because a!6220!6220U12 = U12, a!6220!6220U12 in Mul, [133] and [134], by (Fun) 190] X >= X by (Meta) 191] X >= X by (Meta) 192] a!6220!6220isNeList(X) >= isNeList(X) because a!6220!6220isNeList = isNeList, a!6220!6220isNeList in Mul and [152], by (Fun) 193] a!6220!6220U21(X, Y, Z) >= U21(X, Y, Z) because a!6220!6220U21 = U21, a!6220!6220U21 in Mul, [133], [134] and [142], by (Fun) 194] a!6220!6220U22(X, Y, Z) >= U22(X, Y, Z) because a!6220!6220U22 = U22, a!6220!6220U22 in Mul, [133], [134] and [142], by (Fun) 195] a!6220!6220U23(X, Y, Z) >= U23(X, Y, Z) because a!6220!6220U23 = U23, a!6220!6220U23 in Mul, [133], [134] and [142], by (Fun) 196] a!6220!6220U24(X, Y, Z) >= U24(X, Y, Z) because a!6220!6220U24 = U24, a!6220!6220U24 in Mul, [133], [134] and [142], by (Fun) 197] a!6220!6220U25(X, Y) >= U25(X, Y) because a!6220!6220U25 = U25, a!6220!6220U25 in Mul, [133] and [134], by (Fun) 198] a!6220!6220isList(X) >= isList(X) because a!6220!6220isList = isList, a!6220!6220isList in Mul and [152], by (Fun) 199] X >= X by (Meta) 200] a!6220!6220U31(X, Y) >= U31(X, Y) because a!6220!6220U31 = U31, a!6220!6220U31 in Mul, [133] and [134], by (Fun) 201] a!6220!6220U32(X, Y) >= U32(X, Y) because a!6220!6220U32 = U32, a!6220!6220U32 in Mul, [133] and [134], by (Fun) 202] a!6220!6220U33(X) >= U33(X) because a!6220!6220U33 = U33, a!6220!6220U33 in Mul and [152], by (Fun) 203] X >= X by (Meta) 204] a!6220!6220U41(X, Y, Z) >= U41(X, Y, Z) because a!6220!6220U41 = U41, a!6220!6220U41 in Mul, [133], [134] and [142], by (Fun) 205] a!6220!6220U42(X, Y, Z) >= U42(X, Y, Z) because a!6220!6220U42 = U42, a!6220!6220U42 in Mul, [133], [134] and [142], by (Fun) 206] a!6220!6220U43(X, Y, Z) >= U43(X, Y, Z) because a!6220!6220U43 = U43, a!6220!6220U43 in Mul, [133], [134] and [142], by (Fun) 207] a!6220!6220U44(X, Y, Z) >= U44(X, Y, Z) because a!6220!6220U44 = U44, a!6220!6220U44 in Mul, [133], [134] and [142], by (Fun) 208] a!6220!6220U45(X, Y) >= U45(X, Y) because a!6220!6220U45 = U45, a!6220!6220U45 in Mul, [133] and [134], by (Fun) 209] X >= X by (Meta) 210] a!6220!6220U51(X, Y, Z) >= U51(X, Y, Z) because a!6220!6220U51 = U51, a!6220!6220U51 in Mul, [133], [134] and [142], by (Fun) 211] a!6220!6220U52(X, Y, Z) >= U52(X, Y, Z) because a!6220!6220U52 = U52, a!6220!6220U52 in Mul, [133], [134] and [142], by (Fun) 212] a!6220!6220U53(X, Y, Z) >= U53(X, Y, Z) because a!6220!6220U53 = U53, a!6220!6220U53 in Mul, [133], [134] and [142], by (Fun) 213] a!6220!6220U54(X, Y, Z) >= U54(X, Y, Z) because a!6220!6220U54 = U54, a!6220!6220U54 in Mul, [133], [134] and [142], by (Fun) 214] a!6220!6220U55(X, Y) >= U55(X, Y) because a!6220!6220U55 = U55, a!6220!6220U55 in Mul, [133] and [134], by (Fun) 215] a!6220!6220U56(X) >= U56(X) because a!6220!6220U56 = U56, a!6220!6220U56 in Mul and [152], by (Fun) 216] a!6220!6220U61(X, Y) >= U61(X, Y) because a!6220!6220U61 = U61, a!6220!6220U61 in Mul, [133] and [134], by (Fun) 217] a!6220!6220U62(X, Y) >= U62(X, Y) because a!6220!6220U62 = U62, a!6220!6220U62 in Mul, [133] and [134], by (Fun) 218] X >= X by (Meta) 219] a!6220!6220U71(X, Y, Z) >= U71(X, Y, Z) because a!6220!6220U71 = U71, a!6220!6220U71 in Mul, [133], [134] and [142], by (Fun) 220] a!6220!6220U72(X, Y) >= U72(X, Y) because a!6220!6220U72 = U72, a!6220!6220U72 in Mul, [133] and [134], by (Fun) 221] a!6220!6220U73(X, Y) >= U73(X, Y) because a!6220!6220U73 = U73, a!6220!6220U73 in Mul, [133] and [134], by (Fun) 222] a!6220!6220isPal(X) >= isPal(X) because a!6220!6220isPal = isPal, a!6220!6220isPal in Mul and [152], by (Fun) 223] X >= X by (Meta) 224] a!6220!6220U81(X, Y) >= U81(X, Y) because a!6220!6220U81 = U81, a!6220!6220U81 in Mul, [133] and [134], by (Fun) 225] a!6220!6220U82(X, Y) >= U82(X, Y) because a!6220!6220U82 = U82, a!6220!6220U82 in Mul, [133] and [134], by (Fun) 226] X >= X by (Meta) 227] a!6220!6220isNePal(X) >= isNePal(X) because a!6220!6220isNePal = isNePal, a!6220!6220isNePal in Mul and [152], by (Fun) 228] a!6220!6220U91(X, Y) >= U91(X, Y) because a!6220!6220U91 = U91, a!6220!6220U91 in Mul, [133] and [134], by (Fun) 229] X >= X by (Meta) We can thus remove the following rules: a!6220!6220U21(tt, X, Y) => a!6220!6220U22(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U23(tt, X, Y) => a!6220!6220U24(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U24(tt, X, Y) => a!6220!6220U25(a!6220!6220isList(X), Y) a!6220!6220U31(tt, X) => a!6220!6220U32(a!6220!6220isPalListKind(X), X) a!6220!6220U41(tt, X, Y) => a!6220!6220U42(a!6220!6220isPalListKind(X), X, Y) a!6220!6220U44(tt, X, Y) => a!6220!6220U45(a!6220!6220isList(X), Y) a!6220!6220U61(tt, X) => a!6220!6220U62(a!6220!6220isPalListKind(X), X) a!6220!6220U82(tt, X) => a!6220!6220U83(a!6220!6220isNePal(X)) a!6220!6220isNeList(!6220!6220(X, Y)) => a!6220!6220U51(a!6220!6220isPalListKind(X), X, Y) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220!6220!6220(X, nil) >? mark(X) a!6220!6220!6220!6220(nil, X) >? mark(X) a!6220!6220U12(tt, X) >? a!6220!6220U13(a!6220!6220isNeList(X)) a!6220!6220U13(tt) >? tt a!6220!6220U25(tt, X) >? a!6220!6220U26(a!6220!6220isList(X)) a!6220!6220U26(tt) >? tt a!6220!6220U32(tt, X) >? a!6220!6220U33(a!6220!6220isQid(X)) a!6220!6220U33(tt) >? tt a!6220!6220U42(tt, X, Y) >? a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U43(tt, X, Y) >? a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U45(tt, X) >? a!6220!6220U46(a!6220!6220isNeList(X)) a!6220!6220U53(tt, X, Y) >? a!6220!6220U54(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U55(tt, X) >? a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U56(tt) >? tt a!6220!6220U62(tt, X) >? a!6220!6220U63(a!6220!6220isQid(X)) a!6220!6220U63(tt) >? tt a!6220!6220U73(tt, X) >? a!6220!6220U74(a!6220!6220isPalListKind(X)) a!6220!6220U74(tt) >? tt a!6220!6220U81(tt, X) >? a!6220!6220U82(a!6220!6220isPalListKind(X), X) a!6220!6220U83(tt) >? tt a!6220!6220U91(tt, X) >? a!6220!6220U92(a!6220!6220isPalListKind(X)) a!6220!6220U92(tt) >? tt a!6220!6220isList(!6220!6220(X, Y)) >? a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) a!6220!6220isNePal(!6220!6220(X, !6220!6220(Y, X))) >? a!6220!6220U71(a!6220!6220isQid(X), X, Y) a!6220!6220isPalListKind(a) >? tt a!6220!6220isPalListKind(nil) >? tt a!6220!6220isPalListKind(u) >? tt a!6220!6220isQid(e) >? tt mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + 2y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.3 + y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + 3y2 U43 = \y0y1y2.y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.2y0 + 2y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + 2y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + 2y1 U63 = \y0.2y0 U71 = \y0y1y2.1 + y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.1 + y0 + 2y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 1 a!6220!6220!6220!6220 = \y0y1.y1 + 2y0 a!6220!6220U11 = \y0y1.y0 + y1 a!6220!6220U12 = \y0y1.y0 + 2y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y0 + y1 + y2 a!6220!6220U25 = \y0y1.3 + y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.y0 + y1 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.y0 + y1 + 3y2 a!6220!6220U43 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U44 = \y0y1y2.y0 + y1 + y2 a!6220!6220U45 = \y0y1.2y0 + 2y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.y0 + 2y1 a!6220!6220U63 = \y0.2y0 a!6220!6220U71 = \y0y1y2.1 + y0 + y1 + y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y0 + y1 a!6220!6220U74 = \y0.y0 a!6220!6220U81 = \y0y1.1 + y0 + 2y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.2y0 a!6220!6220isNePal = \y0.2 + y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.y0 a!6220!6220isQid = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.2 + y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = x2 + 2x1 + 4x0 >= x2 + 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[a!6220!6220!6220!6220(_x0, nil)]] = 2x0 >= x0 = [[mark(_x0)]] [[a!6220!6220!6220!6220(nil, _x0)]] = x0 >= x0 = [[mark(_x0)]] [[a!6220!6220U12(tt, _x0)]] = 2x0 >= 2x0 = [[a!6220!6220U13(a!6220!6220isNeList(_x0))]] [[a!6220!6220U13(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U25(tt, _x0)]] = 3 + x0 > x0 = [[a!6220!6220U26(a!6220!6220isList(_x0))]] [[a!6220!6220U26(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U32(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U33(a!6220!6220isQid(_x0))]] [[a!6220!6220U33(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U42(tt, _x0, _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[a!6220!6220U43(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U43(tt, _x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U44(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U45(tt, _x0)]] = 2x0 >= 2x0 = [[a!6220!6220U46(a!6220!6220isNeList(_x0))]] [[a!6220!6220U53(tt, _x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U54(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U55(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U56(a!6220!6220isList(_x0))]] [[a!6220!6220U56(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U62(tt, _x0)]] = 2x0 >= 2x0 = [[a!6220!6220U63(a!6220!6220isQid(_x0))]] [[a!6220!6220U63(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U73(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U74(a!6220!6220isPalListKind(_x0))]] [[a!6220!6220U74(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U81(tt, _x0)]] = 1 + 2x0 > 2x0 = [[a!6220!6220U82(a!6220!6220isPalListKind(_x0), _x0)]] [[a!6220!6220U83(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U91(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U92(a!6220!6220isPalListKind(_x0))]] [[a!6220!6220U92(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220isList(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220U21(a!6220!6220isPalListKind(_x0), _x0, _x1)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[a!6220!6220U31(a!6220!6220isPalListKind(_x0), _x0)]] [[a!6220!6220isNePal(!6220!6220(_x0, !6220!6220(_x1, _x0)))]] = 2 + 2x1 + 3x0 > 1 + x1 + 2x0 = [[a!6220!6220U71(a!6220!6220isQid(_x0), _x0, _x1)]] [[a!6220!6220isPalListKind(a)]] = 1 > 0 = [[tt]] [[a!6220!6220isPalListKind(nil)]] = 0 >= 0 = [[tt]] [[a!6220!6220isPalListKind(u)]] = 0 >= 0 = [[tt]] [[a!6220!6220isQid(e)]] = 0 >= 0 = [[tt]] [[mark(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = x0 >= x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = x0 >= x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = x0 >= x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = x0 >= x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = x0 >= x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = x0 >= x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = 2 + x0 >= 2 + x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = x0 >= x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 0 >= 0 = [[tt]] [[mark(a)]] = 1 >= 1 = [[a]] [[mark(e)]] = 0 >= 0 = [[e]] [[mark(i)]] = 0 >= 0 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = x0 >= x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = 2x0 >= 2x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = x0 >= x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = 2 + x0 >= 2 + x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220U25(tt, X) => a!6220!6220U26(a!6220!6220isList(X)) a!6220!6220U81(tt, X) => a!6220!6220U82(a!6220!6220isPalListKind(X), X) a!6220!6220isNePal(!6220!6220(X, !6220!6220(Y, X))) => a!6220!6220U71(a!6220!6220isQid(X), X, Y) a!6220!6220isPalListKind(a) => tt We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220!6220!6220(X, nil) >? mark(X) a!6220!6220!6220!6220(nil, X) >? mark(X) a!6220!6220U12(tt, X) >? a!6220!6220U13(a!6220!6220isNeList(X)) a!6220!6220U13(tt) >? tt a!6220!6220U26(tt) >? tt a!6220!6220U32(tt, X) >? a!6220!6220U33(a!6220!6220isQid(X)) a!6220!6220U33(tt) >? tt a!6220!6220U42(tt, X, Y) >? a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U43(tt, X, Y) >? a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U45(tt, X) >? a!6220!6220U46(a!6220!6220isNeList(X)) a!6220!6220U53(tt, X, Y) >? a!6220!6220U54(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U55(tt, X) >? a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U56(tt) >? tt a!6220!6220U62(tt, X) >? a!6220!6220U63(a!6220!6220isQid(X)) a!6220!6220U63(tt) >? tt a!6220!6220U73(tt, X) >? a!6220!6220U74(a!6220!6220isPalListKind(X)) a!6220!6220U74(tt) >? tt a!6220!6220U83(tt) >? tt a!6220!6220U91(tt, X) >? a!6220!6220U92(a!6220!6220isPalListKind(X)) a!6220!6220U92(tt) >? tt a!6220!6220isList(!6220!6220(X, Y)) >? a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) a!6220!6220isPalListKind(nil) >? tt a!6220!6220isPalListKind(u) >? tt a!6220!6220isQid(e) >? tt mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y0 + 2y1 U12 = \y0y1.y0 + 2y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y2 + 2y0 + 2y1 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y1 + y2 + 2y0 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.2 + y0 + 2y1 U33 = \y0.2y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + 3y2 U43 = \y0y1y2.y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + 2y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.2 + y1 + 2y0 + 2y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 a!6220!6220!6220!6220 = \y0y1.y1 + 2y0 a!6220!6220U11 = \y0y1.y0 + 2y1 a!6220!6220U12 = \y0y1.y0 + 2y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y2 + 2y0 + 2y1 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y1 + y2 + 2y0 a!6220!6220U25 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.y0 + y1 a!6220!6220U32 = \y0y1.2 + y0 + 2y1 a!6220!6220U33 = \y0.2y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.y0 + y1 + 3y2 a!6220!6220U43 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U44 = \y0y1y2.y0 + y1 + y2 a!6220!6220U45 = \y0y1.y0 + 2y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.2 + y1 + 2y0 + 2y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.y0 + y1 a!6220!6220U63 = \y0.y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y0 + y1 a!6220!6220U74 = \y0.y0 a!6220!6220U81 = \y0y1.y0 + y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.2y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.y0 a!6220!6220isQid = \y0.y0 e = 0 i = 1 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 1 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = x2 + 2x1 + 4x0 >= x2 + 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[a!6220!6220!6220!6220(_x0, nil)]] = 2x0 >= x0 = [[mark(_x0)]] [[a!6220!6220!6220!6220(nil, _x0)]] = x0 >= x0 = [[mark(_x0)]] [[a!6220!6220U12(tt, _x0)]] = 2x0 >= 2x0 = [[a!6220!6220U13(a!6220!6220isNeList(_x0))]] [[a!6220!6220U13(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U26(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U32(tt, _x0)]] = 2 + 2x0 > 2x0 = [[a!6220!6220U33(a!6220!6220isQid(_x0))]] [[a!6220!6220U33(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U42(tt, _x0, _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[a!6220!6220U43(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U43(tt, _x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U44(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U45(tt, _x0)]] = 2x0 >= 2x0 = [[a!6220!6220U46(a!6220!6220isNeList(_x0))]] [[a!6220!6220U53(tt, _x0, _x1)]] = 2 + x0 + 2x1 > x0 + 2x1 = [[a!6220!6220U54(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U55(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U56(a!6220!6220isList(_x0))]] [[a!6220!6220U56(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U62(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U63(a!6220!6220isQid(_x0))]] [[a!6220!6220U63(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U73(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U74(a!6220!6220isPalListKind(_x0))]] [[a!6220!6220U74(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U83(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U91(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U92(a!6220!6220isPalListKind(_x0))]] [[a!6220!6220U92(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220isList(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220U21(a!6220!6220isPalListKind(_x0), _x0, _x1)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[a!6220!6220U31(a!6220!6220isPalListKind(_x0), _x0)]] [[a!6220!6220isPalListKind(nil)]] = 0 >= 0 = [[tt]] [[a!6220!6220isPalListKind(u)]] = 1 > 0 = [[tt]] [[a!6220!6220isQid(e)]] = 0 >= 0 = [[tt]] [[mark(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = x0 >= x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = 2 + x0 + 2x1 >= 2 + x0 + 2x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = x0 >= x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = 2 + x1 + 2x0 + 2x2 >= 2 + x1 + 2x0 + 2x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = x0 >= x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = x0 >= x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = x0 >= x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = x0 >= x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = x0 >= x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 0 >= 0 = [[tt]] [[mark(a)]] = 0 >= 0 = [[a]] [[mark(e)]] = 0 >= 0 = [[e]] [[mark(i)]] = 1 >= 1 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 1 >= 1 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = 2 + x0 + 2x1 >= 2 + x0 + 2x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = 2x0 >= 2x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = 2 + x1 + 2x0 + 2x2 >= 2 + x1 + 2x0 + 2x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = x0 >= x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = x0 >= x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220U32(tt, X) => a!6220!6220U33(a!6220!6220isQid(X)) a!6220!6220U53(tt, X, Y) => a!6220!6220U54(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220isPalListKind(u) => tt We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220!6220!6220(X, nil) >? mark(X) a!6220!6220!6220!6220(nil, X) >? mark(X) a!6220!6220U12(tt, X) >? a!6220!6220U13(a!6220!6220isNeList(X)) a!6220!6220U13(tt) >? tt a!6220!6220U26(tt) >? tt a!6220!6220U33(tt) >? tt a!6220!6220U42(tt, X, Y) >? a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U43(tt, X, Y) >? a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U45(tt, X) >? a!6220!6220U46(a!6220!6220isNeList(X)) a!6220!6220U55(tt, X) >? a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U56(tt) >? tt a!6220!6220U62(tt, X) >? a!6220!6220U63(a!6220!6220isQid(X)) a!6220!6220U63(tt) >? tt a!6220!6220U73(tt, X) >? a!6220!6220U74(a!6220!6220isPalListKind(X)) a!6220!6220U74(tt) >? tt a!6220!6220U83(tt) >? tt a!6220!6220U91(tt, X) >? a!6220!6220U92(a!6220!6220isPalListKind(X)) a!6220!6220U92(tt) >? tt a!6220!6220isList(!6220!6220(X, Y)) >? a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) a!6220!6220isPalListKind(nil) >? tt a!6220!6220isQid(e) >? tt mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + 2y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y2 + 2y1 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.1 + y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y1 + 2y0 + 3y2 U43 = \y0y1y2.y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + 2y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.2 + y1 + 2y0 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 a!6220!6220!6220!6220 = \y0y1.y1 + 2y0 a!6220!6220U11 = \y0y1.y0 + y1 a!6220!6220U12 = \y0y1.y0 + 2y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y0 + y2 + 2y1 a!6220!6220U25 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.y0 + y1 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.1 + y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.y1 + 2y0 + 3y2 a!6220!6220U43 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U44 = \y0y1y2.y0 + y1 + y2 a!6220!6220U45 = \y0y1.y0 + 2y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.2 + y1 + 2y0 a!6220!6220U63 = \y0.y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y0 + y1 a!6220!6220U74 = \y0.y0 a!6220!6220U81 = \y0y1.y0 + y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.2y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.y0 a!6220!6220isQid = \y0.y0 e = 1 i = 0 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = x2 + 2x1 + 4x0 >= x2 + 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[a!6220!6220!6220!6220(_x0, nil)]] = 2x0 >= x0 = [[mark(_x0)]] [[a!6220!6220!6220!6220(nil, _x0)]] = x0 >= x0 = [[mark(_x0)]] [[a!6220!6220U12(tt, _x0)]] = 2x0 >= 2x0 = [[a!6220!6220U13(a!6220!6220isNeList(_x0))]] [[a!6220!6220U13(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U26(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U33(tt)]] = 1 > 0 = [[tt]] [[a!6220!6220U42(tt, _x0, _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[a!6220!6220U43(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U43(tt, _x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U44(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U45(tt, _x0)]] = 2x0 >= 2x0 = [[a!6220!6220U46(a!6220!6220isNeList(_x0))]] [[a!6220!6220U55(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U56(a!6220!6220isList(_x0))]] [[a!6220!6220U56(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U62(tt, _x0)]] = 2 + x0 > x0 = [[a!6220!6220U63(a!6220!6220isQid(_x0))]] [[a!6220!6220U63(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U73(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U74(a!6220!6220isPalListKind(_x0))]] [[a!6220!6220U74(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U83(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U91(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U92(a!6220!6220isPalListKind(_x0))]] [[a!6220!6220U92(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220isList(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220U21(a!6220!6220isPalListKind(_x0), _x0, _x1)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[a!6220!6220U31(a!6220!6220isPalListKind(_x0), _x0)]] [[a!6220!6220isPalListKind(nil)]] = 0 >= 0 = [[tt]] [[a!6220!6220isQid(e)]] = 1 > 0 = [[tt]] [[mark(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = x0 >= x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = 1 + x0 >= 1 + x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = x1 + 2x0 + 3x2 >= x1 + 2x0 + 3x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = x0 >= x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = x0 >= x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = x0 >= x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = x0 >= x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = x0 >= x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = x0 >= x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 0 >= 0 = [[tt]] [[mark(a)]] = 0 >= 0 = [[a]] [[mark(e)]] = 1 >= 1 = [[e]] [[mark(i)]] = 0 >= 0 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = 1 + x0 >= 1 + x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = x1 + 2x0 + 3x2 >= x1 + 2x0 + 3x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = x0 >= x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = x0 >= x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220U33(tt) => tt a!6220!6220U62(tt, X) => a!6220!6220U63(a!6220!6220isQid(X)) a!6220!6220isQid(e) => tt We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220!6220!6220(X, nil) >? mark(X) a!6220!6220!6220!6220(nil, X) >? mark(X) a!6220!6220U12(tt, X) >? a!6220!6220U13(a!6220!6220isNeList(X)) a!6220!6220U13(tt) >? tt a!6220!6220U26(tt) >? tt a!6220!6220U42(tt, X, Y) >? a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U43(tt, X, Y) >? a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U45(tt, X) >? a!6220!6220U46(a!6220!6220isNeList(X)) a!6220!6220U55(tt, X) >? a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U56(tt) >? tt a!6220!6220U63(tt) >? tt a!6220!6220U73(tt, X) >? a!6220!6220U74(a!6220!6220isPalListKind(X)) a!6220!6220U74(tt) >? tt a!6220!6220U83(tt) >? tt a!6220!6220U91(tt, X) >? a!6220!6220U92(a!6220!6220isPalListKind(X)) a!6220!6220U92(tt) >? tt a!6220!6220isList(!6220!6220(X, Y)) >? a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) a!6220!6220isPalListKind(nil) >? tt mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y0 + 2y1 U12 = \y0y1.y0 + 3y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y1 + 2y0 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.1 + 2y0 + 2y1 + 3y2 U43 = \y0y1y2.1 + y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.1 + y0 + 3y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.1 + y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y1 + 2y0 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.1 + y1 + 2y0 U92 = \y0.y0 a = 0 a!6220!6220!6220!6220 = \y0y1.y1 + 2y0 a!6220!6220U11 = \y0y1.y0 + 2y1 a!6220!6220U12 = \y0y1.y0 + 3y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y0 + y1 + y2 a!6220!6220U25 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.y1 + 2y0 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.1 + 2y0 + 2y1 + 3y2 a!6220!6220U43 = \y0y1y2.1 + y0 + y1 + 2y2 a!6220!6220U44 = \y0y1y2.y0 + y1 + y2 a!6220!6220U45 = \y0y1.1 + y0 + 3y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.1 + y0 + y1 a!6220!6220U63 = \y0.y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y0 + y1 a!6220!6220U74 = \y0.y0 a!6220!6220U81 = \y0y1.y1 + 2y0 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.1 + y1 + 2y0 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.3y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.y0 a!6220!6220isQid = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.3y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = x2 + 2x1 + 4x0 >= x2 + 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[a!6220!6220!6220!6220(_x0, nil)]] = 2x0 >= x0 = [[mark(_x0)]] [[a!6220!6220!6220!6220(nil, _x0)]] = x0 >= x0 = [[mark(_x0)]] [[a!6220!6220U12(tt, _x0)]] = 3x0 >= 3x0 = [[a!6220!6220U13(a!6220!6220isNeList(_x0))]] [[a!6220!6220U13(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U26(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U42(tt, _x0, _x1)]] = 1 + 2x0 + 3x1 >= 1 + x0 + 3x1 = [[a!6220!6220U43(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U43(tt, _x0, _x1)]] = 1 + x0 + 2x1 > x0 + 2x1 = [[a!6220!6220U44(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U45(tt, _x0)]] = 1 + 3x0 > 3x0 = [[a!6220!6220U46(a!6220!6220isNeList(_x0))]] [[a!6220!6220U55(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U56(a!6220!6220isList(_x0))]] [[a!6220!6220U56(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U63(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U73(tt, _x0)]] = x0 >= x0 = [[a!6220!6220U74(a!6220!6220isPalListKind(_x0))]] [[a!6220!6220U74(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U83(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U91(tt, _x0)]] = 1 + x0 > x0 = [[a!6220!6220U92(a!6220!6220isPalListKind(_x0))]] [[a!6220!6220U92(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220isList(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220U21(a!6220!6220isPalListKind(_x0), _x0, _x1)]] [[a!6220!6220isNeList(_x0)]] = 3x0 >= 3x0 = [[a!6220!6220U31(a!6220!6220isPalListKind(_x0), _x0)]] [[a!6220!6220isPalListKind(nil)]] = 0 >= 0 = [[tt]] [[mark(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = x0 >= x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 3x0 >= 3x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = x0 >= x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = 1 + 2x0 + 2x1 + 3x2 >= 1 + 2x0 + 2x1 + 3x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = x0 >= x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = x0 >= x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = x0 >= x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = x0 >= x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = x0 >= x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = x0 >= x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 0 >= 0 = [[tt]] [[mark(a)]] = 0 >= 0 = [[a]] [[mark(e)]] = 0 >= 0 = [[e]] [[mark(i)]] = 0 >= 0 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 3x0 >= 3x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = x0 >= x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = 1 + 2x0 + 2x1 + 3x2 >= 1 + 2x0 + 2x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = x0 >= x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = x0 >= x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220U43(tt, X, Y) => a!6220!6220U44(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U45(tt, X) => a!6220!6220U46(a!6220!6220isNeList(X)) a!6220!6220U91(tt, X) => a!6220!6220U92(a!6220!6220isPalListKind(X)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220!6220!6220(X, nil) >? mark(X) a!6220!6220!6220!6220(nil, X) >? mark(X) a!6220!6220U12(tt, X) >? a!6220!6220U13(a!6220!6220isNeList(X)) a!6220!6220U13(tt) >? tt a!6220!6220U26(tt) >? tt a!6220!6220U42(tt, X, Y) >? a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U55(tt, X) >? a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U56(tt) >? tt a!6220!6220U63(tt) >? tt a!6220!6220U73(tt, X) >? a!6220!6220U74(a!6220!6220isPalListKind(X)) a!6220!6220U74(tt) >? tt a!6220!6220U83(tt) >? tt a!6220!6220U92(tt) >? tt a!6220!6220isList(!6220!6220(X, Y)) >? a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) a!6220!6220isPalListKind(nil) >? tt mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 3y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + 3y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.1 + y0 + y1 + 3y2 U43 = \y0y1y2.1 + y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + 2y1 U46 = \y0.2y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + 2y1 U56 = \y0.1 + 2y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + 2y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.2y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 a!6220!6220!6220!6220 = \y0y1.y1 + 3y0 a!6220!6220U11 = \y0y1.y0 + y1 a!6220!6220U12 = \y0y1.y0 + 3y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y0 + y1 + y2 a!6220!6220U25 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.y0 + y1 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.1 + y0 + y1 + 3y2 a!6220!6220U43 = \y0y1y2.1 + y0 + y1 + y2 a!6220!6220U44 = \y0y1y2.y0 + y1 + y2 a!6220!6220U45 = \y0y1.y0 + 2y1 a!6220!6220U46 = \y0.2y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + 2y1 a!6220!6220U56 = \y0.1 + 2y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.y0 + y1 a!6220!6220U63 = \y0.y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y0 + 2y1 a!6220!6220U74 = \y0.y0 a!6220!6220U81 = \y0y1.y0 + y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.2y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.3y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.2y0 a!6220!6220isQid = \y0.2y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.3y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.2y0 isQid = \y0.2y0 mark = \y0.y0 nil = 2 o = 0 tt = 1 u = 0 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = x2 + 3x1 + 9x0 >= x2 + 3x0 + 3x1 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[a!6220!6220!6220!6220(_x0, nil)]] = 2 + 3x0 > x0 = [[mark(_x0)]] [[a!6220!6220!6220!6220(nil, _x0)]] = 6 + x0 > x0 = [[mark(_x0)]] [[a!6220!6220U12(tt, _x0)]] = 1 + 3x0 > 3x0 = [[a!6220!6220U13(a!6220!6220isNeList(_x0))]] [[a!6220!6220U13(tt)]] = 1 >= 1 = [[tt]] [[a!6220!6220U26(tt)]] = 1 >= 1 = [[tt]] [[a!6220!6220U42(tt, _x0, _x1)]] = 2 + x0 + 3x1 > 1 + x0 + 3x1 = [[a!6220!6220U43(a!6220!6220isPalListKind(_x1), _x0, _x1)]] [[a!6220!6220U55(tt, _x0)]] = 1 + 2x0 >= 1 + 2x0 = [[a!6220!6220U56(a!6220!6220isList(_x0))]] [[a!6220!6220U56(tt)]] = 3 > 1 = [[tt]] [[a!6220!6220U63(tt)]] = 1 >= 1 = [[tt]] [[a!6220!6220U73(tt, _x0)]] = 1 + 2x0 > 2x0 = [[a!6220!6220U74(a!6220!6220isPalListKind(_x0))]] [[a!6220!6220U74(tt)]] = 1 >= 1 = [[tt]] [[a!6220!6220U83(tt)]] = 2 > 1 = [[tt]] [[a!6220!6220U92(tt)]] = 1 >= 1 = [[tt]] [[a!6220!6220isList(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[a!6220!6220U21(a!6220!6220isPalListKind(_x0), _x0, _x1)]] [[a!6220!6220isNeList(_x0)]] = 3x0 >= 3x0 = [[a!6220!6220U31(a!6220!6220isPalListKind(_x0), _x0)]] [[a!6220!6220isPalListKind(nil)]] = 4 > 1 = [[tt]] [[mark(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = x0 >= x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 3x0 >= 3x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = x0 >= x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = x0 >= x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = x0 >= x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = x0 >= x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 2 >= 2 = [[nil]] [[mark(tt)]] = 1 >= 1 = [[tt]] [[mark(a)]] = 0 >= 0 = [[a]] [[mark(e)]] = 0 >= 0 = [[e]] [[mark(i)]] = 0 >= 0 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = 2x0 >= 2x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 3x0 >= 3x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = x0 >= x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = 2x0 >= 2x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = 2x0 >= 2x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = 1 + 2x0 >= 1 + 2x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = x0 >= x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = x0 >= x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = 2x0 >= 2x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220!6220!6220(X, nil) => mark(X) a!6220!6220!6220!6220(nil, X) => mark(X) a!6220!6220U12(tt, X) => a!6220!6220U13(a!6220!6220isNeList(X)) a!6220!6220U42(tt, X, Y) => a!6220!6220U43(a!6220!6220isPalListKind(Y), X, Y) a!6220!6220U56(tt) => tt a!6220!6220U73(tt, X) => a!6220!6220U74(a!6220!6220isPalListKind(X)) a!6220!6220U83(tt) => tt a!6220!6220isPalListKind(nil) => tt We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220U13(tt) >? tt a!6220!6220U26(tt) >? tt a!6220!6220U55(tt, X) >? a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U63(tt) >? tt a!6220!6220U74(tt) >? tt a!6220!6220U92(tt) >? tt a!6220!6220isList(!6220!6220(X, Y)) >? a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.1 + y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + y2 + 2y1 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.2 + y0 + 2y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + 2y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + 2y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y1 + 2y0 U74 = \y0.1 + y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 a!6220!6220!6220!6220 = \y0y1.y1 + 2y0 a!6220!6220U11 = \y0y1.y0 + y1 a!6220!6220U12 = \y0y1.y0 + y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.1 + y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y0 + y1 + y2 a!6220!6220U25 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.y0 + y1 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.y0 + y1 + y2 a!6220!6220U43 = \y0y1y2.y0 + y1 + y2 a!6220!6220U44 = \y0y1y2.y0 + y2 + 2y1 a!6220!6220U45 = \y0y1.y0 + y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.2 + y0 + 2y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.y0 + 2y1 a!6220!6220U63 = \y0.y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y1 + 2y0 a!6220!6220U74 = \y0.1 + y0 a!6220!6220U81 = \y0y1.y0 + y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.2 + y0 a!6220!6220isNeList = \y0.2y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.y0 a!6220!6220isQid = \y0.y0 e = 0 i = 1 isList = \y0.2 + y0 isNeList = \y0.2y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 1 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = x2 + 2x1 + 4x0 >= x2 + 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[a!6220!6220U13(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U26(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U55(tt, _x0)]] = 2 + 2x0 >= 2 + x0 = [[a!6220!6220U56(a!6220!6220isList(_x0))]] [[a!6220!6220U63(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220U74(tt)]] = 1 > 0 = [[tt]] [[a!6220!6220U92(tt)]] = 0 >= 0 = [[tt]] [[a!6220!6220isList(!6220!6220(_x0, _x1))]] = 2 + x1 + 2x0 > 1 + x1 + 2x0 = [[a!6220!6220U21(a!6220!6220isPalListKind(_x0), _x0, _x1)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[a!6220!6220U31(a!6220!6220isPalListKind(_x0), _x0)]] [[mark(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = x0 >= x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = 2 + x0 >= 2 + x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = x0 >= x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = x0 >= x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = 2 + x0 + 2x1 >= 2 + x0 + 2x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = x0 >= x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = x0 >= x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = 1 + x0 >= 1 + x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = x0 >= x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = x0 >= x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 0 >= 0 = [[tt]] [[mark(a)]] = 0 >= 0 = [[a]] [[mark(e)]] = 0 >= 0 = [[e]] [[mark(i)]] = 1 >= 1 = [[i]] [[mark(o)]] = 1 >= 1 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = 2 + x0 >= 2 + x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = x0 >= x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = 2 + x0 + 2x1 >= 2 + x0 + 2x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = x0 >= x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = 1 + x0 >= 1 + x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220U74(tt) => tt a!6220!6220isList(!6220!6220(X, Y)) => a!6220!6220U21(a!6220!6220isPalListKind(X), X, Y) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220U13(tt) >? tt a!6220!6220U26(tt) >? tt a!6220!6220U55(tt, X) >? a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U63(tt) >? tt a!6220!6220U92(tt) >? tt a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.2y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.y0 + y1 U26 = \y0.2y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.2y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 1 a!6220!6220!6220!6220 = \y0y1.y1 + 2y0 a!6220!6220U11 = \y0y1.y0 + y1 a!6220!6220U12 = \y0y1.y0 + y1 a!6220!6220U13 = \y0.2y0 a!6220!6220U21 = \y0y1y2.y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y0 + y1 + y2 a!6220!6220U25 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.2y0 a!6220!6220U31 = \y0y1.y0 + y1 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.y0 + y1 + y2 a!6220!6220U43 = \y0y1y2.y0 + y1 + y2 a!6220!6220U44 = \y0y1y2.y0 + y1 + y2 a!6220!6220U45 = \y0y1.y0 + y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.y0 + y1 a!6220!6220U63 = \y0.2y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y0 + y1 a!6220!6220U74 = \y0.y0 a!6220!6220U81 = \y0y1.y0 + y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.2y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.y0 a!6220!6220isQid = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 tt = 1 u = 0 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = x2 + 2x1 + 4x0 >= x2 + 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[a!6220!6220U13(tt)]] = 2 > 1 = [[tt]] [[a!6220!6220U26(tt)]] = 2 > 1 = [[tt]] [[a!6220!6220U55(tt, _x0)]] = 1 + x0 > x0 = [[a!6220!6220U56(a!6220!6220isList(_x0))]] [[a!6220!6220U63(tt)]] = 2 > 1 = [[tt]] [[a!6220!6220U92(tt)]] = 1 >= 1 = [[tt]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[a!6220!6220U31(a!6220!6220isPalListKind(_x0), _x0)]] [[mark(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = x0 >= x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = x0 >= x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = x0 >= x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = x0 >= x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = x0 >= x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = x0 >= x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 1 >= 1 = [[tt]] [[mark(a)]] = 1 >= 1 = [[a]] [[mark(e)]] = 0 >= 0 = [[e]] [[mark(i)]] = 0 >= 0 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = 2x0 >= 2x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = 2x0 >= 2x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = x0 >= x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = 2x0 >= 2x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = x0 >= x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220U13(tt) => tt a!6220!6220U26(tt) => tt a!6220!6220U55(tt, X) => a!6220!6220U56(a!6220!6220isList(X)) a!6220!6220U63(tt) => tt We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220U92(tt) >? tt a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y0 + y1 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.1 + y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + 2y2 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + 2y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.2y0 a = 1 a!6220!6220!6220!6220 = \y0y1.y0 + y1 a!6220!6220U11 = \y0y1.y0 + y1 a!6220!6220U12 = \y0y1.y0 + y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.1 + y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U25 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.y0 + y1 a!6220!6220U32 = \y0y1.y0 + 2y1 a!6220!6220U33 = \y0.y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.y0 + y1 + y2 a!6220!6220U43 = \y0y1y2.y0 + y1 + y2 a!6220!6220U44 = \y0y1y2.y0 + y1 + y2 a!6220!6220U45 = \y0y1.y0 + y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.y0 + y1 a!6220!6220U63 = \y0.y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y0 + y1 a!6220!6220U74 = \y0.y0 a!6220!6220U81 = \y0y1.y0 + y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.2y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.2y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.y0 a!6220!6220isQid = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 tt = 1 u = 0 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[a!6220!6220U92(tt)]] = 2 > 1 = [[tt]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[a!6220!6220U31(a!6220!6220isPalListKind(_x0), _x0)]] [[mark(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = x0 >= x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = x0 >= x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = x0 >= x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = x0 >= x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = x0 >= x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = x0 >= x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = x0 >= x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 1 >= 1 = [[tt]] [[mark(a)]] = 1 >= 1 = [[a]] [[mark(e)]] = 0 >= 0 = [[e]] [[mark(i)]] = 0 >= 0 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = x0 >= x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = x0 >= x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = x0 >= x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = 2x0 >= 2x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220U92(tt) => tt We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) a!6220!6220isNeList(X) >? a!6220!6220U31(a!6220!6220isPalListKind(X), X) mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.1 + y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y1 + 2y0 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 a!6220!6220!6220!6220 = \y0y1.y1 + 2y0 a!6220!6220U11 = \y0y1.y0 + y1 a!6220!6220U12 = \y0y1.y0 + y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y0 + y1 + y2 a!6220!6220U25 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.y0 + y1 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.y0 + y1 + y2 a!6220!6220U43 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U44 = \y0y1y2.y0 + y1 + y2 a!6220!6220U45 = \y0y1.y0 + y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.y0 + y1 a!6220!6220U63 = \y0.1 + y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y1 + 2y0 a!6220!6220U74 = \y0.y0 a!6220!6220U81 = \y0y1.y0 + y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.2 + 2y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.y0 a!6220!6220isQid = \y0.1 + y0 e = 0 i = 1 isList = \y0.y0 isNeList = \y0.2 + 2y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.1 + y0 mark = \y0.y0 nil = 0 o = 0 tt = 1 u = 0 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = x2 + 2x1 + 4x0 >= x2 + 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[a!6220!6220isNeList(_x0)]] = 2 + 2x0 > 2x0 = [[a!6220!6220U31(a!6220!6220isPalListKind(_x0), _x0)]] [[mark(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = x0 >= x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 2 + 2x0 >= 2 + 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = x0 >= x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = 1 + x0 >= 1 + x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = x0 >= x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = x0 >= x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = 1 + x0 >= 1 + x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = x0 >= x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = x0 >= x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = x0 >= x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 1 >= 1 = [[tt]] [[mark(a)]] = 0 >= 0 = [[a]] [[mark(e)]] = 0 >= 0 = [[e]] [[mark(i)]] = 1 >= 1 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 2 + 2x0 >= 2 + 2x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = x0 >= x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = 1 + x0 >= 1 + x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = x0 >= x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220isNeList(X) => a!6220!6220U31(a!6220!6220isPalListKind(X), X) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220!6220!6220(!6220!6220(X, Y), Z) >? a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.1 + y1 + 2y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + 2y2 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 3 a!6220!6220!6220!6220 = \y0y1.1 + y1 + 2y0 a!6220!6220U11 = \y0y1.y0 + y1 a!6220!6220U12 = \y0y1.y0 + y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + y1 + y2 a!6220!6220U22 = \y0y1y2.y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + y2 a!6220!6220U24 = \y0y1y2.y0 + y1 + y2 a!6220!6220U25 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.y0 + y1 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.y0 a!6220!6220U41 = \y0y1y2.y0 + y1 + y2 a!6220!6220U42 = \y0y1y2.y0 + y1 + y2 a!6220!6220U43 = \y0y1y2.y0 + y1 + y2 a!6220!6220U44 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U45 = \y0y1.y0 + y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y1 + y2 a!6220!6220U52 = \y0y1y2.y0 + y1 + y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.y0 + y1 a!6220!6220U63 = \y0.y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + y2 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U73 = \y0y1.y0 + y1 a!6220!6220U74 = \y0.y0 a!6220!6220U81 = \y0y1.y0 + y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.y0 a!6220!6220isQid = \y0.y0 e = 1 i = 1 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[a!6220!6220!6220!6220(!6220!6220(_x0, _x1), _x2)]] = 3 + x2 + 2x1 + 4x0 > 2 + x2 + 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), a!6220!6220!6220!6220(mark(_x1), mark(_x2)))]] [[mark(!6220!6220(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = x0 >= x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = x0 >= x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = x0 >= x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = x0 >= x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = x0 >= x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = x0 >= x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = x0 >= x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = x0 >= x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = x0 >= x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 0 >= 0 = [[tt]] [[mark(a)]] = 3 >= 3 = [[a]] [[mark(e)]] = 1 >= 1 = [[e]] [[mark(i)]] = 1 >= 1 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = x0 >= x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = x0 >= x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = x0 >= x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = x0 >= x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: a!6220!6220!6220!6220(!6220!6220(X, Y), Z) => a!6220!6220!6220!6220(mark(X), a!6220!6220!6220!6220(mark(Y), mark(Z))) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U25(X, Y)) >? a!6220!6220U25(mark(X), Y) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U33(X)) >? a!6220!6220U33(mark(X)) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U43(X, Y, Z)) >? a!6220!6220U43(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) 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(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U62(X, Y)) >? a!6220!6220U62(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U73(X, Y)) >? a!6220!6220U73(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U74(X)) >? a!6220!6220U74(mark(X)) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U63(X) >? U63(X) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y0 + y1 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y2 + 2y1 U22 = \y0y1y2.y0 + y1 + 2y2 U23 = \y0y1y2.y0 + y1 + 2y2 U24 = \y0y1y2.y0 + y1 + 2y2 U25 = \y0y1.1 + y0 + y1 U26 = \y0.2y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.3 + y0 U41 = \y0y1y2.y0 + y2 + 2y1 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.2 + y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.3 + y0 + y1 + y2 U53 = \y0y1y2.y1 + y2 + 2y0 U54 = \y0y1y2.y0 + y2 + 2y1 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.1 + y0 + y1 U63 = \y0.1 + 2y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.1 + y0 + y1 U74 = \y0.1 + y0 U81 = \y0y1.y0 + 2y1 U82 = \y0y1.y0 + 2y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 a!6220!6220!6220!6220 = \y0y1.y0 + y1 a!6220!6220U11 = \y0y1.y0 + 2y1 a!6220!6220U12 = \y0y1.y0 + y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + y2 + 2y1 a!6220!6220U22 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U23 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U24 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U25 = \y0y1.1 + y0 + 2y1 a!6220!6220U26 = \y0.2y0 a!6220!6220U31 = \y0y1.y0 + 2y1 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.3 + y0 a!6220!6220U41 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U42 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U43 = \y0y1y2.2 + y0 + y2 + 2y1 a!6220!6220U44 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U45 = \y0y1.y0 + y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.y0 + y2 + 2y1 a!6220!6220U52 = \y0y1y2.3 + y0 + y1 + 2y2 a!6220!6220U53 = \y0y1y2.y2 + 2y0 + 2y1 a!6220!6220U54 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U55 = \y0y1.y0 + 2y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + 2y1 a!6220!6220U62 = \y0y1.1 + y0 + y1 a!6220!6220U63 = \y0.2 + 2y0 a!6220!6220U71 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U72 = \y0y1.y0 + 2y1 a!6220!6220U73 = \y0y1.1 + y0 + y1 a!6220!6220U74 = \y0.1 + y0 a!6220!6220U81 = \y0y1.y0 + 2y1 a!6220!6220U82 = \y0y1.y0 + 2y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.y0 + y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.y0 a!6220!6220isNeList = \y0.y0 a!6220!6220isNePal = \y0.2y0 a!6220!6220isPal = \y0.y0 a!6220!6220isPalListKind = \y0.2y0 a!6220!6220isQid = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.2y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.2y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[mark(!6220!6220(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 2x0 >= x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= x2 + 2x0 + 2x1 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U25(_x0, _x1))]] = 2 + 2x0 + 2x1 > 1 + 2x0 + 2x1 = [[a!6220!6220U25(mark(_x0), _x1)]] [[mark(isList(_x0))]] = 2x0 >= x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = 4x0 >= 4x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U33(_x0))]] = 6 + 2x0 > 3 + 2x0 = [[a!6220!6220U33(mark(_x0))]] [[mark(isQid(_x0))]] = 2x0 >= x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U43(_x0, _x1, _x2))]] = 4 + 2x0 + 2x1 + 2x2 > 2 + x2 + 2x0 + 2x1 = [[a!6220!6220U43(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x2 + 2x0 + 2x1 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U52(_x0, _x1, _x2))]] = 6 + 2x0 + 2x1 + 2x2 > 3 + x1 + 2x0 + 2x2 = [[a!6220!6220U52(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x2 + 2x1 + 4x0 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U62(_x0, _x1))]] = 2 + 2x0 + 2x1 > 1 + x1 + 2x0 = [[a!6220!6220U62(mark(_x0), _x1)]] [[mark(U63(_x0))]] = 2 + 4x0 >= 2 + 4x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + 2x0 + 2x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U73(_x0, _x1))]] = 2 + 2x0 + 2x1 > 1 + x1 + 2x0 = [[a!6220!6220U73(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = 2x0 >= x0 = [[a!6220!6220isPal(_x0)]] [[mark(U74(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[a!6220!6220U74(mark(_x0))]] [[mark(U81(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = 4x0 >= 2x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 0 >= 0 = [[nil]] [[mark(tt)]] = 0 >= 0 = [[tt]] [[mark(a)]] = 0 >= 0 = [[a]] [[mark(e)]] = 0 >= 0 = [[e]] [[mark(i)]] = 0 >= 0 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = 2x0 >= x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = x0 >= x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = 1 + x0 + 2x1 >= 1 + x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = x0 >= x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = 2x0 >= 2x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = 3 + x0 >= 3 + x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = 2 + x0 + x2 + 2x1 >= 2 + x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = 3 + x0 + x1 + 2x2 >= 3 + x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x2 + 2x0 + 2x1 >= x1 + x2 + 2x0 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U62(_x0, _x1)]] [[a!6220!6220U63(_x0)]] = 2 + 2x0 > 1 + 2x0 = [[U63(_x0)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = x0 >= x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = 1 + x0 >= 1 + x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: mark(U25(X, Y)) => a!6220!6220U25(mark(X), Y) mark(U33(X)) => a!6220!6220U33(mark(X)) mark(U43(X, Y, Z)) => a!6220!6220U43(mark(X), Y, Z) mark(U52(X, Y, Z)) => a!6220!6220U52(mark(X), Y, Z) mark(U62(X, Y)) => a!6220!6220U62(mark(X), Y) mark(U73(X, Y)) => a!6220!6220U73(mark(X), Y) mark(U74(X)) => a!6220!6220U74(mark(X)) a!6220!6220U63(X) => U63(X) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(isPalListKind(X)) >? a!6220!6220isPalListKind(X) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U22(X, Y, Z)) >? a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) >? a!6220!6220U23(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(isList(X)) >? a!6220!6220isList(X) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U41(X, Y, Z)) >? a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) >? a!6220!6220U42(mark(X), Y, Z) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) mark(U51(X, Y, Z)) >? a!6220!6220U51(mark(X), Y, Z) mark(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U63(X)) >? a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) >? a!6220!6220U71(mark(X), Y, Z) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U81(X, Y)) >? a!6220!6220U81(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U91(X, Y)) >? a!6220!6220U91(mark(X), Y) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(nil) >? nil mark(tt) >? tt mark(a) >? a mark(e) >? e mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220isPalListKind(X) >? isPalListKind(X) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U22(X, Y, Z) >? U22(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U25(X, Y) >? U25(X, Y) a!6220!6220isList(X) >? isList(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U33(X) >? U33(X) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U41(X, Y, Z) >? U41(X, Y, Z) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U43(X, Y, Z) >? U43(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U51(X, Y, Z) >? U51(X, Y, Z) a!6220!6220U52(X, Y, Z) >? U52(X, Y, Z) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U62(X, Y) >? U62(X, Y) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U73(X, Y) >? U73(X, Y) a!6220!6220isPal(X) >? isPal(X) a!6220!6220U74(X) >? U74(X) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y0 + y1 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + 2y2 U22 = \y0y1y2.2 + y0 + y1 + y2 U23 = \y0y1y2.3 + y0 + y1 + y2 U24 = \y0y1y2.y0 + y2 + 2y1 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y1 + 2y0 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.2 + y0 + 2y1 + 2y2 U42 = \y0y1y2.2 + y0 + y1 + 2y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + 2y2 U45 = \y0y1.y0 + 2y1 U46 = \y0.y0 U51 = \y0y1y2.2 + y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + 2y2 U55 = \y0y1.y0 + 2y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.3 + 3y0 U71 = \y0y1y2.1 + y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.2 + y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.2 + y0 + 2y1 U92 = \y0.y0 a = 0 a!6220!6220!6220!6220 = \y0y1.y0 + y1 a!6220!6220U11 = \y0y1.y0 + 2y1 a!6220!6220U12 = \y0y1.y0 + y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U22 = \y0y1y2.3 + y0 + y1 + y2 a!6220!6220U23 = \y0y1y2.3 + y0 + y2 + 2y1 a!6220!6220U24 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U25 = \y0y1.3 + 2y0 + 2y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.2y0 + 2y1 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U33 = \y0.3 + y0 a!6220!6220U41 = \y0y1y2.3 + y0 + 2y1 + 2y2 a!6220!6220U42 = \y0y1y2.2 + y0 + y1 + 2y2 a!6220!6220U43 = \y0y1y2.3 + y1 + y2 + 2y0 a!6220!6220U44 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U45 = \y0y1.y0 + 2y1 a!6220!6220U46 = \y0.y0 a!6220!6220U51 = \y0y1y2.3 + y0 + y1 + 2y2 a!6220!6220U52 = \y0y1y2.3 + y1 + 2y0 + 2y2 a!6220!6220U53 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U55 = \y0y1.y0 + 2y1 a!6220!6220U56 = \y0.y0 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U62 = \y0y1.3 + y0 + y1 a!6220!6220U63 = \y0.y0 a!6220!6220U71 = \y0y1y2.1 + y0 + y1 + 2y2 a!6220!6220U72 = \y0y1.y0 + 2y1 a!6220!6220U73 = \y0y1.3 + y1 + 2y0 a!6220!6220U74 = \y0.3 + 2y0 a!6220!6220U81 = \y0y1.2 + y0 + 2y1 a!6220!6220U82 = \y0y1.y0 + 2y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.2 + y0 + 2y1 a!6220!6220U92 = \y0.y0 a!6220!6220isList = \y0.3 + 2y0 a!6220!6220isNeList = \y0.2y0 a!6220!6220isNePal = \y0.2y0 a!6220!6220isPal = \y0.2 + y0 a!6220!6220isPalListKind = \y0.3 + 2y0 a!6220!6220isQid = \y0.2y0 e = 1 i = 0 isList = \y0.2 + y0 isNeList = \y0.2y0 isNePal = \y0.y0 isPal = \y0.1 + y0 isPalListKind = \y0.2 + y0 isQid = \y0.2y0 mark = \y0.2y0 nil = 2 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[mark(!6220!6220(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(isPalListKind(_x0))]] = 4 + 2x0 > 3 + 2x0 = [[a!6220!6220isPalListKind(_x0)]] [[mark(U13(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 4x0 >= 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U22(_x0, _x1, _x2))]] = 4 + 2x0 + 2x1 + 2x2 > 3 + x1 + x2 + 2x0 = [[a!6220!6220U22(mark(_x0), _x1, _x2)]] [[mark(U23(_x0, _x1, _x2))]] = 6 + 2x0 + 2x1 + 2x2 > 3 + x2 + 2x0 + 2x1 = [[a!6220!6220U23(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(isList(_x0))]] = 4 + 2x0 > 3 + 2x0 = [[a!6220!6220isList(_x0)]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(isQid(_x0))]] = 4x0 >= 2x0 = [[a!6220!6220isQid(_x0)]] [[mark(U41(_x0, _x1, _x2))]] = 4 + 2x0 + 4x1 + 4x2 > 3 + 2x0 + 2x1 + 2x2 = [[a!6220!6220U41(mark(_x0), _x1, _x2)]] [[mark(U42(_x0, _x1, _x2))]] = 4 + 2x0 + 2x1 + 4x2 > 2 + x1 + 2x0 + 2x2 = [[a!6220!6220U42(mark(_x0), _x1, _x2)]] [[mark(U44(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U51(_x0, _x1, _x2))]] = 4 + 2x0 + 2x1 + 2x2 > 3 + x1 + 2x0 + 2x2 = [[a!6220!6220U51(mark(_x0), _x1, _x2)]] [[mark(U53(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + 2x0 + 2x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U63(_x0))]] = 6 + 6x0 > 2x0 = [[a!6220!6220U63(mark(_x0))]] [[mark(U71(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 2x2 > 1 + x1 + 2x0 + 2x2 = [[a!6220!6220U71(mark(_x0), _x1, _x2)]] [[mark(U72(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = 2 + 2x0 >= 2 + x0 = [[a!6220!6220isPal(_x0)]] [[mark(U81(_x0, _x1))]] = 4 + 2x0 + 2x1 > 2 + 2x0 + 2x1 = [[a!6220!6220U81(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U91(_x0, _x1))]] = 4 + 2x0 + 4x1 > 2 + 2x0 + 2x1 = [[a!6220!6220U91(mark(_x0), _x1)]] [[mark(U92(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(nil)]] = 4 > 2 = [[nil]] [[mark(tt)]] = 0 >= 0 = [[tt]] [[mark(a)]] = 0 >= 0 = [[a]] [[mark(e)]] = 2 > 1 = [[e]] [[mark(i)]] = 0 >= 0 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[a!6220!6220isPalListKind(_x0)]] = 3 + 2x0 > 2 + x0 = [[isPalListKind(_x0)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U22(_x0, _x1, _x2)]] = 3 + x0 + x1 + x2 > 2 + x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = 3 + x0 + x2 + 2x1 >= 3 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U25(_x0, _x1)]] = 3 + 2x0 + 2x1 > x0 + x1 = [[U25(_x0, _x1)]] [[a!6220!6220isList(_x0)]] = 3 + 2x0 > 2 + x0 = [[isList(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = 2x0 + 2x1 >= x1 + 2x0 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U33(_x0)]] = 3 + x0 > x0 = [[U33(_x0)]] [[a!6220!6220isQid(_x0)]] = 2x0 >= 2x0 = [[isQid(_x0)]] [[a!6220!6220U41(_x0, _x1, _x2)]] = 3 + x0 + 2x1 + 2x2 > 2 + x0 + 2x1 + 2x2 = [[U41(_x0, _x1, _x2)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U43(_x0, _x1, _x2)]] = 3 + x1 + x2 + 2x0 > x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U51(_x0, _x1, _x2)]] = 3 + x0 + x1 + 2x2 > 2 + x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[a!6220!6220U52(_x0, _x1, _x2)]] = 3 + x1 + 2x0 + 2x2 > x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = x0 >= x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U62(_x0, _x1)]] = 3 + x0 + x1 > x0 + x1 = [[U62(_x0, _x1)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U73(_x0, _x1)]] = 3 + x1 + 2x0 > x0 + x1 = [[U73(_x0, _x1)]] [[a!6220!6220isPal(_x0)]] = 2 + x0 > 1 + x0 = [[isPal(_x0)]] [[a!6220!6220U74(_x0)]] = 3 + 2x0 > x0 = [[U74(_x0)]] [[a!6220!6220U81(_x0, _x1)]] = 2 + x0 + 2x1 >= 2 + x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = 2x0 >= x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = 2 + x0 + 2x1 >= 2 + x0 + 2x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: mark(isPalListKind(X)) => a!6220!6220isPalListKind(X) mark(U22(X, Y, Z)) => a!6220!6220U22(mark(X), Y, Z) mark(U23(X, Y, Z)) => a!6220!6220U23(mark(X), Y, Z) mark(isList(X)) => a!6220!6220isList(X) mark(U41(X, Y, Z)) => a!6220!6220U41(mark(X), Y, Z) mark(U42(X, Y, Z)) => a!6220!6220U42(mark(X), Y, Z) mark(U51(X, Y, Z)) => a!6220!6220U51(mark(X), Y, Z) mark(U63(X)) => a!6220!6220U63(mark(X)) mark(U71(X, Y, Z)) => a!6220!6220U71(mark(X), Y, Z) mark(U81(X, Y)) => a!6220!6220U81(mark(X), Y) mark(U91(X, Y)) => a!6220!6220U91(mark(X), Y) mark(nil) => nil mark(e) => e a!6220!6220isPalListKind(X) => isPalListKind(X) a!6220!6220U22(X, Y, Z) => U22(X, Y, Z) a!6220!6220U25(X, Y) => U25(X, Y) a!6220!6220isList(X) => isList(X) a!6220!6220U33(X) => U33(X) a!6220!6220U41(X, Y, Z) => U41(X, Y, Z) a!6220!6220U43(X, Y, Z) => U43(X, Y, Z) a!6220!6220U51(X, Y, Z) => U51(X, Y, Z) a!6220!6220U52(X, Y, Z) => U52(X, Y, Z) a!6220!6220U62(X, Y) => U62(X, Y) a!6220!6220U73(X, Y) => U73(X, Y) a!6220!6220isPal(X) => isPal(X) a!6220!6220U74(X) => U74(X) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U31(X, Y)) >? a!6220!6220U31(mark(X), Y) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U45(X, Y)) >? a!6220!6220U45(mark(X), Y) mark(U46(X)) >? a!6220!6220U46(mark(X)) mark(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U56(X)) >? a!6220!6220U56(mark(X)) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(isPal(X)) >? a!6220!6220isPal(X) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(tt) >? tt mark(a) >? a mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220!6220!6220(X, Y) >? !6220!6220(X, Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U23(X, Y, Z) >? U23(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U26(X) >? U26(X) a!6220!6220U31(X, Y) >? U31(X, Y) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U42(X, Y, Z) >? U42(X, Y, Z) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U45(X, Y) >? U45(X, Y) a!6220!6220U46(X) >? U46(X) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U71(X, Y, Z) >? U71(X, Y, Z) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U81(X, Y) >? U81(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) a!6220!6220U91(X, Y) >? U91(X, Y) a!6220!6220U92(X) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.1 + y0 + 2y1 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + 2y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + 2y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y1 + y2 + 2y0 U26 = \y0.y0 U31 = \y0y1.2 + y0 + 2y1 U32 = \y0y1.y0 + 2y1 U42 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.2 + 2y0 + 2y1 U46 = \y0.y0 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + 2y1 + 2y2 U55 = \y0y1.y0 + y1 U56 = \y0.1 + y0 U61 = \y0y1.y0 + 2y1 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.1 + y0 a = 0 a!6220!6220!6220!6220 = \y0y1.2 + y0 + 2y1 a!6220!6220U11 = \y0y1.y0 + 2y1 a!6220!6220U12 = \y0y1.y0 + 2y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U23 = \y0y1y2.3 + y0 + 2y1 + 2y2 a!6220!6220U24 = \y0y1y2.y2 + 2y0 + 2y1 a!6220!6220U26 = \y0.y0 a!6220!6220U31 = \y0y1.3 + y0 + 2y1 a!6220!6220U32 = \y0y1.y0 + 2y1 a!6220!6220U42 = \y0y1y2.3 + y0 + y1 + 2y2 a!6220!6220U44 = \y0y1y2.y0 + y2 + 2y1 a!6220!6220U45 = \y0y1.3 + 2y0 + 2y1 a!6220!6220U46 = \y0.y0 a!6220!6220U53 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U54 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U55 = \y0y1.y0 + 2y1 a!6220!6220U56 = \y0.1 + y0 a!6220!6220U61 = \y0y1.y0 + 2y1 a!6220!6220U71 = \y0y1y2.3 + y1 + y2 + 2y0 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U81 = \y0y1.3 + y0 + y1 a!6220!6220U82 = \y0y1.y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220U91 = \y0y1.3 + y0 + 2y1 a!6220!6220U92 = \y0.2 + y0 a!6220!6220isNeList = \y0.2y0 a!6220!6220isNePal = \y0.2y0 a!6220!6220isPal = \y0.y0 a!6220!6220isQid = \y0.2y0 i = 0 isNeList = \y0.2y0 isNePal = \y0.2y0 isPal = \y0.3 + y0 isQid = \y0.y0 mark = \y0.2y0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[mark(!6220!6220(_x0, _x1))]] = 2 + 2x0 + 4x1 >= 2 + 2x0 + 4x1 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(U13(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 4x0 >= 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x2 + 2x1 + 4x0 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U31(_x0, _x1))]] = 4 + 2x0 + 4x1 > 3 + 2x0 + 2x1 = [[a!6220!6220U31(mark(_x0), _x1)]] [[mark(U32(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(isQid(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isQid(_x0)]] [[mark(U44(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x2 + 2x0 + 2x1 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U45(_x0, _x1))]] = 4 + 4x0 + 4x1 > 3 + 2x1 + 4x0 = [[a!6220!6220U45(mark(_x0), _x1)]] [[mark(U46(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U53(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + 2x0 + 2x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U56(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[a!6220!6220U56(mark(_x0))]] [[mark(U61(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U72(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(isPal(_x0))]] = 6 + 2x0 > x0 = [[a!6220!6220isPal(_x0)]] [[mark(U82(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = 4x0 >= 2x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U92(_x0))]] = 2 + 2x0 >= 2 + 2x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(tt)]] = 0 >= 0 = [[tt]] [[mark(a)]] = 0 >= 0 = [[a]] [[mark(i)]] = 0 >= 0 = [[i]] [[mark(o)]] = 0 >= 0 = [[o]] [[mark(u)]] = 0 >= 0 = [[u]] [[a!6220!6220!6220!6220(_x0, _x1)]] = 2 + x0 + 2x1 > 1 + x0 + 2x1 = [[!6220!6220(_x0, _x1)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U12(_x0, _x1)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U23(_x0, _x1, _x2)]] = 3 + x0 + 2x1 + 2x2 > x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = x2 + 2x0 + 2x1 >= x1 + x2 + 2x0 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U31(_x0, _x1)]] = 3 + x0 + 2x1 > 2 + x0 + 2x1 = [[U31(_x0, _x1)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[a!6220!6220isQid(_x0)]] = 2x0 >= x0 = [[isQid(_x0)]] [[a!6220!6220U42(_x0, _x1, _x2)]] = 3 + x0 + x1 + 2x2 > x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U45(_x0, _x1)]] = 3 + 2x0 + 2x1 > 2 + 2x0 + 2x1 = [[U45(_x0, _x1)]] [[a!6220!6220U46(_x0)]] = x0 >= x0 = [[U46(_x0)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = 1 + x0 >= 1 + x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[a!6220!6220U71(_x0, _x1, _x2)]] = 3 + x1 + x2 + 2x0 > x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[a!6220!6220U81(_x0, _x1)]] = 3 + x0 + x1 > x0 + x1 = [[U81(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[a!6220!6220U91(_x0, _x1)]] = 3 + x0 + 2x1 > x0 + x1 = [[U91(_x0, _x1)]] [[a!6220!6220U92(_x0)]] = 2 + x0 > 1 + x0 = [[U92(_x0)]] We can thus remove the following rules: mark(U31(X, Y)) => a!6220!6220U31(mark(X), Y) mark(U45(X, Y)) => a!6220!6220U45(mark(X), Y) mark(U56(X)) => a!6220!6220U56(mark(X)) mark(isPal(X)) => a!6220!6220isPal(X) a!6220!6220!6220!6220(X, Y) => !6220!6220(X, Y) a!6220!6220U23(X, Y, Z) => U23(X, Y, Z) a!6220!6220U31(X, Y) => U31(X, Y) a!6220!6220U42(X, Y, Z) => U42(X, Y, Z) a!6220!6220U45(X, Y) => U45(X, Y) a!6220!6220U71(X, Y, Z) => U71(X, Y, Z) a!6220!6220U81(X, Y) => U81(X, Y) a!6220!6220U91(X, Y) => U91(X, Y) a!6220!6220U92(X) => U92(X) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(!6220!6220(X, Y)) >? a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U12(X, Y)) >? a!6220!6220U12(mark(X), Y) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(isNeList(X)) >? a!6220!6220isNeList(X) mark(U21(X, Y, Z)) >? a!6220!6220U21(mark(X), Y, Z) mark(U24(X, Y, Z)) >? a!6220!6220U24(mark(X), Y, Z) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(isQid(X)) >? a!6220!6220isQid(X) mark(U44(X, Y, Z)) >? a!6220!6220U44(mark(X), Y, Z) mark(U46(X)) >? a!6220!6220U46(mark(X)) mark(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) mark(U92(X)) >? a!6220!6220U92(mark(X)) mark(tt) >? tt mark(a) >? a mark(i) >? i mark(o) >? o mark(u) >? u a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U12(X, Y) >? U12(X, Y) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U21(X, Y, Z) >? U21(X, Y, Z) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U26(X) >? U26(X) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U46(X) >? U46(X) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U56(X) >? U56(X) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.3 + 3y0 + 3y1 U11 = \y0y1.y0 + y1 U12 = \y0y1.2 + y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.2 + y0 + y1 + y2 U24 = \y0y1y2.2 + y1 + 2y0 + 2y2 U26 = \y0.y0 U32 = \y0y1.y0 + 2y1 U44 = \y0y1y2.1 + y0 + y1 + 2y2 U46 = \y0.1 + y0 U53 = \y0y1y2.y0 + 2y1 + 2y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + 2y1 U72 = \y0y1.y0 + 2y1 U82 = \y0y1.y1 + 2y0 U83 = \y0.y0 U92 = \y0.3 + 3y0 a = 2 a!6220!6220!6220!6220 = \y0y1.y0 + y1 a!6220!6220U11 = \y0y1.y0 + 2y1 a!6220!6220U12 = \y0y1.3 + y0 + 2y1 a!6220!6220U13 = \y0.y0 a!6220!6220U21 = \y0y1y2.3 + y0 + y1 + 2y2 a!6220!6220U24 = \y0y1y2.2 + 2y0 + 2y1 + 2y2 a!6220!6220U26 = \y0.y0 a!6220!6220U32 = \y0y1.y0 + 2y1 a!6220!6220U44 = \y0y1y2.1 + y0 + 2y1 + 2y2 a!6220!6220U46 = \y0.1 + y0 a!6220!6220U53 = \y0y1y2.y0 + 2y1 + 2y2 a!6220!6220U54 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U56 = \y0.3 + 2y0 a!6220!6220U61 = \y0y1.y0 + 2y1 a!6220!6220U72 = \y0y1.y0 + 2y1 a!6220!6220U82 = \y0y1.y1 + 2y0 a!6220!6220U83 = \y0.y0 a!6220!6220U92 = \y0.y0 a!6220!6220isNeList = \y0.1 + 2y0 a!6220!6220isNePal = \y0.2y0 a!6220!6220isQid = \y0.1 + y0 i = 1 isNeList = \y0.1 + y0 isNePal = \y0.y0 isQid = \y0.1 + y0 mark = \y0.2y0 o = 1 tt = 1 u = 2 Using this interpretation, the requirements translate to: [[mark(!6220!6220(_x0, _x1))]] = 6 + 6x0 + 6x1 > 2x0 + 2x1 = [[a!6220!6220!6220!6220(mark(_x0), mark(_x1))]] [[mark(U11(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U12(_x0, _x1))]] = 4 + 2x0 + 2x1 > 3 + 2x0 + 2x1 = [[a!6220!6220U12(mark(_x0), _x1)]] [[mark(U13(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(isNeList(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[a!6220!6220isNeList(_x0)]] [[mark(U21(_x0, _x1, _x2))]] = 4 + 2x0 + 2x1 + 2x2 > 3 + x1 + 2x0 + 2x2 = [[a!6220!6220U21(mark(_x0), _x1, _x2)]] [[mark(U24(_x0, _x1, _x2))]] = 4 + 2x1 + 4x0 + 4x2 > 2 + 2x1 + 2x2 + 4x0 = [[a!6220!6220U24(mark(_x0), _x1, _x2)]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U32(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(isQid(_x0))]] = 2 + 2x0 > 1 + x0 = [[a!6220!6220isQid(_x0)]] [[mark(U44(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 4x2 > 1 + 2x0 + 2x1 + 2x2 = [[a!6220!6220U44(mark(_x0), _x1, _x2)]] [[mark(U46(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[a!6220!6220U46(mark(_x0))]] [[mark(U53(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + 2x0 + 2x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U61(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U72(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220isNePal(_x0)]] [[mark(U92(_x0))]] = 6 + 6x0 > 2x0 = [[a!6220!6220U92(mark(_x0))]] [[mark(tt)]] = 2 > 1 = [[tt]] [[mark(a)]] = 4 > 2 = [[a]] [[mark(i)]] = 2 > 1 = [[i]] [[mark(o)]] = 2 > 1 = [[o]] [[mark(u)]] = 4 > 2 = [[u]] [[a!6220!6220U11(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U12(_x0, _x1)]] = 3 + x0 + 2x1 > 2 + x0 + x1 = [[U12(_x0, _x1)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 1 + 2x0 >= 1 + x0 = [[isNeList(_x0)]] [[a!6220!6220U21(_x0, _x1, _x2)]] = 3 + x0 + x1 + 2x2 > 2 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = 2 + 2x0 + 2x1 + 2x2 >= 2 + x1 + 2x0 + 2x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[a!6220!6220isQid(_x0)]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U46(_x0)]] = 1 + x0 >= 1 + x0 = [[U46(_x0)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U56(_x0)]] = 3 + 2x0 > x0 = [[U56(_x0)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[a!6220!6220U72(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U72(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = 2x0 >= x0 = [[isNePal(_x0)]] We can thus remove the following rules: mark(!6220!6220(X, Y)) => a!6220!6220!6220!6220(mark(X), mark(Y)) mark(U12(X, Y)) => a!6220!6220U12(mark(X), Y) mark(isNeList(X)) => a!6220!6220isNeList(X) mark(U21(X, Y, Z)) => a!6220!6220U21(mark(X), Y, Z) mark(U24(X, Y, Z)) => a!6220!6220U24(mark(X), Y, Z) mark(isQid(X)) => a!6220!6220isQid(X) mark(U44(X, Y, Z)) => a!6220!6220U44(mark(X), Y, Z) mark(U46(X)) => a!6220!6220U46(mark(X)) mark(U92(X)) => a!6220!6220U92(mark(X)) mark(tt) => tt mark(a) => a mark(i) => i mark(o) => o mark(u) => u a!6220!6220U12(X, Y) => U12(X, Y) a!6220!6220U21(X, Y, Z) => U21(X, Y, Z) a!6220!6220U56(X) => U56(X) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U53(X, Y, Z)) >? a!6220!6220U53(mark(X), Y, Z) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U82(X, Y)) >? a!6220!6220U82(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U13(X) >? U13(X) a!6220!6220isNeList(X) >? isNeList(X) a!6220!6220U24(X, Y, Z) >? U24(X, Y, Z) a!6220!6220U26(X) >? U26(X) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220isQid(X) >? isQid(X) a!6220!6220U44(X, Y, Z) >? U44(X, Y, Z) a!6220!6220U46(X) >? U46(X) a!6220!6220U53(X, Y, Z) >? U53(X, Y, Z) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U72(X, Y) >? U72(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U11 = \y0y1.y0 + y1 U13 = \y0.2y0 U24 = \y0y1y2.y0 + y1 + y2 U26 = \y0.y0 U32 = \y0y1.y0 + y1 U44 = \y0y1y2.y0 + y1 + y2 U46 = \y0.y0 U53 = \y0y1y2.2 + y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.2y0 + 2y1 U61 = \y0y1.y0 + 2y1 U72 = \y0y1.1 + y0 + 2y1 U82 = \y0y1.2 + y0 + y1 U83 = \y0.y0 a!6220!6220U11 = \y0y1.y0 + y1 a!6220!6220U13 = \y0.2y0 a!6220!6220U24 = \y0y1y2.3 + y0 + 2y1 + 2y2 a!6220!6220U26 = \y0.y0 a!6220!6220U32 = \y0y1.y0 + y1 a!6220!6220U44 = \y0y1y2.3 + y0 + 2y1 + 2y2 a!6220!6220U46 = \y0.3 + y0 a!6220!6220U53 = \y0y1y2.3 + y0 + 2y1 + 2y2 a!6220!6220U54 = \y0y1y2.y0 + y2 + 2y1 a!6220!6220U55 = \y0y1.2y0 + 2y1 a!6220!6220U61 = \y0y1.y0 + 2y1 a!6220!6220U72 = \y0y1.2 + y0 + 2y1 a!6220!6220U82 = \y0y1.2 + y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220isNeList = \y0.3 + 2y0 a!6220!6220isNePal = \y0.y0 a!6220!6220isQid = \y0.3 + 2y0 isNeList = \y0.y0 isNePal = \y0.y0 isQid = \y0.y0 mark = \y0.2y0 Using this interpretation, the requirements translate to: [[mark(U11(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U13(_x0))]] = 4x0 >= 4x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U32(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U53(_x0, _x1, _x2))]] = 4 + 2x0 + 2x1 + 2x2 > 3 + 2x0 + 2x1 + 2x2 = [[a!6220!6220U53(mark(_x0), _x1, _x2)]] [[mark(U54(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x2 + 2x0 + 2x1 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U61(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U72(_x0, _x1))]] = 2 + 2x0 + 4x1 >= 2 + 2x0 + 2x1 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U82(_x0, _x1))]] = 4 + 2x0 + 2x1 > 2 + x1 + 2x0 = [[a!6220!6220U82(mark(_x0), _x1)]] [[mark(U83(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = 2x0 >= x0 = [[a!6220!6220isNePal(_x0)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U13(_x0)]] = 2x0 >= 2x0 = [[U13(_x0)]] [[a!6220!6220isNeList(_x0)]] = 3 + 2x0 > x0 = [[isNeList(_x0)]] [[a!6220!6220U24(_x0, _x1, _x2)]] = 3 + x0 + 2x1 + 2x2 > x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U32(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220isQid(_x0)]] = 3 + 2x0 > x0 = [[isQid(_x0)]] [[a!6220!6220U44(_x0, _x1, _x2)]] = 3 + x0 + 2x1 + 2x2 > x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[a!6220!6220U46(_x0)]] = 3 + x0 > x0 = [[U46(_x0)]] [[a!6220!6220U53(_x0, _x1, _x2)]] = 3 + x0 + 2x1 + 2x2 > 2 + x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U55(_x0, _x1)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[a!6220!6220U72(_x0, _x1)]] = 2 + x0 + 2x1 > 1 + x0 + 2x1 = [[U72(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = x0 >= x0 = [[isNePal(_x0)]] We can thus remove the following rules: mark(U53(X, Y, Z)) => a!6220!6220U53(mark(X), Y, Z) mark(U82(X, Y)) => a!6220!6220U82(mark(X), Y) a!6220!6220isNeList(X) => isNeList(X) a!6220!6220U24(X, Y, Z) => U24(X, Y, Z) a!6220!6220isQid(X) => isQid(X) a!6220!6220U44(X, Y, Z) => U44(X, Y, Z) a!6220!6220U46(X) => U46(X) a!6220!6220U53(X, Y, Z) => U53(X, Y, Z) a!6220!6220U72(X, Y) => U72(X, Y) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U32(X, Y)) >? a!6220!6220U32(mark(X), Y) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U72(X, Y)) >? a!6220!6220U72(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) mark(isNePal(X)) >? a!6220!6220isNePal(X) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U13(X) >? U13(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U82(X, Y) >? U82(X, Y) a!6220!6220U83(X) >? U83(X) a!6220!6220isNePal(X) >? isNePal(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U11 = \y0y1.y0 + y1 U13 = \y0.y0 U26 = \y0.y0 U32 = \y0y1.2 + 2y0 + 2y1 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U61 = \y0y1.y0 + y1 U72 = \y0y1.3 + 2y1 + 3y0 U82 = \y0y1.y0 + y1 U83 = \y0.y0 a!6220!6220U11 = \y0y1.y0 + 2y1 a!6220!6220U13 = \y0.y0 a!6220!6220U26 = \y0.y0 a!6220!6220U32 = \y0y1.2 + 2y0 + 2y1 a!6220!6220U54 = \y0y1y2.y0 + y1 + 2y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U61 = \y0y1.y0 + y1 a!6220!6220U72 = \y0y1.y0 + y1 a!6220!6220U82 = \y0y1.3 + y0 + y1 a!6220!6220U83 = \y0.y0 a!6220!6220isNePal = \y0.3 + y0 isNePal = \y0.2 + y0 mark = \y0.2y0 Using this interpretation, the requirements translate to: [[mark(U11(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U13(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U32(_x0, _x1))]] = 4 + 4x0 + 4x1 > 2 + 2x1 + 4x0 = [[a!6220!6220U32(mark(_x0), _x1)]] [[mark(U54(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + 2x0 + 2x2 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U61(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U72(_x0, _x1))]] = 6 + 4x1 + 6x0 > x1 + 2x0 = [[a!6220!6220U72(mark(_x0), _x1)]] [[mark(U83(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U83(mark(_x0))]] [[mark(isNePal(_x0))]] = 4 + 2x0 > 3 + x0 = [[a!6220!6220isNePal(_x0)]] [[a!6220!6220U11(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U13(_x0)]] = x0 >= x0 = [[U13(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U32(_x0, _x1)]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[U32(_x0, _x1)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U61(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[a!6220!6220U82(_x0, _x1)]] = 3 + x0 + x1 > x0 + x1 = [[U82(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = x0 >= x0 = [[U83(_x0)]] [[a!6220!6220isNePal(_x0)]] = 3 + x0 > 2 + x0 = [[isNePal(_x0)]] We can thus remove the following rules: mark(U32(X, Y)) => a!6220!6220U32(mark(X), Y) mark(U72(X, Y)) => a!6220!6220U72(mark(X), Y) mark(isNePal(X)) => a!6220!6220isNePal(X) a!6220!6220U82(X, Y) => U82(X, Y) a!6220!6220isNePal(X) => isNePal(X) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(U11(X, Y)) >? a!6220!6220U11(mark(X), Y) mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U54(X, Y, Z)) >? a!6220!6220U54(mark(X), Y, Z) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) mark(U61(X, Y)) >? a!6220!6220U61(mark(X), Y) mark(U83(X)) >? a!6220!6220U83(mark(X)) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U13(X) >? U13(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U32(X, Y) >? U32(X, Y) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U61(X, Y) >? U61(X, Y) a!6220!6220U83(X) >? U83(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U11 = \y0y1.2 + y0 + 2y1 U13 = \y0.2y0 U26 = \y0.y0 U32 = \y0y1.y0 + y1 U54 = \y0y1y2.1 + y0 + y1 + y2 U55 = \y0y1.y0 + y1 U61 = \y0y1.2 + y0 + 2y1 U83 = \y0.2 + y0 a!6220!6220U11 = \y0y1.2 + y0 + 2y1 a!6220!6220U13 = \y0.2y0 a!6220!6220U26 = \y0.y0 a!6220!6220U32 = \y0y1.3 + y0 + y1 a!6220!6220U54 = \y0y1y2.1 + y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + 2y1 a!6220!6220U61 = \y0y1.2 + y0 + 2y1 a!6220!6220U83 = \y0.3 + y0 mark = \y0.2y0 Using this interpretation, the requirements translate to: [[mark(U11(_x0, _x1))]] = 4 + 2x0 + 4x1 > 2 + 2x0 + 2x1 = [[a!6220!6220U11(mark(_x0), _x1)]] [[mark(U13(_x0))]] = 4x0 >= 4x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U54(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 2x2 > 1 + x1 + x2 + 2x0 = [[a!6220!6220U54(mark(_x0), _x1, _x2)]] [[mark(U55(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[mark(U61(_x0, _x1))]] = 4 + 2x0 + 4x1 > 2 + 2x0 + 2x1 = [[a!6220!6220U61(mark(_x0), _x1)]] [[mark(U83(_x0))]] = 4 + 2x0 > 3 + 2x0 = [[a!6220!6220U83(mark(_x0))]] [[a!6220!6220U11(_x0, _x1)]] = 2 + x0 + 2x1 >= 2 + x0 + 2x1 = [[U11(_x0, _x1)]] [[a!6220!6220U13(_x0)]] = 2x0 >= 2x0 = [[U13(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U32(_x0, _x1)]] = 3 + x0 + x1 > x0 + x1 = [[U32(_x0, _x1)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + 2x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U61(_x0, _x1)]] = 2 + x0 + 2x1 >= 2 + x0 + 2x1 = [[U61(_x0, _x1)]] [[a!6220!6220U83(_x0)]] = 3 + x0 > 2 + x0 = [[U83(_x0)]] We can thus remove the following rules: mark(U11(X, Y)) => a!6220!6220U11(mark(X), Y) mark(U54(X, Y, Z)) => a!6220!6220U54(mark(X), Y, Z) mark(U61(X, Y)) => a!6220!6220U61(mark(X), Y) mark(U83(X)) => a!6220!6220U83(mark(X)) a!6220!6220U32(X, Y) => U32(X, Y) a!6220!6220U83(X) => U83(X) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) a!6220!6220U11(X, Y) >? U11(X, Y) a!6220!6220U13(X) >? U13(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U54(X, Y, Z) >? U54(X, Y, Z) a!6220!6220U55(X, Y) >? U55(X, Y) a!6220!6220U61(X, Y) >? U61(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U11 = \y0y1.y0 + y1 U13 = \y0.2y0 U26 = \y0.y0 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U61 = \y0y1.y0 + y1 a!6220!6220U11 = \y0y1.3 + y1 + 2y0 a!6220!6220U13 = \y0.2y0 a!6220!6220U26 = \y0.y0 a!6220!6220U54 = \y0y1y2.3 + y0 + y1 + y2 a!6220!6220U55 = \y0y1.y0 + y1 a!6220!6220U61 = \y0y1.3 + y1 + 2y0 mark = \y0.y0 Using this interpretation, the requirements translate to: [[mark(U13(_x0))]] = 2x0 >= 2x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[a!6220!6220U55(mark(_x0), _x1)]] [[a!6220!6220U11(_x0, _x1)]] = 3 + x1 + 2x0 > x0 + x1 = [[U11(_x0, _x1)]] [[a!6220!6220U13(_x0)]] = 2x0 >= 2x0 = [[U13(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U54(_x0, _x1, _x2)]] = 3 + x0 + x1 + x2 > x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[a!6220!6220U55(_x0, _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[a!6220!6220U61(_x0, _x1)]] = 3 + x1 + 2x0 > x0 + x1 = [[U61(_x0, _x1)]] We can thus remove the following rules: a!6220!6220U11(X, Y) => U11(X, Y) a!6220!6220U54(X, Y, Z) => U54(X, Y, Z) a!6220!6220U61(X, Y) => U61(X, Y) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(U13(X)) >? a!6220!6220U13(mark(X)) mark(U26(X)) >? a!6220!6220U26(mark(X)) mark(U55(X, Y)) >? a!6220!6220U55(mark(X), Y) a!6220!6220U13(X) >? U13(X) a!6220!6220U26(X) >? U26(X) a!6220!6220U55(X, Y) >? U55(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U13 = \y0.2 + y0 U26 = \y0.y0 U55 = \y0y1.2 + 2y0 + 2y1 a!6220!6220U13 = \y0.3 + y0 a!6220!6220U26 = \y0.y0 a!6220!6220U55 = \y0y1.2 + 2y0 + 2y1 mark = \y0.1 + 2y0 Using this interpretation, the requirements translate to: [[mark(U13(_x0))]] = 5 + 2x0 > 4 + 2x0 = [[a!6220!6220U13(mark(_x0))]] [[mark(U26(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[a!6220!6220U26(mark(_x0))]] [[mark(U55(_x0, _x1))]] = 5 + 4x0 + 4x1 > 4 + 2x1 + 4x0 = [[a!6220!6220U55(mark(_x0), _x1)]] [[a!6220!6220U13(_x0)]] = 3 + x0 > 2 + x0 = [[U13(_x0)]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U55(_x0, _x1)]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[U55(_x0, _x1)]] We can thus remove the following rules: mark(U13(X)) => a!6220!6220U13(mark(X)) mark(U55(X, Y)) => a!6220!6220U55(mark(X), Y) a!6220!6220U13(X) => U13(X) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(U26(X)) >? a!6220!6220U26(mark(X)) a!6220!6220U26(X) >? U26(X) a!6220!6220U55(X, Y) >? U55(X, Y) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U26 = \y0.y0 U55 = \y0y1.y0 + y1 a!6220!6220U26 = \y0.y0 a!6220!6220U55 = \y0y1.3 + y0 + y1 mark = \y0.y0 Using this interpretation, the requirements translate to: [[mark(U26(_x0))]] = x0 >= x0 = [[a!6220!6220U26(mark(_x0))]] [[a!6220!6220U26(_x0)]] = x0 >= x0 = [[U26(_x0)]] [[a!6220!6220U55(_x0, _x1)]] = 3 + x0 + x1 > x0 + x1 = [[U55(_x0, _x1)]] We can thus remove the following rules: a!6220!6220U55(X, Y) => U55(X, Y) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): mark(U26(X)) >? a!6220!6220U26(mark(X)) a!6220!6220U26(X) >? U26(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U26 = \y0.1 + y0 a!6220!6220U26 = \y0.1 + y0 mark = \y0.2y0 Using this interpretation, the requirements translate to: [[mark(U26(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[a!6220!6220U26(mark(_x0))]] [[a!6220!6220U26(_x0)]] = 1 + x0 >= 1 + x0 = [[U26(_x0)]] We can thus remove the following rules: mark(U26(X)) => a!6220!6220U26(mark(X)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): a!6220!6220U26(X) >? U26(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U26 = \y0.y0 a!6220!6220U26 = \y0.3 + 3y0 Using this interpretation, the requirements translate to: [[a!6220!6220U26(_x0)]] = 3 + 3x0 > x0 = [[U26(_x0)]] We can thus remove the following rules: a!6220!6220U26(X) => U26(X) All rules were succesfully removed. Thus, termination of the original system has been reduced to termination of the beta-rule, which is well-known to hold. +++ Citations +++ [Kop12] C. Kop. Higher Order Termination. PhD Thesis, 2012.