/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 active : [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 active(!6220!6220(!6220!6220(X, Y), Z)) => mark(!6220!6220(X, !6220!6220(Y, Z))) active(!6220!6220(X, nil)) => mark(X) active(!6220!6220(nil, X)) => mark(X) active(U11(tt, X)) => mark(U12(isPalListKind(X), X)) active(U12(tt, X)) => mark(U13(isNeList(X))) active(U13(tt)) => mark(tt) active(U21(tt, X, Y)) => mark(U22(isPalListKind(X), X, Y)) active(U22(tt, X, Y)) => mark(U23(isPalListKind(Y), X, Y)) active(U23(tt, X, Y)) => mark(U24(isPalListKind(Y), X, Y)) active(U24(tt, X, Y)) => mark(U25(isList(X), Y)) active(U25(tt, X)) => mark(U26(isList(X))) active(U26(tt)) => mark(tt) active(U31(tt, X)) => mark(U32(isPalListKind(X), X)) active(U32(tt, X)) => mark(U33(isQid(X))) active(U33(tt)) => mark(tt) active(U41(tt, X, Y)) => mark(U42(isPalListKind(X), X, Y)) active(U42(tt, X, Y)) => mark(U43(isPalListKind(Y), X, Y)) active(U43(tt, X, Y)) => mark(U44(isPalListKind(Y), X, Y)) active(U44(tt, X, Y)) => mark(U45(isList(X), Y)) active(U45(tt, X)) => mark(U46(isNeList(X))) active(U46(tt)) => mark(tt) active(U51(tt, X, Y)) => mark(U52(isPalListKind(X), X, Y)) active(U52(tt, X, Y)) => mark(U53(isPalListKind(Y), X, Y)) active(U53(tt, X, Y)) => mark(U54(isPalListKind(Y), X, Y)) active(U54(tt, X, Y)) => mark(U55(isNeList(X), Y)) active(U55(tt, X)) => mark(U56(isList(X))) active(U56(tt)) => mark(tt) active(U61(tt, X)) => mark(U62(isPalListKind(X), X)) active(U62(tt, X)) => mark(U63(isQid(X))) active(U63(tt)) => mark(tt) active(U71(tt, X, Y)) => mark(U72(isPalListKind(X), Y)) active(U72(tt, X)) => mark(U73(isPal(X), X)) active(U73(tt, X)) => mark(U74(isPalListKind(X))) active(U74(tt)) => mark(tt) active(U81(tt, X)) => mark(U82(isPalListKind(X), X)) active(U82(tt, X)) => mark(U83(isNePal(X))) active(U83(tt)) => mark(tt) active(U91(tt, X)) => mark(U92(isPalListKind(X))) active(U92(tt)) => mark(tt) active(isList(X)) => mark(U11(isPalListKind(X), X)) active(isList(nil)) => mark(tt) active(isList(!6220!6220(X, Y))) => mark(U21(isPalListKind(X), X, Y)) active(isNeList(X)) => mark(U31(isPalListKind(X), X)) active(isNeList(!6220!6220(X, Y))) => mark(U41(isPalListKind(X), X, Y)) active(isNeList(!6220!6220(X, Y))) => mark(U51(isPalListKind(X), X, Y)) active(isNePal(X)) => mark(U61(isPalListKind(X), X)) active(isNePal(!6220!6220(X, !6220!6220(Y, X)))) => mark(U71(isQid(X), X, Y)) active(isPal(X)) => mark(U81(isPalListKind(X), X)) active(isPal(nil)) => mark(tt) active(isPalListKind(a)) => mark(tt) active(isPalListKind(e)) => mark(tt) active(isPalListKind(i)) => mark(tt) active(isPalListKind(nil)) => mark(tt) active(isPalListKind(o)) => mark(tt) active(isPalListKind(u)) => mark(tt) active(isPalListKind(!6220!6220(X, Y))) => mark(U91(isPalListKind(X), Y)) active(isQid(a)) => mark(tt) active(isQid(e)) => mark(tt) active(isQid(i)) => mark(tt) active(isQid(o)) => mark(tt) active(isQid(u)) => mark(tt) mark(!6220!6220(X, Y)) => active(!6220!6220(mark(X), mark(Y))) mark(nil) => active(nil) mark(U11(X, Y)) => active(U11(mark(X), Y)) mark(tt) => active(tt) mark(U12(X, Y)) => active(U12(mark(X), Y)) mark(isPalListKind(X)) => active(isPalListKind(X)) mark(U13(X)) => active(U13(mark(X))) mark(isNeList(X)) => active(isNeList(X)) mark(U21(X, Y, Z)) => active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) => active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) => active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) => active(U24(mark(X), Y, Z)) mark(U25(X, Y)) => active(U25(mark(X), Y)) mark(isList(X)) => active(isList(X)) mark(U26(X)) => active(U26(mark(X))) mark(U31(X, Y)) => active(U31(mark(X), Y)) mark(U32(X, Y)) => active(U32(mark(X), Y)) mark(U33(X)) => active(U33(mark(X))) mark(isQid(X)) => active(isQid(X)) mark(U41(X, Y, Z)) => active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) => active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) => active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) => active(U44(mark(X), Y, Z)) mark(U45(X, Y)) => active(U45(mark(X), Y)) mark(U46(X)) => active(U46(mark(X))) mark(U51(X, Y, Z)) => active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) => active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) => active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) => active(U54(mark(X), Y, Z)) mark(U55(X, Y)) => active(U55(mark(X), Y)) mark(U56(X)) => active(U56(mark(X))) mark(U61(X, Y)) => active(U61(mark(X), Y)) mark(U62(X, Y)) => active(U62(mark(X), Y)) mark(U63(X)) => active(U63(mark(X))) mark(U71(X, Y, Z)) => active(U71(mark(X), Y, Z)) mark(U72(X, Y)) => active(U72(mark(X), Y)) mark(U73(X, Y)) => active(U73(mark(X), Y)) mark(isPal(X)) => active(isPal(X)) mark(U74(X)) => active(U74(mark(X))) mark(U81(X, Y)) => active(U81(mark(X), Y)) mark(U82(X, Y)) => active(U82(mark(X), Y)) mark(U83(X)) => active(U83(mark(X))) mark(isNePal(X)) => active(isNePal(X)) mark(U91(X, Y)) => active(U91(mark(X), Y)) mark(U92(X)) => active(U92(mark(X))) mark(a) => active(a) mark(e) => active(e) mark(i) => active(i) mark(o) => active(o) mark(u) => active(u) !6220!6220(mark(X), Y) => !6220!6220(X, Y) !6220!6220(X, mark(Y)) => !6220!6220(X, Y) !6220!6220(active(X), Y) => !6220!6220(X, Y) !6220!6220(X, active(Y)) => !6220!6220(X, Y) U11(mark(X), Y) => U11(X, Y) U11(X, mark(Y)) => U11(X, Y) U11(active(X), Y) => U11(X, Y) U11(X, active(Y)) => U11(X, Y) U12(mark(X), Y) => U12(X, Y) U12(X, mark(Y)) => U12(X, Y) U12(active(X), Y) => U12(X, Y) U12(X, active(Y)) => U12(X, Y) isPalListKind(mark(X)) => isPalListKind(X) isPalListKind(active(X)) => isPalListKind(X) U13(mark(X)) => U13(X) U13(active(X)) => U13(X) isNeList(mark(X)) => isNeList(X) isNeList(active(X)) => isNeList(X) U21(mark(X), Y, Z) => U21(X, Y, Z) U21(X, mark(Y), Z) => U21(X, Y, Z) U21(X, Y, mark(Z)) => U21(X, Y, Z) U21(active(X), Y, Z) => U21(X, Y, Z) U21(X, active(Y), Z) => U21(X, Y, Z) U21(X, Y, active(Z)) => U21(X, Y, Z) U22(mark(X), Y, Z) => U22(X, Y, Z) U22(X, mark(Y), Z) => U22(X, Y, Z) U22(X, Y, mark(Z)) => U22(X, Y, Z) U22(active(X), Y, Z) => U22(X, Y, Z) U22(X, active(Y), Z) => U22(X, Y, Z) U22(X, Y, active(Z)) => U22(X, Y, Z) U23(mark(X), Y, Z) => U23(X, Y, Z) U23(X, mark(Y), Z) => U23(X, Y, Z) U23(X, Y, mark(Z)) => U23(X, Y, Z) U23(active(X), Y, Z) => U23(X, Y, Z) U23(X, active(Y), Z) => U23(X, Y, Z) U23(X, Y, active(Z)) => U23(X, Y, Z) U24(mark(X), Y, Z) => U24(X, Y, Z) U24(X, mark(Y), Z) => U24(X, Y, Z) U24(X, Y, mark(Z)) => U24(X, Y, Z) U24(active(X), Y, Z) => U24(X, Y, Z) U24(X, active(Y), Z) => U24(X, Y, Z) U24(X, Y, active(Z)) => U24(X, Y, Z) U25(mark(X), Y) => U25(X, Y) U25(X, mark(Y)) => U25(X, Y) U25(active(X), Y) => U25(X, Y) U25(X, active(Y)) => U25(X, Y) isList(mark(X)) => isList(X) isList(active(X)) => isList(X) U26(mark(X)) => U26(X) U26(active(X)) => U26(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X), Y) => U32(X, Y) U32(X, mark(Y)) => U32(X, Y) U32(active(X), Y) => U32(X, Y) U32(X, active(Y)) => U32(X, Y) U33(mark(X)) => U33(X) U33(active(X)) => U33(X) isQid(mark(X)) => isQid(X) isQid(active(X)) => isQid(X) U41(mark(X), Y, Z) => U41(X, Y, Z) U41(X, mark(Y), Z) => U41(X, Y, Z) U41(X, Y, mark(Z)) => U41(X, Y, Z) U41(active(X), Y, Z) => U41(X, Y, Z) U41(X, active(Y), Z) => U41(X, Y, Z) U41(X, Y, active(Z)) => U41(X, Y, Z) U42(mark(X), Y, Z) => U42(X, Y, Z) U42(X, mark(Y), Z) => U42(X, Y, Z) U42(X, Y, mark(Z)) => U42(X, Y, Z) U42(active(X), Y, Z) => U42(X, Y, Z) U42(X, active(Y), Z) => U42(X, Y, Z) U42(X, Y, active(Z)) => U42(X, Y, Z) U43(mark(X), Y, Z) => U43(X, Y, Z) U43(X, mark(Y), Z) => U43(X, Y, Z) U43(X, Y, mark(Z)) => U43(X, Y, Z) U43(active(X), Y, Z) => U43(X, Y, Z) U43(X, active(Y), Z) => U43(X, Y, Z) U43(X, Y, active(Z)) => U43(X, Y, Z) U44(mark(X), Y, Z) => U44(X, Y, Z) U44(X, mark(Y), Z) => U44(X, Y, Z) U44(X, Y, mark(Z)) => U44(X, Y, Z) U44(active(X), Y, Z) => U44(X, Y, Z) U44(X, active(Y), Z) => U44(X, Y, Z) U44(X, Y, active(Z)) => U44(X, Y, Z) U45(mark(X), Y) => U45(X, Y) U45(X, mark(Y)) => U45(X, Y) U45(active(X), Y) => U45(X, Y) U45(X, active(Y)) => U45(X, Y) U46(mark(X)) => U46(X) U46(active(X)) => U46(X) U51(mark(X), Y, Z) => U51(X, Y, Z) U51(X, mark(Y), Z) => U51(X, Y, Z) U51(X, Y, mark(Z)) => U51(X, Y, Z) U51(active(X), Y, Z) => U51(X, Y, Z) U51(X, active(Y), Z) => U51(X, Y, Z) U51(X, Y, active(Z)) => U51(X, Y, Z) U52(mark(X), Y, Z) => U52(X, Y, Z) U52(X, mark(Y), Z) => U52(X, Y, Z) U52(X, Y, mark(Z)) => U52(X, Y, Z) U52(active(X), Y, Z) => U52(X, Y, Z) U52(X, active(Y), Z) => U52(X, Y, Z) U52(X, Y, active(Z)) => U52(X, Y, Z) U53(mark(X), Y, Z) => U53(X, Y, Z) U53(X, mark(Y), Z) => U53(X, Y, Z) U53(X, Y, mark(Z)) => U53(X, Y, Z) U53(active(X), Y, Z) => U53(X, Y, Z) U53(X, active(Y), Z) => U53(X, Y, Z) U53(X, Y, active(Z)) => U53(X, Y, Z) U54(mark(X), Y, Z) => U54(X, Y, Z) U54(X, mark(Y), Z) => U54(X, Y, Z) U54(X, Y, mark(Z)) => U54(X, Y, Z) U54(active(X), Y, Z) => U54(X, Y, Z) U54(X, active(Y), Z) => U54(X, Y, Z) U54(X, Y, active(Z)) => U54(X, Y, Z) U55(mark(X), Y) => U55(X, Y) U55(X, mark(Y)) => U55(X, Y) U55(active(X), Y) => U55(X, Y) U55(X, active(Y)) => U55(X, Y) U56(mark(X)) => U56(X) U56(active(X)) => U56(X) U61(mark(X), Y) => U61(X, Y) U61(X, mark(Y)) => U61(X, Y) U61(active(X), Y) => U61(X, Y) U61(X, active(Y)) => U61(X, Y) U62(mark(X), Y) => U62(X, Y) U62(X, mark(Y)) => U62(X, Y) U62(active(X), Y) => U62(X, Y) U62(X, active(Y)) => U62(X, Y) U63(mark(X)) => U63(X) U63(active(X)) => U63(X) U71(mark(X), Y, Z) => U71(X, Y, Z) U71(X, mark(Y), Z) => U71(X, Y, Z) U71(X, Y, mark(Z)) => U71(X, Y, Z) U71(active(X), Y, Z) => U71(X, Y, Z) U71(X, active(Y), Z) => U71(X, Y, Z) U71(X, Y, active(Z)) => U71(X, Y, Z) U72(mark(X), Y) => U72(X, Y) U72(X, mark(Y)) => U72(X, Y) U72(active(X), Y) => U72(X, Y) U72(X, active(Y)) => U72(X, Y) U73(mark(X), Y) => U73(X, Y) U73(X, mark(Y)) => U73(X, Y) U73(active(X), Y) => U73(X, Y) U73(X, active(Y)) => U73(X, Y) isPal(mark(X)) => isPal(X) isPal(active(X)) => isPal(X) U74(mark(X)) => U74(X) U74(active(X)) => U74(X) U81(mark(X), Y) => U81(X, Y) U81(X, mark(Y)) => U81(X, Y) U81(active(X), Y) => U81(X, Y) U81(X, active(Y)) => U81(X, Y) U82(mark(X), Y) => U82(X, Y) U82(X, mark(Y)) => U82(X, Y) U82(active(X), Y) => U82(X, Y) U82(X, active(Y)) => U82(X, Y) U83(mark(X)) => U83(X) U83(active(X)) => U83(X) isNePal(mark(X)) => isNePal(X) isNePal(active(X)) => isNePal(X) U91(mark(X), Y) => U91(X, Y) U91(X, mark(Y)) => U91(X, Y) U91(active(X), Y) => U91(X, Y) U91(X, active(Y)) => U91(X, Y) U92(mark(X)) => U92(X) U92(active(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]): active(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(!6220!6220(X, nil)) >? mark(X) active(!6220!6220(nil, X)) >? mark(X) active(U11(tt, X)) >? mark(U12(isPalListKind(X), X)) active(U12(tt, X)) >? mark(U13(isNeList(X))) active(U13(tt)) >? mark(tt) active(U21(tt, X, Y)) >? mark(U22(isPalListKind(X), X, Y)) active(U22(tt, X, Y)) >? mark(U23(isPalListKind(Y), X, Y)) active(U23(tt, X, Y)) >? mark(U24(isPalListKind(Y), X, Y)) active(U24(tt, X, Y)) >? mark(U25(isList(X), Y)) active(U25(tt, X)) >? mark(U26(isList(X))) active(U26(tt)) >? mark(tt) active(U31(tt, X)) >? mark(U32(isPalListKind(X), X)) active(U32(tt, X)) >? mark(U33(isQid(X))) active(U33(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U42(tt, X, Y)) >? mark(U43(isPalListKind(Y), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U44(tt, X, Y)) >? mark(U45(isList(X), Y)) active(U45(tt, X)) >? mark(U46(isNeList(X))) active(U46(tt)) >? mark(tt) active(U51(tt, X, Y)) >? mark(U52(isPalListKind(X), X, Y)) active(U52(tt, X, Y)) >? mark(U53(isPalListKind(Y), X, Y)) active(U53(tt, X, Y)) >? mark(U54(isPalListKind(Y), X, Y)) active(U54(tt, X, Y)) >? mark(U55(isNeList(X), Y)) active(U55(tt, X)) >? mark(U56(isList(X))) active(U56(tt)) >? mark(tt) active(U61(tt, X)) >? mark(U62(isPalListKind(X), X)) active(U62(tt, X)) >? mark(U63(isQid(X))) active(U63(tt)) >? mark(tt) active(U71(tt, X, Y)) >? mark(U72(isPalListKind(X), Y)) active(U72(tt, X)) >? mark(U73(isPal(X), X)) active(U73(tt, X)) >? mark(U74(isPalListKind(X))) active(U74(tt)) >? mark(tt) active(U81(tt, X)) >? mark(U82(isPalListKind(X), X)) active(U82(tt, X)) >? mark(U83(isNePal(X))) active(U83(tt)) >? mark(tt) active(U91(tt, X)) >? mark(U92(isPalListKind(X))) active(U92(tt)) >? mark(tt) active(isList(X)) >? mark(U11(isPalListKind(X), X)) active(isList(nil)) >? mark(tt) active(isList(!6220!6220(X, Y))) >? mark(U21(isPalListKind(X), X, Y)) active(isNeList(X)) >? mark(U31(isPalListKind(X), X)) active(isNeList(!6220!6220(X, Y))) >? mark(U41(isPalListKind(X), X, Y)) active(isNeList(!6220!6220(X, Y))) >? mark(U51(isPalListKind(X), X, Y)) active(isNePal(X)) >? mark(U61(isPalListKind(X), X)) active(isNePal(!6220!6220(X, !6220!6220(Y, X)))) >? mark(U71(isQid(X), X, Y)) active(isPal(X)) >? mark(U81(isPalListKind(X), X)) active(isPal(nil)) >? mark(tt) active(isPalListKind(a)) >? mark(tt) active(isPalListKind(e)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) active(isPalListKind(o)) >? mark(tt) active(isPalListKind(u)) >? mark(tt) active(isPalListKind(!6220!6220(X, Y))) >? mark(U91(isPalListKind(X), Y)) active(isQid(a)) >? mark(tt) active(isQid(e)) >? mark(tt) active(isQid(i)) >? mark(tt) active(isQid(o)) >? mark(tt) active(isQid(u)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 [[U46(x_1)]] = x_1 [[U56(x_1)]] = x_1 [[U63(x_1)]] = x_1 [[U74(x_1)]] = x_1 [[U83(x_1)]] = x_1 [[active(x_1)]] = x_1 [[mark(x_1)]] = x_1 [[u]] = _|_ We choose Lex = {!6220!6220} and Mul = {U11, U12, U21, U22, U23, U24, U25, U31, U32, U41, U42, U43, U44, U45, U51, U52, U53, U54, U55, U61, U62, U71, U72, U73, U81, U82, U91, U92, a, e, i, isList, isNeList, isNePal, isPal, isPalListKind, isQid, nil, o, tt}, and the following precedence: !6220!6220 > a > U91 > U21 > U22 > U23 > U24 > U51 > e > U52 > U25 > U41 > U71 > U53 > U54 > U55 > U72 > isPal > U81 > U82 > U92 > U42 > U43 > U44 = isList > U45 > U11 > i > U12 > isNeList > U73 > isNePal > U31 > U32 > U61 > U62 > isQid > isPalListKind = tt > o > nil Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: !6220!6220(!6220!6220(X, Y), Z) >= !6220!6220(X, !6220!6220(Y, Z)) !6220!6220(X, nil) >= X !6220!6220(nil, X) >= X U11(tt, X) > U12(isPalListKind(X), X) U12(tt, X) >= isNeList(X) tt >= tt U21(tt, X, Y) >= U22(isPalListKind(X), X, Y) U22(tt, X, Y) >= U23(isPalListKind(Y), X, Y) U23(tt, X, Y) > U24(isPalListKind(Y), X, Y) U24(tt, X, Y) >= U25(isList(X), Y) U25(tt, X) >= isList(X) tt >= tt U31(tt, X) > U32(isPalListKind(X), X) U32(tt, X) >= isQid(X) tt >= tt U41(tt, X, Y) >= U42(isPalListKind(X), X, Y) U42(tt, X, Y) >= U43(isPalListKind(Y), X, Y) U43(tt, X, Y) >= U44(isPalListKind(Y), X, Y) U44(tt, X, Y) > U45(isList(X), Y) U45(tt, X) >= isNeList(X) tt >= tt U51(tt, X, Y) >= U52(isPalListKind(X), X, Y) U52(tt, X, Y) > U53(isPalListKind(Y), X, Y) U53(tt, X, Y) > U54(isPalListKind(Y), X, Y) U54(tt, X, Y) >= U55(isNeList(X), Y) U55(tt, X) >= isList(X) tt >= tt U61(tt, X) > U62(isPalListKind(X), X) U62(tt, X) >= isQid(X) tt >= tt U71(tt, X, Y) >= U72(isPalListKind(X), Y) U72(tt, X) > U73(isPal(X), X) U73(tt, X) >= isPalListKind(X) tt >= tt U81(tt, X) >= U82(isPalListKind(X), X) U82(tt, X) >= isNePal(X) tt >= tt U91(tt, X) > U92(isPalListKind(X)) U92(tt) >= tt isList(X) > U11(isPalListKind(X), X) isList(nil) >= tt isList(!6220!6220(X, Y)) >= U21(isPalListKind(X), X, Y) isNeList(X) > U31(isPalListKind(X), X) isNeList(!6220!6220(X, Y)) > U41(isPalListKind(X), X, Y) isNeList(!6220!6220(X, Y)) > U51(isPalListKind(X), X, Y) isNePal(X) > U61(isPalListKind(X), X) isNePal(!6220!6220(X, !6220!6220(Y, X))) > U71(isQid(X), X, Y) isPal(X) > U81(isPalListKind(X), X) isPal(nil) > tt isPalListKind(a) >= tt isPalListKind(e) >= tt isPalListKind(i) >= tt isPalListKind(nil) >= tt isPalListKind(o) >= tt isPalListKind(_|_) > tt isPalListKind(!6220!6220(X, Y)) >= U91(isPalListKind(X), Y) isQid(a) > tt isQid(e) >= tt isQid(i) >= tt isQid(o) >= tt isQid(_|_) > tt !6220!6220(X, Y) >= !6220!6220(X, Y) nil >= nil U11(X, Y) >= U11(X, Y) tt >= tt U12(X, Y) >= U12(X, Y) isPalListKind(X) >= isPalListKind(X) X >= X isNeList(X) >= isNeList(X) U21(X, Y, Z) >= U21(X, Y, Z) U22(X, Y, Z) >= U22(X, Y, Z) U23(X, Y, Z) >= U23(X, Y, Z) U24(X, Y, Z) >= U24(X, Y, Z) U25(X, Y) >= U25(X, Y) isList(X) >= isList(X) X >= X U31(X, Y) >= U31(X, Y) U32(X, Y) >= U32(X, Y) X >= X isQid(X) >= isQid(X) U41(X, Y, Z) >= U41(X, Y, Z) U42(X, Y, Z) >= U42(X, Y, Z) U43(X, Y, Z) >= U43(X, Y, Z) U44(X, Y, Z) >= U44(X, Y, Z) U45(X, Y) >= U45(X, Y) X >= X U51(X, Y, Z) >= U51(X, Y, Z) U52(X, Y, Z) >= U52(X, Y, Z) U53(X, Y, Z) >= U53(X, Y, Z) U54(X, Y, Z) >= U54(X, Y, Z) U55(X, Y) >= U55(X, Y) X >= X U61(X, Y) >= U61(X, Y) U62(X, Y) >= U62(X, Y) X >= X U71(X, Y, Z) >= U71(X, Y, Z) U72(X, Y) >= U72(X, Y) U73(X, Y) >= U73(X, Y) isPal(X) >= isPal(X) X >= X U81(X, Y) >= U81(X, Y) U82(X, Y) >= U82(X, Y) X >= X isNePal(X) >= isNePal(X) U91(X, Y) >= U91(X, Y) U92(X) >= U92(X) a >= a e >= e i >= i o >= o _|_ >= _|_ !6220!6220(X, Y) >= !6220!6220(X, Y) !6220!6220(X, Y) >= !6220!6220(X, Y) !6220!6220(X, Y) >= !6220!6220(X, Y) !6220!6220(X, Y) >= !6220!6220(X, Y) U11(X, Y) >= U11(X, Y) U11(X, Y) >= U11(X, Y) U11(X, Y) >= U11(X, Y) U11(X, Y) >= U11(X, Y) U12(X, Y) >= U12(X, Y) U12(X, Y) >= U12(X, Y) U12(X, Y) >= U12(X, Y) U12(X, Y) >= U12(X, Y) isPalListKind(X) >= isPalListKind(X) isPalListKind(X) >= isPalListKind(X) X >= X X >= X isNeList(X) >= isNeList(X) isNeList(X) >= isNeList(X) U21(X, Y, Z) >= U21(X, Y, Z) U21(X, Y, Z) >= U21(X, Y, Z) U21(X, Y, Z) >= U21(X, Y, Z) U21(X, Y, Z) >= U21(X, Y, Z) U21(X, Y, Z) >= U21(X, Y, Z) U21(X, Y, Z) >= U21(X, Y, Z) U22(X, Y, Z) >= U22(X, Y, Z) U22(X, Y, Z) >= U22(X, Y, Z) U22(X, Y, Z) >= U22(X, Y, Z) U22(X, Y, Z) >= U22(X, Y, Z) U22(X, Y, Z) >= U22(X, Y, Z) U22(X, Y, Z) >= U22(X, Y, Z) U23(X, Y, Z) >= U23(X, Y, Z) U23(X, Y, Z) >= U23(X, Y, Z) U23(X, Y, Z) >= U23(X, Y, Z) U23(X, Y, Z) >= U23(X, Y, Z) U23(X, Y, Z) >= U23(X, Y, Z) U23(X, Y, Z) >= U23(X, Y, Z) U24(X, Y, Z) >= U24(X, Y, Z) U24(X, Y, Z) >= U24(X, Y, Z) U24(X, Y, Z) >= U24(X, Y, Z) U24(X, Y, Z) >= U24(X, Y, Z) U24(X, Y, Z) >= U24(X, Y, Z) U24(X, Y, Z) >= U24(X, Y, Z) U25(X, Y) >= U25(X, Y) U25(X, Y) >= U25(X, Y) U25(X, Y) >= U25(X, Y) U25(X, Y) >= U25(X, Y) isList(X) >= isList(X) isList(X) >= isList(X) X >= X X >= X U31(X, Y) >= U31(X, Y) U31(X, Y) >= U31(X, Y) U31(X, Y) >= U31(X, Y) U31(X, Y) >= U31(X, Y) U32(X, Y) >= U32(X, Y) U32(X, Y) >= U32(X, Y) U32(X, Y) >= U32(X, Y) U32(X, Y) >= U32(X, Y) X >= X X >= X isQid(X) >= isQid(X) isQid(X) >= isQid(X) U41(X, Y, Z) >= U41(X, Y, Z) U41(X, Y, Z) >= U41(X, Y, Z) U41(X, Y, Z) >= U41(X, Y, Z) U41(X, Y, Z) >= U41(X, Y, Z) U41(X, Y, Z) >= U41(X, Y, Z) U41(X, Y, Z) >= U41(X, Y, Z) U42(X, Y, Z) >= U42(X, Y, Z) U42(X, Y, Z) >= U42(X, Y, Z) U42(X, Y, Z) >= U42(X, Y, Z) U42(X, Y, Z) >= U42(X, Y, Z) U42(X, Y, Z) >= U42(X, Y, Z) U42(X, Y, Z) >= U42(X, Y, Z) U43(X, Y, Z) >= U43(X, Y, Z) U43(X, Y, Z) >= U43(X, Y, Z) U43(X, Y, Z) >= U43(X, Y, Z) U43(X, Y, Z) >= U43(X, Y, Z) U43(X, Y, Z) >= U43(X, Y, Z) U43(X, Y, Z) >= U43(X, Y, Z) U44(X, Y, Z) >= U44(X, Y, Z) U44(X, Y, Z) >= U44(X, Y, Z) U44(X, Y, Z) >= U44(X, Y, Z) U44(X, Y, Z) >= U44(X, Y, Z) U44(X, Y, Z) >= U44(X, Y, Z) U44(X, Y, Z) >= U44(X, Y, Z) U45(X, Y) >= U45(X, Y) U45(X, Y) >= U45(X, Y) U45(X, Y) >= U45(X, Y) U45(X, Y) >= U45(X, Y) X >= X X >= X U51(X, Y, Z) >= U51(X, Y, Z) U51(X, Y, Z) >= U51(X, Y, Z) U51(X, Y, Z) >= U51(X, Y, Z) U51(X, Y, Z) >= U51(X, Y, Z) U51(X, Y, Z) >= U51(X, Y, Z) U51(X, Y, Z) >= U51(X, Y, Z) U52(X, Y, Z) >= U52(X, Y, Z) U52(X, Y, Z) >= U52(X, Y, Z) U52(X, Y, Z) >= U52(X, Y, Z) U52(X, Y, Z) >= U52(X, Y, Z) U52(X, Y, Z) >= U52(X, Y, Z) U52(X, Y, Z) >= U52(X, Y, Z) U53(X, Y, Z) >= U53(X, Y, Z) U53(X, Y, Z) >= U53(X, Y, Z) U53(X, Y, Z) >= U53(X, Y, Z) U53(X, Y, Z) >= U53(X, Y, Z) U53(X, Y, Z) >= U53(X, Y, Z) U53(X, Y, Z) >= U53(X, Y, Z) U54(X, Y, Z) >= U54(X, Y, Z) U54(X, Y, Z) >= U54(X, Y, Z) U54(X, Y, Z) >= U54(X, Y, Z) U54(X, Y, Z) >= U54(X, Y, Z) U54(X, Y, Z) >= U54(X, Y, Z) U54(X, Y, Z) >= U54(X, Y, Z) U55(X, Y) >= U55(X, Y) U55(X, Y) >= U55(X, Y) U55(X, Y) >= U55(X, Y) U55(X, Y) >= U55(X, Y) X >= X X >= X U61(X, Y) >= U61(X, Y) U61(X, Y) >= U61(X, Y) U61(X, Y) >= U61(X, Y) U61(X, Y) >= U61(X, Y) U62(X, Y) >= U62(X, Y) U62(X, Y) >= U62(X, Y) U62(X, Y) >= U62(X, Y) U62(X, Y) >= U62(X, Y) X >= X X >= X U71(X, Y, Z) >= U71(X, Y, Z) U71(X, Y, Z) >= U71(X, Y, Z) U71(X, Y, Z) >= U71(X, Y, Z) U71(X, Y, Z) >= U71(X, Y, Z) U71(X, Y, Z) >= U71(X, Y, Z) U71(X, Y, Z) >= U71(X, Y, Z) U72(X, Y) >= U72(X, Y) U72(X, Y) >= U72(X, Y) U72(X, Y) >= U72(X, Y) U72(X, Y) >= U72(X, Y) U73(X, Y) >= U73(X, Y) U73(X, Y) >= U73(X, Y) U73(X, Y) >= U73(X, Y) U73(X, Y) >= U73(X, Y) isPal(X) >= isPal(X) isPal(X) >= isPal(X) X >= X X >= X U81(X, Y) >= U81(X, Y) U81(X, Y) >= U81(X, Y) U81(X, Y) >= U81(X, Y) U81(X, Y) >= U81(X, Y) U82(X, Y) >= U82(X, Y) U82(X, Y) >= U82(X, Y) U82(X, Y) >= U82(X, Y) U82(X, Y) >= U82(X, Y) X >= X X >= X isNePal(X) >= isNePal(X) isNePal(X) >= isNePal(X) U91(X, Y) >= U91(X, Y) U91(X, Y) >= U91(X, Y) U91(X, Y) >= U91(X, Y) U91(X, Y) >= U91(X, Y) U92(X) >= U92(X) U92(X) >= U92(X) With these choices, we have: 1] !6220!6220(!6220!6220(X, Y), Z) >= !6220!6220(X, !6220!6220(Y, Z)) because [2], by (Star) 2] !6220!6220*(!6220!6220(X, Y), Z) >= !6220!6220(X, !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] !6220!6220*(!6220!6220(X, Y), Z) >= X because [7], by (Select) 7] !6220!6220(X, Y) >= X because [4], by (Star) 8] !6220!6220*(!6220!6220(X, Y), Z) >= !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] !6220!6220*(!6220!6220(X, Y), Z) >= Y because [13], by (Select) 13] !6220!6220(X, Y) >= Y because [10], by (Star) 14] !6220!6220*(!6220!6220(X, Y), Z) >= Z because [15], by (Select) 15] Z >= Z by (Meta) 16] !6220!6220(X, nil) >= X because [17], by (Star) 17] !6220!6220*(X, nil) >= X because [5], by (Select) 18] !6220!6220(nil, X) >= X because [19], by (Star) 19] !6220!6220*(nil, X) >= X because [5], by (Select) 20] U11(tt, X) > U12(isPalListKind(X), X) because [21], by definition 21] U11*(tt, X) >= U12(isPalListKind(X), X) because U11 > U12, [22] and [23], by (Copy) 22] U11*(tt, X) >= isPalListKind(X) because U11 > isPalListKind and [23], by (Copy) 23] U11*(tt, X) >= X because [24], by (Select) 24] X >= X by (Meta) 25] U12(tt, X) >= isNeList(X) because [26], by (Star) 26] U12*(tt, X) >= isNeList(X) because U12 > isNeList and [27], by (Copy) 27] U12*(tt, X) >= X because [24], by (Select) 28] tt >= tt by (Fun) 29] U21(tt, X, Y) >= U22(isPalListKind(X), X, Y) because [30], by (Star) 30] U21*(tt, X, Y) >= U22(isPalListKind(X), X, Y) because U21 > U22, [31], [32] and [34], by (Copy) 31] U21*(tt, X, Y) >= isPalListKind(X) because U21 > isPalListKind and [32], by (Copy) 32] U21*(tt, X, Y) >= X because [33], by (Select) 33] X >= X by (Meta) 34] U21*(tt, X, Y) >= Y because [35], by (Select) 35] Y >= Y by (Meta) 36] U22(tt, X, Y) >= U23(isPalListKind(Y), X, Y) because [37], by (Star) 37] U22*(tt, X, Y) >= U23(isPalListKind(Y), X, Y) because U22 > U23, [38], [40] and [39], by (Copy) 38] U22*(tt, X, Y) >= isPalListKind(Y) because U22 > isPalListKind and [39], by (Copy) 39] U22*(tt, X, Y) >= Y because [35], by (Select) 40] U22*(tt, X, Y) >= X because [33], by (Select) 41] U23(tt, X, Y) > U24(isPalListKind(Y), X, Y) because [42], by definition 42] U23*(tt, X, Y) >= U24(isPalListKind(Y), X, Y) because U23 > U24, [43], [45] and [44], by (Copy) 43] U23*(tt, X, Y) >= isPalListKind(Y) because U23 > isPalListKind and [44], by (Copy) 44] U23*(tt, X, Y) >= Y because [35], by (Select) 45] U23*(tt, X, Y) >= X because [33], by (Select) 46] U24(tt, X, Y) >= U25(isList(X), Y) because [47], by (Star) 47] U24*(tt, X, Y) >= U25(isList(X), Y) because U24 > U25, [48] and [50], by (Copy) 48] U24*(tt, X, Y) >= isList(X) because U24 > isList and [49], by (Copy) 49] U24*(tt, X, Y) >= X because [33], by (Select) 50] U24*(tt, X, Y) >= Y because [35], by (Select) 51] U25(tt, X) >= isList(X) because [52], by (Star) 52] U25*(tt, X) >= isList(X) because U25 > isList and [53], by (Copy) 53] U25*(tt, X) >= X because [35], by (Select) 54] tt >= tt by (Fun) 55] U31(tt, X) > U32(isPalListKind(X), X) because [56], by definition 56] U31*(tt, X) >= U32(isPalListKind(X), X) because U31 > U32, [57] and [58], by (Copy) 57] U31*(tt, X) >= isPalListKind(X) because U31 > isPalListKind and [58], by (Copy) 58] U31*(tt, X) >= X because [24], by (Select) 59] U32(tt, X) >= isQid(X) because [60], by (Star) 60] U32*(tt, X) >= isQid(X) because U32 > isQid and [61], by (Copy) 61] U32*(tt, X) >= X because [24], by (Select) 62] tt >= tt by (Fun) 63] U41(tt, X, Y) >= U42(isPalListKind(X), X, Y) because [64], by (Star) 64] U41*(tt, X, Y) >= U42(isPalListKind(X), X, Y) because U41 > U42, [65], [66] and [67], by (Copy) 65] U41*(tt, X, Y) >= isPalListKind(X) because U41 > isPalListKind and [66], by (Copy) 66] U41*(tt, X, Y) >= X because [33], by (Select) 67] U41*(tt, X, Y) >= Y because [35], by (Select) 68] U42(tt, X, Y) >= U43(isPalListKind(Y), X, Y) because [69], by (Star) 69] U42*(tt, X, Y) >= U43(isPalListKind(Y), X, Y) because U42 > U43, [70], [72] and [71], by (Copy) 70] U42*(tt, X, Y) >= isPalListKind(Y) because U42 > isPalListKind and [71], by (Copy) 71] U42*(tt, X, Y) >= Y because [35], by (Select) 72] U42*(tt, X, Y) >= X because [33], by (Select) 73] U43(tt, X, Y) >= U44(isPalListKind(Y), X, Y) because [74], by (Star) 74] U43*(tt, X, Y) >= U44(isPalListKind(Y), X, Y) because U43 > U44, [75], [77] and [76], by (Copy) 75] U43*(tt, X, Y) >= isPalListKind(Y) because U43 > isPalListKind and [76], by (Copy) 76] U43*(tt, X, Y) >= Y because [35], by (Select) 77] U43*(tt, X, Y) >= X because [33], by (Select) 78] U44(tt, X, Y) > U45(isList(X), Y) because [79], by definition 79] U44*(tt, X, Y) >= U45(isList(X), Y) because U44 > U45, [80] and [82], by (Copy) 80] U44*(tt, X, Y) >= isList(X) because U44 = isList, U44 in Mul and [81], by (Stat) 81] X >= X by (Meta) 82] U44*(tt, X, Y) >= Y because [35], by (Select) 83] U45(tt, X) >= isNeList(X) because [84], by (Star) 84] U45*(tt, X) >= isNeList(X) because U45 > isNeList and [85], by (Copy) 85] U45*(tt, X) >= X because [35], by (Select) 86] tt >= tt by (Fun) 87] U51(tt, X, Y) >= U52(isPalListKind(X), X, Y) because [88], by (Star) 88] U51*(tt, X, Y) >= U52(isPalListKind(X), X, Y) because U51 > U52, [89], [90] and [91], by (Copy) 89] U51*(tt, X, Y) >= isPalListKind(X) because U51 > isPalListKind and [90], by (Copy) 90] U51*(tt, X, Y) >= X because [81], by (Select) 91] U51*(tt, X, Y) >= Y because [35], by (Select) 92] U52(tt, X, Y) > U53(isPalListKind(Y), X, Y) because [93], by definition 93] U52*(tt, X, Y) >= U53(isPalListKind(Y), X, Y) because U52 > U53, [94], [96] and [95], by (Copy) 94] U52*(tt, X, Y) >= isPalListKind(Y) because U52 > isPalListKind and [95], by (Copy) 95] U52*(tt, X, Y) >= Y because [35], by (Select) 96] U52*(tt, X, Y) >= X because [81], by (Select) 97] U53(tt, X, Y) > U54(isPalListKind(Y), X, Y) because [98], by definition 98] U53*(tt, X, Y) >= U54(isPalListKind(Y), X, Y) because U53 > U54, [99], [101] and [100], by (Copy) 99] U53*(tt, X, Y) >= isPalListKind(Y) because U53 > isPalListKind and [100], by (Copy) 100] U53*(tt, X, Y) >= Y because [35], by (Select) 101] U53*(tt, X, Y) >= X because [81], by (Select) 102] U54(tt, X, Y) >= U55(isNeList(X), Y) because [103], by (Star) 103] U54*(tt, X, Y) >= U55(isNeList(X), Y) because U54 > U55, [104] and [106], by (Copy) 104] U54*(tt, X, Y) >= isNeList(X) because U54 > isNeList and [105], by (Copy) 105] U54*(tt, X, Y) >= X because [81], by (Select) 106] U54*(tt, X, Y) >= Y because [35], by (Select) 107] U55(tt, X) >= isList(X) because [108], by (Star) 108] U55*(tt, X) >= isList(X) because U55 > isList and [109], by (Copy) 109] U55*(tt, X) >= X because [35], by (Select) 110] tt >= tt by (Fun) 111] U61(tt, X) > U62(isPalListKind(X), X) because [112], by definition 112] U61*(tt, X) >= U62(isPalListKind(X), X) because U61 > U62, [113] and [114], by (Copy) 113] U61*(tt, X) >= isPalListKind(X) because U61 > isPalListKind and [114], by (Copy) 114] U61*(tt, X) >= X because [24], by (Select) 115] U62(tt, X) >= isQid(X) because [116], by (Star) 116] U62*(tt, X) >= isQid(X) because U62 > isQid and [117], by (Copy) 117] U62*(tt, X) >= X because [24], by (Select) 118] tt >= tt by (Fun) 119] U71(tt, X, Y) >= U72(isPalListKind(X), Y) because [120], by (Star) 120] U71*(tt, X, Y) >= U72(isPalListKind(X), Y) because U71 > U72, [121] and [124], by (Copy) 121] U71*(tt, X, Y) >= isPalListKind(X) because U71 > isPalListKind and [122], by (Copy) 122] U71*(tt, X, Y) >= X because [123], by (Select) 123] X >= X by (Meta) 124] U71*(tt, X, Y) >= Y because [125], by (Select) 125] Y >= Y by (Meta) 126] U72(tt, X) > U73(isPal(X), X) because [127], by definition 127] U72*(tt, X) >= U73(isPal(X), X) because U72 > U73, [128] and [129], by (Copy) 128] U72*(tt, X) >= isPal(X) because U72 > isPal and [129], by (Copy) 129] U72*(tt, X) >= X because [125], by (Select) 130] U73(tt, X) >= isPalListKind(X) because [131], by (Star) 131] U73*(tt, X) >= isPalListKind(X) because U73 > isPalListKind and [132], by (Copy) 132] U73*(tt, X) >= X because [125], by (Select) 133] tt >= tt by (Fun) 134] U81(tt, X) >= U82(isPalListKind(X), X) because [135], by (Star) 135] U81*(tt, X) >= U82(isPalListKind(X), X) because U81 > U82, [136] and [137], by (Copy) 136] U81*(tt, X) >= isPalListKind(X) because U81 > isPalListKind and [137], by (Copy) 137] U81*(tt, X) >= X because [24], by (Select) 138] U82(tt, X) >= isNePal(X) because [139], by (Star) 139] U82*(tt, X) >= isNePal(X) because U82 > isNePal and [140], by (Copy) 140] U82*(tt, X) >= X because [24], by (Select) 141] tt >= tt by (Fun) 142] U91(tt, X) > U92(isPalListKind(X)) because [143], by definition 143] U91*(tt, X) >= U92(isPalListKind(X)) because U91 > U92 and [144], by (Copy) 144] U91*(tt, X) >= isPalListKind(X) because U91 > isPalListKind and [145], by (Copy) 145] U91*(tt, X) >= X because [35], by (Select) 146] U92(tt) >= tt because [147], by (Star) 147] U92*(tt) >= tt because [141], by (Select) 148] isList(X) > U11(isPalListKind(X), X) because [149], by definition 149] isList*(X) >= U11(isPalListKind(X), X) because isList > U11, [150] and [151], by (Copy) 150] isList*(X) >= isPalListKind(X) because isList > isPalListKind and [151], by (Copy) 151] isList*(X) >= X because [24], by (Select) 152] isList(nil) >= tt because [153], by (Star) 153] isList*(nil) >= tt because isList > tt, by (Copy) 154] isList(!6220!6220(X, Y)) >= U21(isPalListKind(X), X, Y) because [155], by (Star) 155] isList*(!6220!6220(X, Y)) >= U21(isPalListKind(X), X, Y) because [156], by (Select) 156] !6220!6220(X, Y) >= U21(isPalListKind(X), X, Y) because [157], by (Star) 157] !6220!6220*(X, Y) >= U21(isPalListKind(X), X, Y) because !6220!6220 > U21, [158], [159] and [160], by (Copy) 158] !6220!6220*(X, Y) >= isPalListKind(X) because !6220!6220 > isPalListKind and [159], by (Copy) 159] !6220!6220*(X, Y) >= X because [81], by (Select) 160] !6220!6220*(X, Y) >= Y because [35], by (Select) 161] isNeList(X) > U31(isPalListKind(X), X) because [162], by definition 162] isNeList*(X) >= U31(isPalListKind(X), X) because isNeList > U31, [163] and [164], by (Copy) 163] isNeList*(X) >= isPalListKind(X) because isNeList > isPalListKind and [164], by (Copy) 164] isNeList*(X) >= X because [24], by (Select) 165] isNeList(!6220!6220(X, Y)) > U41(isPalListKind(X), X, Y) because [166], by definition 166] isNeList*(!6220!6220(X, Y)) >= U41(isPalListKind(X), X, Y) because [167], by (Select) 167] !6220!6220(X, Y) >= U41(isPalListKind(X), X, Y) because [168], by (Star) 168] !6220!6220*(X, Y) >= U41(isPalListKind(X), X, Y) because !6220!6220 > U41, [158], [159] and [160], by (Copy) 169] isNeList(!6220!6220(X, Y)) > U51(isPalListKind(X), X, Y) because [170], by definition 170] isNeList*(!6220!6220(X, Y)) >= U51(isPalListKind(X), X, Y) because [171], by (Select) 171] !6220!6220(X, Y) >= U51(isPalListKind(X), X, Y) because [172], by (Star) 172] !6220!6220*(X, Y) >= U51(isPalListKind(X), X, Y) because !6220!6220 > U51, [158], [159] and [160], by (Copy) 173] isNePal(X) > U61(isPalListKind(X), X) because [174], by definition 174] isNePal*(X) >= U61(isPalListKind(X), X) because isNePal > U61, [175] and [176], by (Copy) 175] isNePal*(X) >= isPalListKind(X) because isNePal > isPalListKind and [176], by (Copy) 176] isNePal*(X) >= X because [24], by (Select) 177] isNePal(!6220!6220(X, !6220!6220(Y, X))) > U71(isQid(X), X, Y) because [178], by definition 178] isNePal*(!6220!6220(X, !6220!6220(Y, X))) >= U71(isQid(X), X, Y) because [179], by (Select) 179] !6220!6220(X, !6220!6220(Y, X)) >= U71(isQid(X), X, Y) because [180], by (Star) 180] !6220!6220*(X, !6220!6220(Y, X)) >= U71(isQid(X), X, Y) because [181], by (Select) 181] !6220!6220(Y, X) >= U71(isQid(X), X, Y) because [182], by (Star) 182] !6220!6220*(Y, X) >= U71(isQid(X), X, Y) because !6220!6220 > U71, [183], [184] and [185], by (Copy) 183] !6220!6220*(Y, X) >= isQid(X) because !6220!6220 > isQid and [184], by (Copy) 184] !6220!6220*(Y, X) >= X because [123], by (Select) 185] !6220!6220*(Y, X) >= Y because [125], by (Select) 186] isPal(X) > U81(isPalListKind(X), X) because [187], by definition 187] isPal*(X) >= U81(isPalListKind(X), X) because isPal > U81, [188] and [189], by (Copy) 188] isPal*(X) >= isPalListKind(X) because isPal > isPalListKind and [189], by (Copy) 189] isPal*(X) >= X because [24], by (Select) 190] isPal(nil) > tt because [191], by definition 191] isPal*(nil) >= tt because isPal > tt, by (Copy) 192] isPalListKind(a) >= tt because [193], by (Star) 193] isPalListKind*(a) >= tt because isPalListKind = tt and isPalListKind in Mul, by (Stat) 194] isPalListKind(e) >= tt because [195], by (Star) 195] isPalListKind*(e) >= tt because isPalListKind = tt and isPalListKind in Mul, by (Stat) 196] isPalListKind(i) >= tt because [197], by (Star) 197] isPalListKind*(i) >= tt because [198], by (Select) 198] i >= tt because [199], by (Star) 199] i* >= tt because i > tt, by (Copy) 200] isPalListKind(nil) >= tt because [201], by (Star) 201] isPalListKind*(nil) >= tt because isPalListKind = tt and isPalListKind in Mul, by (Stat) 202] isPalListKind(o) >= tt because [203], by (Star) 203] isPalListKind*(o) >= tt because isPalListKind = tt and isPalListKind in Mul, by (Stat) 204] isPalListKind(_|_) > tt because [205], by definition 205] isPalListKind*(_|_) >= tt because isPalListKind = tt and isPalListKind in Mul, by (Stat) 206] isPalListKind(!6220!6220(X, Y)) >= U91(isPalListKind(X), Y) because [207], by (Star) 207] isPalListKind*(!6220!6220(X, Y)) >= U91(isPalListKind(X), Y) because [208], by (Select) 208] !6220!6220(X, Y) >= U91(isPalListKind(X), Y) because [209], by (Star) 209] !6220!6220*(X, Y) >= U91(isPalListKind(X), Y) because !6220!6220 > U91, [158] and [160], by (Copy) 210] isQid(a) > tt because [211], by definition 211] isQid*(a) >= tt because isQid > tt, by (Copy) 212] isQid(e) >= tt because [213], by (Star) 213] isQid*(e) >= tt because isQid > tt, by (Copy) 214] isQid(i) >= tt because [215], by (Star) 215] isQid*(i) >= tt because [198], by (Select) 216] isQid(o) >= tt because [217], by (Star) 217] isQid*(o) >= tt because isQid > tt, by (Copy) 218] isQid(_|_) > tt because [219], by definition 219] isQid*(_|_) >= tt because isQid > tt, by (Copy) 220] !6220!6220(X, Y) >= !6220!6220(X, Y) because [221] and [222], by (Fun) 221] X >= X by (Meta) 222] Y >= Y by (Meta) 223] nil >= nil by (Fun) 224] U11(X, Y) >= U11(X, Y) because U11 in Mul, [221] and [222], by (Fun) 225] tt >= tt by (Fun) 226] U12(X, Y) >= U12(X, Y) because U12 in Mul, [221] and [222], by (Fun) 227] isPalListKind(X) >= isPalListKind(X) because isPalListKind in Mul and [228], by (Fun) 228] X >= X by (Meta) 229] X >= X by (Meta) 230] isNeList(X) >= isNeList(X) because isNeList in Mul and [228], by (Fun) 231] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [221], [222] and [232], by (Fun) 232] Z >= Z by (Meta) 233] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [221], [222] and [232], by (Fun) 234] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [221], [222] and [232], by (Fun) 235] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [221], [222] and [232], by (Fun) 236] U25(X, Y) >= U25(X, Y) because U25 in Mul, [221] and [222], by (Fun) 237] isList(X) >= isList(X) because isList in Mul and [228], by (Fun) 238] X >= X by (Meta) 239] U31(X, Y) >= U31(X, Y) because U31 in Mul, [221] and [222], by (Fun) 240] U32(X, Y) >= U32(X, Y) because U32 in Mul, [221] and [222], by (Fun) 241] X >= X by (Meta) 242] isQid(X) >= isQid(X) because isQid in Mul and [228], by (Fun) 243] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [221], [222] and [232], by (Fun) 244] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [221], [222] and [232], by (Fun) 245] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [221], [222] and [232], by (Fun) 246] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [221], [222] and [232], by (Fun) 247] U45(X, Y) >= U45(X, Y) because U45 in Mul, [221] and [222], by (Fun) 248] X >= X by (Meta) 249] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [221], [222] and [232], by (Fun) 250] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [221], [222] and [232], by (Fun) 251] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [221], [222] and [232], by (Fun) 252] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [221], [222] and [232], by (Fun) 253] U55(X, Y) >= U55(X, Y) because U55 in Mul, [221] and [222], by (Fun) 254] X >= X by (Meta) 255] U61(X, Y) >= U61(X, Y) because U61 in Mul, [221] and [222], by (Fun) 256] U62(X, Y) >= U62(X, Y) because U62 in Mul, [221] and [222], by (Fun) 257] X >= X by (Meta) 258] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [221], [222] and [232], by (Fun) 259] U72(X, Y) >= U72(X, Y) because U72 in Mul, [221] and [222], by (Fun) 260] U73(X, Y) >= U73(X, Y) because U73 in Mul, [221] and [222], by (Fun) 261] isPal(X) >= isPal(X) because isPal in Mul and [228], by (Fun) 262] X >= X by (Meta) 263] U81(X, Y) >= U81(X, Y) because U81 in Mul, [221] and [222], by (Fun) 264] U82(X, Y) >= U82(X, Y) because U82 in Mul, [221] and [222], by (Fun) 265] X >= X by (Meta) 266] isNePal(X) >= isNePal(X) because isNePal in Mul and [228], by (Fun) 267] U91(X, Y) >= U91(X, Y) because U91 in Mul, [221] and [222], by (Fun) 268] U92(X) >= U92(X) because U92 in Mul and [269], by (Fun) 269] X >= X by (Meta) 270] a >= a by (Fun) 271] e >= e by (Fun) 272] i >= i by (Fun) 273] o >= o by (Fun) 274] _|_ >= _|_ by (Bot) 275] !6220!6220(X, Y) >= !6220!6220(X, Y) because [276] and [222], by (Fun) 276] X >= X by (Meta) 277] !6220!6220(X, Y) >= !6220!6220(X, Y) because [221] and [278], by (Fun) 278] Y >= Y by (Meta) 279] !6220!6220(X, Y) >= !6220!6220(X, Y) because [280] and [222], by (Fun) 280] X >= X by (Meta) 281] !6220!6220(X, Y) >= !6220!6220(X, Y) because [221] and [282], by (Fun) 282] Y >= Y by (Meta) 283] U11(X, Y) >= U11(X, Y) because U11 in Mul, [276] and [222], by (Fun) 284] U11(X, Y) >= U11(X, Y) because U11 in Mul, [221] and [278], by (Fun) 285] U11(X, Y) >= U11(X, Y) because U11 in Mul, [280] and [222], by (Fun) 286] U11(X, Y) >= U11(X, Y) because U11 in Mul, [221] and [282], by (Fun) 287] U12(X, Y) >= U12(X, Y) because U12 in Mul, [276] and [222], by (Fun) 288] U12(X, Y) >= U12(X, Y) because U12 in Mul, [221] and [278], by (Fun) 289] U12(X, Y) >= U12(X, Y) because U12 in Mul, [280] and [222], by (Fun) 290] U12(X, Y) >= U12(X, Y) because U12 in Mul, [221] and [282], by (Fun) 291] isPalListKind(X) >= isPalListKind(X) because isPalListKind in Mul and [292], by (Fun) 292] X >= X by (Meta) 293] isPalListKind(X) >= isPalListKind(X) because isPalListKind in Mul and [294], by (Fun) 294] X >= X by (Meta) 295] X >= X by (Meta) 296] X >= X by (Meta) 297] isNeList(X) >= isNeList(X) because isNeList in Mul and [292], by (Fun) 298] isNeList(X) >= isNeList(X) because isNeList in Mul and [294], by (Fun) 299] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [276], [222] and [232], by (Fun) 300] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [221], [278] and [232], by (Fun) 301] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [221], [222] and [302], by (Fun) 302] Z >= Z by (Meta) 303] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [280], [222] and [232], by (Fun) 304] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [221], [282] and [232], by (Fun) 305] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [221], [222] and [306], by (Fun) 306] Z >= Z by (Meta) 307] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [276], [222] and [232], by (Fun) 308] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [221], [278] and [232], by (Fun) 309] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [221], [222] and [302], by (Fun) 310] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [280], [222] and [232], by (Fun) 311] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [221], [282] and [232], by (Fun) 312] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [221], [222] and [306], by (Fun) 313] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [276], [222] and [232], by (Fun) 314] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [221], [278] and [232], by (Fun) 315] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [221], [222] and [302], by (Fun) 316] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [280], [222] and [232], by (Fun) 317] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [221], [282] and [232], by (Fun) 318] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [221], [222] and [306], by (Fun) 319] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [276], [222] and [232], by (Fun) 320] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [221], [278] and [232], by (Fun) 321] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [221], [222] and [302], by (Fun) 322] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [280], [222] and [232], by (Fun) 323] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [221], [282] and [232], by (Fun) 324] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [221], [222] and [306], by (Fun) 325] U25(X, Y) >= U25(X, Y) because U25 in Mul, [276] and [222], by (Fun) 326] U25(X, Y) >= U25(X, Y) because U25 in Mul, [221] and [278], by (Fun) 327] U25(X, Y) >= U25(X, Y) because U25 in Mul, [280] and [222], by (Fun) 328] U25(X, Y) >= U25(X, Y) because U25 in Mul, [221] and [282], by (Fun) 329] isList(X) >= isList(X) because isList in Mul and [292], by (Fun) 330] isList(X) >= isList(X) because isList in Mul and [294], by (Fun) 331] X >= X by (Meta) 332] X >= X by (Meta) 333] U31(X, Y) >= U31(X, Y) because U31 in Mul, [276] and [222], by (Fun) 334] U31(X, Y) >= U31(X, Y) because U31 in Mul, [221] and [278], by (Fun) 335] U31(X, Y) >= U31(X, Y) because U31 in Mul, [280] and [222], by (Fun) 336] U31(X, Y) >= U31(X, Y) because U31 in Mul, [221] and [282], by (Fun) 337] U32(X, Y) >= U32(X, Y) because U32 in Mul, [276] and [222], by (Fun) 338] U32(X, Y) >= U32(X, Y) because U32 in Mul, [221] and [278], by (Fun) 339] U32(X, Y) >= U32(X, Y) because U32 in Mul, [280] and [222], by (Fun) 340] U32(X, Y) >= U32(X, Y) because U32 in Mul, [221] and [282], by (Fun) 341] X >= X by (Meta) 342] X >= X by (Meta) 343] isQid(X) >= isQid(X) because isQid in Mul and [292], by (Fun) 344] isQid(X) >= isQid(X) because isQid in Mul and [294], by (Fun) 345] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [276], [222] and [232], by (Fun) 346] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [221], [278] and [232], by (Fun) 347] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [221], [222] and [302], by (Fun) 348] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [280], [222] and [232], by (Fun) 349] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [221], [282] and [232], by (Fun) 350] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [221], [222] and [306], by (Fun) 351] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [276], [222] and [232], by (Fun) 352] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [221], [278] and [232], by (Fun) 353] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [221], [222] and [302], by (Fun) 354] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [280], [222] and [232], by (Fun) 355] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [221], [282] and [232], by (Fun) 356] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [221], [222] and [306], by (Fun) 357] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [276], [222] and [232], by (Fun) 358] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [221], [278] and [232], by (Fun) 359] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [221], [222] and [302], by (Fun) 360] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [280], [222] and [232], by (Fun) 361] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [221], [282] and [232], by (Fun) 362] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [221], [222] and [306], by (Fun) 363] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [276], [222] and [232], by (Fun) 364] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [221], [278] and [232], by (Fun) 365] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [221], [222] and [302], by (Fun) 366] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [280], [222] and [232], by (Fun) 367] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [221], [282] and [232], by (Fun) 368] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [221], [222] and [306], by (Fun) 369] U45(X, Y) >= U45(X, Y) because U45 in Mul, [276] and [222], by (Fun) 370] U45(X, Y) >= U45(X, Y) because U45 in Mul, [221] and [278], by (Fun) 371] U45(X, Y) >= U45(X, Y) because U45 in Mul, [280] and [222], by (Fun) 372] U45(X, Y) >= U45(X, Y) because U45 in Mul, [221] and [282], by (Fun) 373] X >= X by (Meta) 374] X >= X by (Meta) 375] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [276], [222] and [232], by (Fun) 376] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [221], [278] and [232], by (Fun) 377] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [221], [222] and [302], by (Fun) 378] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [280], [222] and [232], by (Fun) 379] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [221], [282] and [232], by (Fun) 380] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [221], [222] and [306], by (Fun) 381] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [276], [222] and [232], by (Fun) 382] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [221], [278] and [232], by (Fun) 383] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [221], [222] and [302], by (Fun) 384] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [280], [222] and [232], by (Fun) 385] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [221], [282] and [232], by (Fun) 386] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [221], [222] and [306], by (Fun) 387] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [276], [222] and [232], by (Fun) 388] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [221], [278] and [232], by (Fun) 389] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [221], [222] and [302], by (Fun) 390] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [280], [222] and [232], by (Fun) 391] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [221], [282] and [232], by (Fun) 392] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [221], [222] and [306], by (Fun) 393] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [276], [222] and [232], by (Fun) 394] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [221], [278] and [232], by (Fun) 395] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [221], [222] and [302], by (Fun) 396] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [280], [222] and [232], by (Fun) 397] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [221], [282] and [232], by (Fun) 398] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [221], [222] and [306], by (Fun) 399] U55(X, Y) >= U55(X, Y) because U55 in Mul, [276] and [222], by (Fun) 400] U55(X, Y) >= U55(X, Y) because U55 in Mul, [221] and [278], by (Fun) 401] U55(X, Y) >= U55(X, Y) because U55 in Mul, [280] and [222], by (Fun) 402] U55(X, Y) >= U55(X, Y) because U55 in Mul, [221] and [282], by (Fun) 403] X >= X by (Meta) 404] X >= X by (Meta) 405] U61(X, Y) >= U61(X, Y) because U61 in Mul, [276] and [222], by (Fun) 406] U61(X, Y) >= U61(X, Y) because U61 in Mul, [221] and [278], by (Fun) 407] U61(X, Y) >= U61(X, Y) because U61 in Mul, [280] and [222], by (Fun) 408] U61(X, Y) >= U61(X, Y) because U61 in Mul, [221] and [282], by (Fun) 409] U62(X, Y) >= U62(X, Y) because U62 in Mul, [276] and [222], by (Fun) 410] U62(X, Y) >= U62(X, Y) because U62 in Mul, [221] and [278], by (Fun) 411] U62(X, Y) >= U62(X, Y) because U62 in Mul, [280] and [222], by (Fun) 412] U62(X, Y) >= U62(X, Y) because U62 in Mul, [221] and [282], by (Fun) 413] X >= X by (Meta) 414] X >= X by (Meta) 415] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [276], [222] and [232], by (Fun) 416] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [221], [278] and [232], by (Fun) 417] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [221], [222] and [302], by (Fun) 418] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [280], [222] and [232], by (Fun) 419] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [221], [282] and [232], by (Fun) 420] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [221], [222] and [306], by (Fun) 421] U72(X, Y) >= U72(X, Y) because U72 in Mul, [276] and [222], by (Fun) 422] U72(X, Y) >= U72(X, Y) because U72 in Mul, [221] and [278], by (Fun) 423] U72(X, Y) >= U72(X, Y) because U72 in Mul, [280] and [222], by (Fun) 424] U72(X, Y) >= U72(X, Y) because U72 in Mul, [221] and [282], by (Fun) 425] U73(X, Y) >= U73(X, Y) because U73 in Mul, [276] and [222], by (Fun) 426] U73(X, Y) >= U73(X, Y) because U73 in Mul, [221] and [278], by (Fun) 427] U73(X, Y) >= U73(X, Y) because U73 in Mul, [280] and [222], by (Fun) 428] U73(X, Y) >= U73(X, Y) because U73 in Mul, [221] and [282], by (Fun) 429] isPal(X) >= isPal(X) because isPal in Mul and [292], by (Fun) 430] isPal(X) >= isPal(X) because isPal in Mul and [294], by (Fun) 431] X >= X by (Meta) 432] X >= X by (Meta) 433] U81(X, Y) >= U81(X, Y) because U81 in Mul, [276] and [222], by (Fun) 434] U81(X, Y) >= U81(X, Y) because U81 in Mul, [221] and [278], by (Fun) 435] U81(X, Y) >= U81(X, Y) because U81 in Mul, [280] and [222], by (Fun) 436] U81(X, Y) >= U81(X, Y) because U81 in Mul, [221] and [282], by (Fun) 437] U82(X, Y) >= U82(X, Y) because U82 in Mul, [276] and [222], by (Fun) 438] U82(X, Y) >= U82(X, Y) because U82 in Mul, [221] and [278], by (Fun) 439] U82(X, Y) >= U82(X, Y) because U82 in Mul, [280] and [222], by (Fun) 440] U82(X, Y) >= U82(X, Y) because U82 in Mul, [221] and [282], by (Fun) 441] X >= X by (Meta) 442] X >= X by (Meta) 443] isNePal(X) >= isNePal(X) because isNePal in Mul and [292], by (Fun) 444] isNePal(X) >= isNePal(X) because isNePal in Mul and [294], by (Fun) 445] U91(X, Y) >= U91(X, Y) because U91 in Mul, [276] and [222], by (Fun) 446] U91(X, Y) >= U91(X, Y) because U91 in Mul, [221] and [278], by (Fun) 447] U91(X, Y) >= U91(X, Y) because U91 in Mul, [280] and [222], by (Fun) 448] U91(X, Y) >= U91(X, Y) because U91 in Mul, [221] and [282], by (Fun) 449] U92(X) >= U92(X) because U92 in Mul and [292], by (Fun) 450] U92(X) >= U92(X) because U92 in Mul and [294], by (Fun) We can thus remove the following rules: active(U11(tt, X)) => mark(U12(isPalListKind(X), X)) active(U23(tt, X, Y)) => mark(U24(isPalListKind(Y), X, Y)) active(U31(tt, X)) => mark(U32(isPalListKind(X), X)) active(U44(tt, X, Y)) => mark(U45(isList(X), Y)) active(U52(tt, X, Y)) => mark(U53(isPalListKind(Y), X, Y)) active(U53(tt, X, Y)) => mark(U54(isPalListKind(Y), X, Y)) active(U61(tt, X)) => mark(U62(isPalListKind(X), X)) active(U72(tt, X)) => mark(U73(isPal(X), X)) active(U91(tt, X)) => mark(U92(isPalListKind(X))) active(isList(X)) => mark(U11(isPalListKind(X), X)) active(isNeList(X)) => mark(U31(isPalListKind(X), X)) active(isNeList(!6220!6220(X, Y))) => mark(U41(isPalListKind(X), X, Y)) active(isNeList(!6220!6220(X, Y))) => mark(U51(isPalListKind(X), X, Y)) active(isNePal(X)) => mark(U61(isPalListKind(X), X)) active(isNePal(!6220!6220(X, !6220!6220(Y, X)))) => mark(U71(isQid(X), X, Y)) active(isPal(X)) => mark(U81(isPalListKind(X), X)) active(isPal(nil)) => mark(tt) active(isPalListKind(u)) => mark(tt) active(isQid(a)) => mark(tt) active(isQid(u)) => mark(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]): active(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(!6220!6220(X, nil)) >? mark(X) active(!6220!6220(nil, X)) >? mark(X) active(U12(tt, X)) >? mark(U13(isNeList(X))) active(U13(tt)) >? mark(tt) active(U21(tt, X, Y)) >? mark(U22(isPalListKind(X), X, Y)) active(U22(tt, X, Y)) >? mark(U23(isPalListKind(Y), X, Y)) active(U24(tt, X, Y)) >? mark(U25(isList(X), Y)) active(U25(tt, X)) >? mark(U26(isList(X))) active(U26(tt)) >? mark(tt) active(U32(tt, X)) >? mark(U33(isQid(X))) active(U33(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U42(tt, X, Y)) >? mark(U43(isPalListKind(Y), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U45(tt, X)) >? mark(U46(isNeList(X))) active(U46(tt)) >? mark(tt) active(U51(tt, X, Y)) >? mark(U52(isPalListKind(X), X, Y)) active(U54(tt, X, Y)) >? mark(U55(isNeList(X), Y)) active(U55(tt, X)) >? mark(U56(isList(X))) active(U56(tt)) >? mark(tt) active(U62(tt, X)) >? mark(U63(isQid(X))) active(U63(tt)) >? mark(tt) active(U71(tt, X, Y)) >? mark(U72(isPalListKind(X), Y)) active(U73(tt, X)) >? mark(U74(isPalListKind(X))) active(U74(tt)) >? mark(tt) active(U81(tt, X)) >? mark(U82(isPalListKind(X), X)) active(U82(tt, X)) >? mark(U83(isNePal(X))) active(U83(tt)) >? mark(tt) active(U92(tt)) >? mark(tt) active(isList(nil)) >? mark(tt) active(isList(!6220!6220(X, Y))) >? mark(U21(isPalListKind(X), X, Y)) active(isPalListKind(a)) >? mark(tt) active(isPalListKind(e)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) active(isPalListKind(o)) >? mark(tt) active(isPalListKind(!6220!6220(X, Y))) >? mark(U91(isPalListKind(X), Y)) active(isQid(e)) >? mark(tt) active(isQid(i)) >? mark(tt) active(isQid(o)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(X)) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.2 + y1 + 3y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.3 + y0 + 2y1 U13 = \y0.2y0 U21 = \y0y1y2.1 + 2y0 + 2y1 + 2y2 U22 = \y0y1y2.y0 + y1 + 2y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + 3y1 + 3y2 U25 = \y0y1.y0 + 3y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + 2y1 U33 = \y0.2y0 U41 = \y0y1y2.y0 + 2y1 + 3y2 U42 = \y0y1y2.y0 + y1 + 3y2 U43 = \y0y1y2.y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.3 + y0 + 2y1 U46 = \y0.1 + 2y0 U51 = \y0y1y2.y0 + y2 + 2y1 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.1 + y0 + y1 + 3y2 U55 = \y0y1.y0 + 3y1 U56 = \y0.y0 U61 = \y0y1.1 + y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.1 + y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + 2y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 active = \y0.y0 e = 2 i = 0 isList = \y0.3y0 isNeList = \y0.1 + y0 isNePal = \y0.y0 isPal = \y0.2y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 1 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = 8 + x2 + 3x1 + 9x0 > 4 + x2 + 3x0 + 3x1 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(!6220!6220(_x0, nil))]] = 2 + 3x0 > x0 = [[mark(_x0)]] [[active(!6220!6220(nil, _x0))]] = 2 + x0 > x0 = [[mark(_x0)]] [[active(U12(tt, _x0))]] = 3 + 2x0 > 2 + 2x0 = [[mark(U13(isNeList(_x0)))]] [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U21(tt, _x0, _x1))]] = 1 + 2x0 + 2x1 > 2x0 + 2x1 = [[mark(U22(isPalListKind(_x0), _x0, _x1))]] [[active(U22(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U23(isPalListKind(_x1), _x0, _x1))]] [[active(U24(tt, _x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[mark(U25(isList(_x0), _x1))]] [[active(U25(tt, _x0))]] = 3x0 >= 3x0 = [[mark(U26(isList(_x0)))]] [[active(U26(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U32(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U33(isQid(_x0)))]] [[active(U33(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt, _x0, _x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[mark(U42(isPalListKind(_x0), _x0, _x1))]] [[active(U42(tt, _x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[mark(U43(isPalListKind(_x1), _x0, _x1))]] [[active(U43(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(U45(tt, _x0))]] = 3 + 2x0 >= 3 + 2x0 = [[mark(U46(isNeList(_x0)))]] [[active(U46(tt))]] = 1 > 0 = [[mark(tt)]] [[active(U51(tt, _x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U52(isPalListKind(_x0), _x0, _x1))]] [[active(U54(tt, _x0, _x1))]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[mark(U55(isNeList(_x0), _x1))]] [[active(U55(tt, _x0))]] = 3x0 >= 3x0 = [[mark(U56(isList(_x0)))]] [[active(U56(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U62(tt, _x0))]] = x0 >= x0 = [[mark(U63(isQid(_x0)))]] [[active(U63(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U71(tt, _x0, _x1))]] = 1 + x0 + x1 > x0 + x1 = [[mark(U72(isPalListKind(_x0), _x1))]] [[active(U73(tt, _x0))]] = x0 >= x0 = [[mark(U74(isPalListKind(_x0)))]] [[active(U74(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U81(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U82(isPalListKind(_x0), _x0))]] [[active(U82(tt, _x0))]] = x0 >= x0 = [[mark(U83(isNePal(_x0)))]] [[active(U83(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U92(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(isList(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isList(!6220!6220(_x0, _x1)))]] = 6 + 3x1 + 9x0 > 1 + 2x1 + 4x0 = [[mark(U21(isPalListKind(_x0), _x0, _x1))]] [[active(isPalListKind(a))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(e))]] = 2 > 0 = [[mark(tt)]] [[active(isPalListKind(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(o))]] = 1 > 0 = [[mark(tt)]] [[active(isPalListKind(!6220!6220(_x0, _x1)))]] = 2 + x1 + 3x0 > x0 + x1 = [[mark(U91(isPalListKind(_x0), _x1))]] [[active(isQid(e))]] = 2 > 0 = [[mark(tt)]] [[active(isQid(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isQid(o))]] = 1 > 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = 2 + x1 + 3x0 >= 2 + x1 + 3x0 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = 2x0 >= 2x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = 1 + x0 >= 1 + x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = 1 + 2x0 + 2x1 + 2x2 >= 1 + 2x0 + 2x1 + 2x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = 3x0 >= 3x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = x0 >= x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = 2x0 >= 2x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = x0 >= x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = x0 >= x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = 2x0 >= 2x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = x0 >= x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = x0 >= x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = x0 >= x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 0 >= 0 = [[active(a)]] [[mark(e)]] = 2 >= 2 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 1 >= 1 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = 2 + x1 + 3x0 >= 2 + x1 + 3x0 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = 2 + x1 + 3x0 >= 2 + x1 + 3x0 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = 2 + x1 + 3x0 >= 2 + x1 + 3x0 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = 2 + x1 + 3x0 >= 2 + x1 + 3x0 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 2x0 >= 2x0 = [[U13(_x0)]] [[U13(active(_x0))]] = 2x0 >= 2x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = 1 + x0 >= 1 + x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = 1 + 2x0 + 2x1 + 2x2 >= 1 + 2x0 + 2x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = 1 + 2x0 + 2x1 + 2x2 >= 1 + 2x0 + 2x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = 1 + 2x0 + 2x1 + 2x2 >= 1 + 2x0 + 2x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = 1 + 2x0 + 2x1 + 2x2 >= 1 + 2x0 + 2x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = 1 + 2x0 + 2x1 + 2x2 >= 1 + 2x0 + 2x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = 1 + 2x0 + 2x1 + 2x2 >= 1 + 2x0 + 2x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 3x0 >= 3x0 = [[isList(_x0)]] [[isList(active(_x0))]] = 3x0 >= 3x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 2x0 >= 2x0 = [[U33(_x0)]] [[U33(active(_x0))]] = 2x0 >= 2x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = 3 + x0 + 2x1 >= 3 + x0 + 2x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[U46(_x0)]] [[U46(active(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: active(!6220!6220(!6220!6220(X, Y), Z)) => mark(!6220!6220(X, !6220!6220(Y, Z))) active(!6220!6220(X, nil)) => mark(X) active(!6220!6220(nil, X)) => mark(X) active(U12(tt, X)) => mark(U13(isNeList(X))) active(U21(tt, X, Y)) => mark(U22(isPalListKind(X), X, Y)) active(U46(tt)) => mark(tt) active(U71(tt, X, Y)) => mark(U72(isPalListKind(X), Y)) active(isList(!6220!6220(X, Y))) => mark(U21(isPalListKind(X), X, Y)) active(isPalListKind(e)) => mark(tt) active(isPalListKind(o)) => mark(tt) active(isPalListKind(!6220!6220(X, Y))) => mark(U91(isPalListKind(X), Y)) active(isQid(e)) => mark(tt) active(isQid(o)) => mark(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]): active(U13(tt)) >? mark(tt) active(U22(tt, X, Y)) >? mark(U23(isPalListKind(Y), X, Y)) active(U24(tt, X, Y)) >? mark(U25(isList(X), Y)) active(U25(tt, X)) >? mark(U26(isList(X))) active(U26(tt)) >? mark(tt) active(U32(tt, X)) >? mark(U33(isQid(X))) active(U33(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U42(tt, X, Y)) >? mark(U43(isPalListKind(Y), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U45(tt, X)) >? mark(U46(isNeList(X))) active(U51(tt, X, Y)) >? mark(U52(isPalListKind(X), X, Y)) active(U54(tt, X, Y)) >? mark(U55(isNeList(X), Y)) active(U55(tt, X)) >? mark(U56(isList(X))) active(U56(tt)) >? mark(tt) active(U62(tt, X)) >? mark(U63(isQid(X))) active(U63(tt)) >? mark(tt) active(U73(tt, X)) >? mark(U74(isPalListKind(X))) active(U74(tt)) >? mark(tt) active(U81(tt, X)) >? mark(U82(isPalListKind(X), X)) active(U82(tt, X)) >? mark(U83(isNePal(X))) active(U83(tt)) >? mark(tt) active(U92(tt)) >? mark(tt) active(isList(nil)) >? mark(tt) active(isPalListKind(a)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) active(isQid(i)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + y2 U22 = \y0y1y2.y0 + y1 + 2y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + 2y2 U25 = \y0y1.y0 + 2y1 U26 = \y0.2y0 U31 = \y0y1.1 + y0 + y1 U32 = \y0y1.y0 + 2y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + 2y1 + 3y2 U42 = \y0y1y2.y0 + y1 + 3y2 U43 = \y0y1y2.y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y2 + 3y1 U52 = \y0y1y2.y1 + y2 + 2y0 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 + 2y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.1 + y0 + 3y1 U82 = \y0y1.y0 + 2y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 1 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.2y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.2y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U22(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U23(isPalListKind(_x1), _x0, _x1))]] [[active(U24(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U25(isList(_x0), _x1))]] [[active(U25(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U26(isList(_x0)))]] [[active(U26(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U32(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U33(isQid(_x0)))]] [[active(U33(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt, _x0, _x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[mark(U42(isPalListKind(_x0), _x0, _x1))]] [[active(U42(tt, _x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[mark(U43(isPalListKind(_x1), _x0, _x1))]] [[active(U43(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(U45(tt, _x0))]] = x0 >= x0 = [[mark(U46(isNeList(_x0)))]] [[active(U51(tt, _x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(U52(isPalListKind(_x0), _x0, _x1))]] [[active(U54(tt, _x0, _x1))]] = x0 + x1 >= x0 + x1 = [[mark(U55(isNeList(_x0), _x1))]] [[active(U55(tt, _x0))]] = x0 >= x0 = [[mark(U56(isList(_x0)))]] [[active(U56(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U62(tt, _x0))]] = 1 + 2x0 > 2x0 = [[mark(U63(isQid(_x0)))]] [[active(U63(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U73(tt, _x0))]] = x0 >= x0 = [[mark(U74(isPalListKind(_x0)))]] [[active(U74(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U81(tt, _x0))]] = 1 + 3x0 > 3x0 = [[mark(U82(isPalListKind(_x0), _x0))]] [[active(U82(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U83(isNePal(_x0)))]] [[active(U83(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U92(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(isList(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(a))]] = 1 > 0 = [[mark(tt)]] [[active(isPalListKind(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isQid(i))]] = 0 >= 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = x0 >= x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = x0 >= x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = x0 >= x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = 2x0 >= 2x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = x0 >= x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = x0 >= x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = x0 >= x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = x0 >= x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = x0 >= x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = x0 >= x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = 2x0 >= 2x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = x0 >= x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 1 >= 1 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 2x0 >= 2x0 = [[U26(_x0)]] [[U26(active(_x0))]] = 2x0 >= 2x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 2x0 >= 2x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = 2x0 >= 2x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: active(U62(tt, X)) => mark(U63(isQid(X))) active(U81(tt, X)) => mark(U82(isPalListKind(X), X)) active(isPalListKind(a)) => mark(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]): active(U13(tt)) >? mark(tt) active(U22(tt, X, Y)) >? mark(U23(isPalListKind(Y), X, Y)) active(U24(tt, X, Y)) >? mark(U25(isList(X), Y)) active(U25(tt, X)) >? mark(U26(isList(X))) active(U26(tt)) >? mark(tt) active(U32(tt, X)) >? mark(U33(isQid(X))) active(U33(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U42(tt, X, Y)) >? mark(U43(isPalListKind(Y), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U45(tt, X)) >? mark(U46(isNeList(X))) active(U51(tt, X, Y)) >? mark(U52(isPalListKind(X), X, Y)) active(U54(tt, X, Y)) >? mark(U55(isNeList(X), Y)) active(U55(tt, X)) >? mark(U56(isList(X))) active(U56(tt)) >? mark(tt) active(U63(tt)) >? mark(tt) active(U73(tt, X)) >? mark(U74(isPalListKind(X))) active(U74(tt)) >? mark(tt) active(U82(tt, X)) >? mark(U83(isNePal(X))) active(U83(tt)) >? mark(tt) active(U92(tt)) >? mark(tt) active(isList(nil)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) active(isQid(i)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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.y1 + 2y0 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.2 + y0 + y1 + 2y2 U23 = \y0y1y2.1 + y0 + y1 + y2 U24 = \y0y1y2.1 + y0 + 2y1 + 2y2 U25 = \y0y1.2y0 + 2y1 U26 = \y0.2y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.1 + y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + 2y1 + 3y2 U42 = \y0y1y2.y0 + y1 + 3y2 U43 = \y0y1y2.y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.1 + y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y2 + 3y1 U52 = \y0y1y2.y1 + y2 + 2y0 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.2 + y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.1 + y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.2 + y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + 2y1 U83 = \y0.2y0 U91 = \y0y1.1 + y0 + 2y1 U92 = \y0.y0 a = 0 active = \y0.y0 e = 0 i = 0 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: [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U22(tt, _x0, _x1))]] = 2 + x0 + 2x1 > 1 + x0 + 2x1 = [[mark(U23(isPalListKind(_x1), _x0, _x1))]] [[active(U24(tt, _x0, _x1))]] = 1 + 2x0 + 2x1 > 2x0 + 2x1 = [[mark(U25(isList(_x0), _x1))]] [[active(U25(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U26(isList(_x0)))]] [[active(U26(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U32(tt, _x0))]] = 1 + x0 > x0 = [[mark(U33(isQid(_x0)))]] [[active(U33(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt, _x0, _x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[mark(U42(isPalListKind(_x0), _x0, _x1))]] [[active(U42(tt, _x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[mark(U43(isPalListKind(_x1), _x0, _x1))]] [[active(U43(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(U45(tt, _x0))]] = 1 + x0 > x0 = [[mark(U46(isNeList(_x0)))]] [[active(U51(tt, _x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(U52(isPalListKind(_x0), _x0, _x1))]] [[active(U54(tt, _x0, _x1))]] = 2 + x0 + x1 > x0 + x1 = [[mark(U55(isNeList(_x0), _x1))]] [[active(U55(tt, _x0))]] = x0 >= x0 = [[mark(U56(isList(_x0)))]] [[active(U56(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U63(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U73(tt, _x0))]] = 2 + x0 > x0 = [[mark(U74(isPalListKind(_x0)))]] [[active(U74(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U82(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U83(isNePal(_x0)))]] [[active(U83(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U92(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(isList(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isQid(i))]] = 0 >= 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = x0 >= x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = x0 >= x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = x0 >= x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = x0 >= x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = x0 >= x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = x0 >= x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = x0 >= x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = x0 >= x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = 2x0 >= 2x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = x0 >= x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 0 >= 0 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 2x0 >= 2x0 = [[U26(_x0)]] [[U26(active(_x0))]] = 2x0 >= 2x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + 2x1 + 3x2 >= x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 2x0 >= 2x0 = [[U83(_x0)]] [[U83(active(_x0))]] = 2x0 >= 2x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: active(U22(tt, X, Y)) => mark(U23(isPalListKind(Y), X, Y)) active(U24(tt, X, Y)) => mark(U25(isList(X), Y)) active(U32(tt, X)) => mark(U33(isQid(X))) active(U45(tt, X)) => mark(U46(isNeList(X))) active(U54(tt, X, Y)) => mark(U55(isNeList(X), Y)) active(U73(tt, X)) => mark(U74(isPalListKind(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]): active(U13(tt)) >? mark(tt) active(U25(tt, X)) >? mark(U26(isList(X))) active(U26(tt)) >? mark(tt) active(U33(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U42(tt, X, Y)) >? mark(U43(isPalListKind(Y), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U51(tt, X, Y)) >? mark(U52(isPalListKind(X), X, Y)) active(U55(tt, X)) >? mark(U56(isList(X))) active(U56(tt)) >? mark(tt) active(U63(tt)) >? mark(tt) active(U74(tt)) >? mark(tt) active(U82(tt, X)) >? mark(U83(isNePal(X))) active(U83(tt)) >? mark(tt) active(U92(tt)) >? mark(tt) active(isList(nil)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) active(isQid(i)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + 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.y0 U41 = \y0y1y2.2y0 + 2y1 + 3y2 U42 = \y0y1y2.y0 + y1 + 3y2 U43 = \y0y1y2.y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.1 + y0 + y2 + 2y1 U52 = \y0y1y2.1 + y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.1 + y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y2 + 2y1 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.1 + y0 U81 = \y0y1.1 + y0 + y1 U82 = \y0y1.1 + y0 + 2y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 1 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.2y0 isPal = \y0.2y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U25(tt, _x0))]] = x0 >= x0 = [[mark(U26(isList(_x0)))]] [[active(U26(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U33(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt, _x0, _x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[mark(U42(isPalListKind(_x0), _x0, _x1))]] [[active(U42(tt, _x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[mark(U43(isPalListKind(_x1), _x0, _x1))]] [[active(U43(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(U51(tt, _x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(U52(isPalListKind(_x0), _x0, _x1))]] [[active(U55(tt, _x0))]] = x0 >= x0 = [[mark(U56(isList(_x0)))]] [[active(U56(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U63(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U74(tt))]] = 1 > 0 = [[mark(tt)]] [[active(U82(tt, _x0))]] = 1 + 2x0 > 2x0 = [[mark(U83(isNePal(_x0)))]] [[active(U83(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U92(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(isList(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isQid(i))]] = 0 >= 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = x0 >= x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = x0 >= x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = x0 >= x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = x0 >= x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = 2x0 + 2x1 + 3x2 >= 2x0 + 2x1 + 3x2 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = x0 >= x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = x0 >= x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = x0 >= x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = 2x0 >= 2x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = x0 >= x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = 2x0 >= 2x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = x0 >= x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 1 >= 1 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = 2x0 + 2x1 + 3x2 >= 2x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = 2x0 + 2x1 + 3x2 >= 2x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = 2x0 + 2x1 + 3x2 >= 2x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = 2x0 + 2x1 + 3x2 >= 2x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = 2x0 + 2x1 + 3x2 >= 2x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = 2x0 + 2x1 + 3x2 >= 2x0 + 2x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U74(_x0)]] [[U74(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: active(U74(tt)) => mark(tt) active(U82(tt, X)) => mark(U83(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]): active(U13(tt)) >? mark(tt) active(U25(tt, X)) >? mark(U26(isList(X))) active(U26(tt)) >? mark(tt) active(U33(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U42(tt, X, Y)) >? mark(U43(isPalListKind(Y), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U51(tt, X, Y)) >? mark(U52(isPalListKind(X), X, Y)) active(U55(tt, X)) >? mark(U56(isList(X))) active(U56(tt)) >? mark(tt) active(U63(tt)) >? mark(tt) active(U83(tt)) >? mark(tt) active(U92(tt)) >? mark(tt) active(isList(nil)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) active(isQid(i)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + y1 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + 2y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.1 + y0 + y1 + y2 U24 = \y0y1y2.1 + y0 + y1 + y2 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.3 + y0 + y1 U32 = \y0y1.1 + y0 + y1 U33 = \y0.1 + y0 U41 = \y0y1y2.y0 + 3y1 + 3y2 U42 = \y0y1y2.y1 + 2y0 + 3y2 U43 = \y0y1y2.y0 + y1 + 2y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y0 + y1 U46 = \y0.1 + y0 U51 = \y0y1y2.1 + y0 + y2 + 3y1 U52 = \y0y1y2.y1 + y2 + 2y0 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.1 + y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.1 + y0 U71 = \y0y1y2.y1 + y2 + 2y0 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.1 + y0 U81 = \y0y1.1 + y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.1 + y0 + y1 U92 = \y0.y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.3 + 2y0 isPalListKind = \y0.y0 isQid = \y0.1 + y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U25(tt, _x0))]] = x0 >= x0 = [[mark(U26(isList(_x0)))]] [[active(U26(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U33(tt))]] = 1 > 0 = [[mark(tt)]] [[active(U41(tt, _x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[mark(U42(isPalListKind(_x0), _x0, _x1))]] [[active(U42(tt, _x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[mark(U43(isPalListKind(_x1), _x0, _x1))]] [[active(U43(tt, _x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(U51(tt, _x0, _x1))]] = 1 + x1 + 3x0 > x1 + 3x0 = [[mark(U52(isPalListKind(_x0), _x0, _x1))]] [[active(U55(tt, _x0))]] = x0 >= x0 = [[mark(U56(isList(_x0)))]] [[active(U56(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U63(tt))]] = 1 > 0 = [[mark(tt)]] [[active(U83(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U92(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(isList(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isQid(i))]] = 1 > 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = x0 >= x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = x0 >= x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = x0 >= x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = 1 + x0 >= 1 + x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = x1 + 2x0 + 3x2 >= x1 + 2x0 + 3x2 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = x0 >= x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = 3 + 2x0 >= 3 + 2x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = x0 >= x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = x0 >= x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 0 >= 0 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U33(_x0)]] [[U33(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + 3x1 + 3x2 >= x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x1 + 2x0 + 3x2 >= x1 + 2x0 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x1 + 2x0 + 3x2 >= x1 + 2x0 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x1 + 2x0 + 3x2 >= x1 + 2x0 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x1 + 2x0 + 3x2 >= x1 + 2x0 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x1 + 2x0 + 3x2 >= x1 + 2x0 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x1 + 2x0 + 3x2 >= x1 + 2x0 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U46(_x0)]] [[U46(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U63(_x0)]] [[U63(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 3 + 2x0 >= 3 + 2x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 3 + 2x0 >= 3 + 2x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U74(_x0)]] [[U74(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: active(U33(tt)) => mark(tt) active(U51(tt, X, Y)) => mark(U52(isPalListKind(X), X, Y)) active(U63(tt)) => mark(tt) active(isQid(i)) => mark(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]): active(U13(tt)) >? mark(tt) active(U25(tt, X)) >? mark(U26(isList(X))) active(U26(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U42(tt, X, Y)) >? mark(U43(isPalListKind(Y), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U55(tt, X)) >? mark(U56(isList(X))) active(U56(tt)) >? mark(tt) active(U83(tt)) >? mark(tt) active(U92(tt)) >? mark(tt) active(isList(nil)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.2 + y0 + y1 U26 = \y0.1 + y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.1 + y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.1 + y0 + 3y1 + 3y2 U42 = \y0y1y2.1 + y0 + 2y1 + 3y2 U43 = \y0y1y2.y0 + 2y1 + 2y2 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 + y1 U56 = \y0.1 + 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.2y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.1 + y0 isNePal = \y0.3 + y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.2y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U25(tt, _x0))]] = 2 + x0 > 1 + x0 = [[mark(U26(isList(_x0)))]] [[active(U26(tt))]] = 1 > 0 = [[mark(tt)]] [[active(U41(tt, _x0, _x1))]] = 1 + 3x0 + 3x1 >= 1 + 3x0 + 3x1 = [[mark(U42(isPalListKind(_x0), _x0, _x1))]] [[active(U42(tt, _x0, _x1))]] = 1 + 2x0 + 3x1 > 2x0 + 3x1 = [[mark(U43(isPalListKind(_x1), _x0, _x1))]] [[active(U43(tt, _x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(U55(tt, _x0))]] = 2 + x0 > 1 + x0 = [[mark(U56(isList(_x0)))]] [[active(U56(tt))]] = 1 > 0 = [[mark(tt)]] [[active(U83(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U92(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(isList(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 0 >= 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = x0 >= x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = 1 + x0 >= 1 + x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = x0 >= x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = 2x0 >= 2x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = 1 + x0 + 3x1 + 3x2 >= 1 + x0 + 3x1 + 3x2 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = 1 + x0 + 2x1 + 3x2 >= 1 + x0 + 2x1 + 3x2 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = x0 >= x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = x0 >= x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = x0 >= x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = 2x0 >= 2x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = x0 >= x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = 3 + x0 >= 3 + x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = x0 >= x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 0 >= 0 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = 1 + x0 >= 1 + x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U26(_x0)]] [[U26(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 2x0 >= 2x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = 2x0 >= 2x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = 1 + x0 + 3x1 + 3x2 >= 1 + x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = 1 + x0 + 3x1 + 3x2 >= 1 + x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = 1 + x0 + 3x1 + 3x2 >= 1 + x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = 1 + x0 + 3x1 + 3x2 >= 1 + x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = 1 + x0 + 3x1 + 3x2 >= 1 + x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = 1 + x0 + 3x1 + 3x2 >= 1 + x0 + 3x1 + 3x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = 1 + x0 + 2x1 + 3x2 >= 1 + x0 + 2x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = 1 + x0 + 2x1 + 3x2 >= 1 + x0 + 2x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = 1 + x0 + 2x1 + 3x2 >= 1 + x0 + 2x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = 1 + x0 + 2x1 + 3x2 >= 1 + x0 + 2x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = 1 + x0 + 2x1 + 3x2 >= 1 + x0 + 2x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = 1 + x0 + 2x1 + 3x2 >= 1 + x0 + 2x1 + 3x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U56(_x0)]] [[U56(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 2x0 >= 2x0 = [[U74(_x0)]] [[U74(active(_x0))]] = 2x0 >= 2x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 3 + x0 >= 3 + x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 3 + x0 >= 3 + x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: active(U25(tt, X)) => mark(U26(isList(X))) active(U26(tt)) => mark(tt) active(U42(tt, X, Y)) => mark(U43(isPalListKind(Y), X, Y)) active(U55(tt, X)) => mark(U56(isList(X))) active(U56(tt)) => mark(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]): active(U13(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U83(tt)) >? mark(tt) active(U92(tt)) >? mark(tt) active(isList(nil)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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.y1 + 2y0 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + 2y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.1 + y1 + y2 + 2y0 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.1 + y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y2 + 3y1 U42 = \y0y1y2.y0 + y2 + 2y1 U43 = \y0y1y2.1 + y0 + y1 + 3y2 U44 = \y0y1y2.1 + y1 + y2 + 2y0 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.1 + 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 + 2y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.1 + 2y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.2y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt, _x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(U42(isPalListKind(_x0), _x0, _x1))]] [[active(U43(tt, _x0, _x1))]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(U83(tt))]] = 1 > 0 = [[mark(tt)]] [[active(U92(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(isList(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 0 >= 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = x0 >= x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = x0 >= x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = x0 >= x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = x0 >= x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = x0 >= x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = x0 >= x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = x0 >= x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = x0 >= x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = x0 >= x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = 2x0 >= 2x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = x0 >= x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = x0 >= x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 0 >= 0 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[U83(_x0)]] [[U83(active(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: active(U83(tt)) => mark(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]): active(U13(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U92(tt)) >? mark(tt) active(isList(nil)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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.y1 + y2 + 2y0 U23 = \y0y1y2.1 + y0 + y1 + y2 U24 = \y0y1y2.1 + y0 + y1 + 2y2 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.1 + y0 U41 = \y0y1y2.y0 + y2 + 3y1 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + 3y2 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.1 + y0 + y1 U62 = \y0y1.y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.1 + y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.1 + y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.1 + y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.2y0 isQid = \y0.1 + y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U41(tt, _x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(U42(isPalListKind(_x0), _x0, _x1))]] [[active(U43(tt, _x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(U92(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(isList(nil))]] = 1 > 0 = [[mark(tt)]] [[active(isPalListKind(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 0 >= 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = 2x0 >= 2x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = x0 >= x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = x0 >= x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = 1 + x0 >= 1 + x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = x0 >= x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = 1 + x0 >= 1 + x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = x0 >= x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = x0 >= x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = x0 >= x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = x0 >= x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = x0 >= x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 0 >= 0 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 2x0 >= 2x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = 2x0 >= 2x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[isList(_x0)]] [[isList(active(_x0))]] = 1 + x0 >= 1 + x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U33(_x0)]] [[U33(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U74(_x0)]] [[U74(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U83(_x0)]] [[U83(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: active(isList(nil)) => mark(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]): active(U13(tt)) >? mark(tt) active(U41(tt, X, Y)) >? mark(U42(isPalListKind(X), X, Y)) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(U92(tt)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + 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.1 + y0 + y2 + 3y1 U42 = \y0y1y2.y0 + y2 + 2y1 U43 = \y0y1y2.y0 + y1 + 3y2 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 + 2y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y1 + 2y0 U92 = \y0.1 + y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.3 + 2y0 isPal = \y0.2y0 isPalListKind = \y0.1 + y0 isQid = \y0.1 + y0 mark = \y0.y0 nil = 0 o = 0 tt = 1 u = 0 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 1 >= 1 = [[mark(tt)]] [[active(U41(tt, _x0, _x1))]] = 2 + x1 + 3x0 > 1 + x1 + 3x0 = [[mark(U42(isPalListKind(_x0), _x0, _x1))]] [[active(U43(tt, _x0, _x1))]] = 1 + x0 + 3x1 >= 1 + x0 + 3x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(U92(tt))]] = 2 > 1 = [[mark(tt)]] [[active(isPalListKind(i))]] = 1 >= 1 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 1 >= 1 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 1 >= 1 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = 1 + x0 >= 1 + x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = x0 >= x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = x0 >= x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = x0 >= x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = x0 >= x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = 1 + x0 >= 1 + x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = x0 >= x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = x0 >= x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = x0 >= x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = 2x0 >= 2x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = x0 >= x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = x0 >= x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = 3 + 2x0 >= 3 + 2x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 0 >= 0 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = 1 + x0 >= 1 + x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = 1 + x0 + x2 + 3x1 >= 1 + x0 + x2 + 3x1 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + 3x2 >= x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 3 + 2x0 >= 3 + 2x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 3 + 2x0 >= 3 + 2x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U92(_x0)]] [[U92(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U92(_x0)]] We can thus remove the following rules: active(U41(tt, X, Y)) => mark(U42(isPalListKind(X), X, Y)) active(U92(tt)) => mark(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]): active(U13(tt)) >? mark(tt) active(U43(tt, X, Y)) >? mark(U44(isPalListKind(Y), X, Y)) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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.1 + 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.1 + y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y2 + 2y1 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.1 + y0 + y1 + 3y2 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.1 + y0 + y1 U63 = \y0.1 + y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.1 + 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 = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.2y0 isPalListKind = \y0.2y0 isQid = \y0.1 + y0 mark = \y0.y0 nil = 0 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U43(tt, _x0, _x1))]] = 1 + x0 + 3x1 > x0 + 3x1 = [[mark(U44(isPalListKind(_x1), _x0, _x1))]] [[active(isPalListKind(i))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 0 >= 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 0 >= 0 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = 2x0 >= 2x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = x0 >= x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = x0 >= x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = x0 >= x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = x0 >= x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = 1 + x0 >= 1 + x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = x0 >= x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = x0 >= x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = 1 + x0 >= 1 + x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = 2x0 >= 2x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = x0 >= x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = x0 >= x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = x0 >= x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = 2x0 >= 2x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 0 >= 0 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 0 >= 0 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 2x0 >= 2x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = 2x0 >= 2x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + 3x2 >= 1 + x0 + x1 + 3x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[U63(_x0)]] [[U63(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 2x0 >= 2x0 = [[U92(_x0)]] [[U92(active(_x0))]] = 2x0 >= 2x0 = [[U92(_x0)]] We can thus remove the following rules: active(U43(tt, X, Y)) => mark(U44(isPalListKind(Y), 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]): active(U13(tt)) >? mark(tt) active(isPalListKind(i)) >? mark(tt) active(isPalListKind(nil)) >? mark(tt) mark(!6220!6220(X, Y)) >? active(!6220!6220(mark(X), mark(Y))) mark(nil) >? active(nil) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U23(X, Y, Z)) >? active(U23(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(U25(X, Y)) >? active(U25(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U32(X, Y)) >? active(U32(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U41(X, Y, Z)) >? active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) >? active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) >? active(U43(mark(X), Y, Z)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U55(X, Y)) >? active(U55(mark(X), Y)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U72(X, Y)) >? active(U72(mark(X), Y)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U74(X)) >? active(U74(mark(X))) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U83(X)) >? active(U83(mark(X))) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(a) >? active(a) mark(e) >? active(e) mark(i) >? active(i) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + y1 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.1 + y0 + y1 + 2y2 U24 = \y0y1y2.y0 + y1 + 2y2 U25 = \y0y1.3 + y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.2 + y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.2 + y0 + y1 + y2 U42 = \y0y1y2.1 + y0 + y1 + y2 U43 = \y0y1y2.2 + y0 + y2 + 2y1 U44 = \y0y1y2.y0 + 2y1 + 2y2 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y1 + 2y0 + 2y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + 2y1 + 2y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.2 + y0 + y1 U56 = \y0.y0 U61 = \y0y1.2y0 + 2y1 U62 = \y0y1.y0 + y1 U63 = \y0.y0 U71 = \y0y1y2.y0 + y1 + 2y2 U72 = \y0y1.2 + y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.3 + y0 U81 = \y0y1.y0 + 2y1 U82 = \y0y1.y0 + y1 U83 = \y0.3 + y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 a = 2 active = \y0.y0 e = 0 i = 1 isList = \y0.2y0 isNeList = \y0.2y0 isNePal = \y0.2y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.2y0 nil = 1 o = 0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(isPalListKind(i))]] = 1 > 0 = [[mark(tt)]] [[active(isPalListKind(nil))]] = 1 > 0 = [[mark(tt)]] [[mark(!6220!6220(_x0, _x1))]] = 2 + 2x0 + 2x1 > 1 + 2x0 + 2x1 = [[active(!6220!6220(mark(_x0), mark(_x1)))]] [[mark(nil)]] = 2 > 1 = [[active(nil)]] [[mark(U11(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = 2x0 >= x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = 2x0 >= 2x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = 4x0 >= 2x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U23(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 4x2 > 1 + x1 + 2x0 + 2x2 = [[active(U23(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(U25(_x0, _x1))]] = 6 + 2x0 + 2x1 > 3 + x1 + 2x0 = [[active(U25(mark(_x0), _x1))]] [[mark(isList(_x0))]] = 4x0 >= 2x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U32(_x0, _x1))]] = 4 + 2x0 + 2x1 > 2 + x1 + 2x0 = [[active(U32(mark(_x0), _x1))]] [[mark(U33(_x0))]] = 2x0 >= 2x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = 2x0 >= x0 = [[active(isQid(_x0))]] [[mark(U41(_x0, _x1, _x2))]] = 4 + 2x0 + 2x1 + 2x2 > 2 + x1 + x2 + 2x0 = [[active(U41(mark(_x0), _x1, _x2))]] [[mark(U42(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 2x2 > 1 + x1 + x2 + 2x0 = [[active(U42(mark(_x0), _x1, _x2))]] [[mark(U43(_x0, _x1, _x2))]] = 4 + 2x0 + 2x2 + 4x1 > 2 + x2 + 2x0 + 2x1 = [[active(U43(mark(_x0), _x1, _x2))]] [[mark(U44(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = 2x0 >= 2x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = 2x1 + 4x0 + 4x2 >= x1 + 2x2 + 4x0 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U55(_x0, _x1))]] = 4 + 2x0 + 2x1 > 2 + x1 + 2x0 = [[active(U55(mark(_x0), _x1))]] [[mark(U56(_x0))]] = 2x0 >= 2x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = 2x0 >= 2x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U72(_x0, _x1))]] = 4 + 2x0 + 2x1 > 2 + x1 + 2x0 = [[active(U72(mark(_x0), _x1))]] [[mark(U73(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = 2x0 >= x0 = [[active(isPal(_x0))]] [[mark(U74(_x0))]] = 6 + 2x0 > 3 + 2x0 = [[active(U74(mark(_x0)))]] [[mark(U81(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U82(mark(_x0), _x1))]] [[mark(U83(_x0))]] = 6 + 2x0 > 3 + 2x0 = [[active(U83(mark(_x0)))]] [[mark(isNePal(_x0))]] = 4x0 >= 2x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = 2x0 >= 2x0 = [[active(U92(mark(_x0)))]] [[mark(a)]] = 4 > 2 = [[active(a)]] [[mark(e)]] = 0 >= 0 = [[active(e)]] [[mark(i)]] = 2 > 1 = [[active(i)]] [[mark(o)]] = 0 >= 0 = [[active(o)]] [[mark(u)]] = 0 >= 0 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = 1 + x1 + 2x0 >= 1 + x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 2x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 2x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 4x0 >= 2x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = 1 + x1 + 2x0 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 4x2 >= 1 + x0 + x1 + 2x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x1 + 2x0 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + 4x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = 3 + x1 + 2x0 >= 3 + x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = 3 + x0 + 2x1 >= 3 + x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = 3 + x0 + x1 >= 3 + x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 4x0 >= 2x0 = [[isList(_x0)]] [[isList(active(_x0))]] = 2x0 >= 2x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 2x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = 2 + x1 + 2x0 >= 2 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = 2 + x0 + 2x1 >= 2 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 2x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 2x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = 2 + x1 + x2 + 2x0 >= 2 + x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = 2 + x0 + x2 + 2x1 >= 2 + x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = 2 + x2 + 2x0 + 2x1 >= 2 + x0 + x2 + 2x1 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = 2 + x0 + x2 + 4x1 >= 2 + x0 + x2 + 2x1 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = 2 + x0 + 2x1 + 2x2 >= 2 + x0 + x2 + 2x1 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = 2 + x0 + x2 + 2x1 >= 2 + x0 + x2 + 2x1 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = 2 + x0 + x2 + 2x1 >= 2 + x0 + x2 + 2x1 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = 2 + x0 + x2 + 2x1 >= 2 + x0 + x2 + 2x1 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + 2x2 + 4x1 >= x0 + 2x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 4x2 >= x0 + 2x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 2x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x1 + 2x2 + 4x0 >= x1 + 2x0 + 2x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = 2x0 + 2x1 + 2x2 >= x1 + 2x0 + 2x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x1 + 2x0 + 4x2 >= x1 + 2x0 + 2x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + 2x2 + 4x1 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 4x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = 2 + x1 + 2x0 >= 2 + x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = 2 + x0 + 2x1 >= 2 + x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 2x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = 2x1 + 4x0 >= 2x0 + 2x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 2x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x1 + 2x0 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + 4x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = 2 + x1 + 2x0 >= 2 + x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = 2 + x0 + 2x1 >= 2 + x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 3 + 2x0 >= 3 + x0 = [[U74(_x0)]] [[U74(active(_x0))]] = 3 + x0 >= 3 + x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 3 + 2x0 >= 3 + x0 = [[U83(_x0)]] [[U83(active(_x0))]] = 3 + x0 >= 3 + x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 4x0 >= 2x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 2x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: active(isPalListKind(i)) => mark(tt) active(isPalListKind(nil)) => mark(tt) mark(!6220!6220(X, Y)) => active(!6220!6220(mark(X), mark(Y))) mark(nil) => active(nil) mark(U23(X, Y, Z)) => active(U23(mark(X), Y, Z)) mark(U25(X, Y)) => active(U25(mark(X), Y)) mark(U32(X, Y)) => active(U32(mark(X), Y)) mark(U41(X, Y, Z)) => active(U41(mark(X), Y, Z)) mark(U42(X, Y, Z)) => active(U42(mark(X), Y, Z)) mark(U43(X, Y, Z)) => active(U43(mark(X), Y, Z)) mark(U55(X, Y)) => active(U55(mark(X), Y)) mark(U72(X, Y)) => active(U72(mark(X), Y)) mark(U74(X)) => active(U74(mark(X))) mark(U83(X)) => active(U83(mark(X))) mark(a) => active(a) mark(i) => active(i) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): active(U13(tt)) >? mark(tt) mark(U11(X, Y)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(U13(X)) >? active(U13(mark(X))) mark(isNeList(X)) >? active(isNeList(X)) mark(U21(X, Y, Z)) >? active(U21(mark(X), Y, Z)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(U24(X, Y, Z)) >? active(U24(mark(X), Y, Z)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(isQid(X)) >? active(isQid(X)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U45(X, Y)) >? active(U45(mark(X), Y)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(U62(X, Y)) >? active(U62(mark(X), Y)) mark(U63(X)) >? active(U63(mark(X))) mark(U71(X, Y, Z)) >? active(U71(mark(X), Y, Z)) mark(U73(X, Y)) >? active(U73(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(isNePal(X)) >? active(isNePal(X)) mark(U91(X, Y)) >? active(U91(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) mark(e) >? active(e) mark(o) >? active(o) mark(u) >? active(u) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(X)) >? U92(X) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.2y0 + 2y1 U11 = \y0y1.y0 + 2y1 U12 = \y0y1.y0 + y1 U13 = \y0.1 + y0 U21 = \y0y1y2.2 + y0 + y1 + y2 U22 = \y0y1y2.y0 + y1 + y2 U23 = \y0y1y2.y1 + y2 + 2y0 U24 = \y0y1y2.2 + y0 + 2y1 + 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.1 + y1 + 2y0 U46 = \y0.y0 U51 = \y0y1y2.y0 + y2 + 2y1 U52 = \y0y1y2.y2 + 2y0 + 2y1 U53 = \y0y1y2.y0 + y2 + 2y1 U54 = \y0y1y2.y0 + y2 + 2y1 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y1 + 2y0 U62 = \y0y1.2 + 2y0 + 2y1 U63 = \y0.1 + y0 U71 = \y0y1y2.1 + y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.2 + y0 + y1 U74 = \y0.y0 U81 = \y0y1.y1 + 2y0 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.2 + y0 + y1 U92 = \y0.2y0 active = \y0.y0 e = 3 isList = \y0.2y0 isNeList = \y0.2y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.2y0 isQid = \y0.1 + y0 mark = \y0.2y0 o = 1 tt = 0 u = 1 Using this interpretation, the requirements translate to: [[active(U13(tt))]] = 1 > 0 = [[mark(tt)]] [[mark(U11(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 0 >= 0 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = 4x0 >= 2x0 = [[active(isPalListKind(_x0))]] [[mark(U13(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[active(U13(mark(_x0)))]] [[mark(isNeList(_x0))]] = 4x0 >= 2x0 = [[active(isNeList(_x0))]] [[mark(U21(_x0, _x1, _x2))]] = 4 + 2x0 + 2x1 + 2x2 > 2 + x1 + x2 + 2x0 = [[active(U21(mark(_x0), _x1, _x2))]] [[mark(U22(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(U24(_x0, _x1, _x2))]] = 4 + 2x0 + 4x1 + 4x2 > 2 + 2x0 + 2x1 + 2x2 = [[active(U24(mark(_x0), _x1, _x2))]] [[mark(isList(_x0))]] = 4x0 >= 2x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U33(_x0))]] = 2x0 >= 2x0 = [[active(U33(mark(_x0)))]] [[mark(isQid(_x0))]] = 2 + 2x0 > 1 + x0 = [[active(isQid(_x0))]] [[mark(U44(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U45(_x0, _x1))]] = 2 + 2x1 + 4x0 > 1 + x1 + 4x0 = [[active(U45(mark(_x0), _x1))]] [[mark(U46(_x0))]] = 2x0 >= 2x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= x2 + 2x0 + 2x1 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = 2x2 + 4x0 + 4x1 >= x2 + 2x1 + 4x0 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= x2 + 2x0 + 2x1 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= x2 + 2x0 + 2x1 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U56(_x0))]] = 2x0 >= 2x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[active(U61(mark(_x0), _x1))]] [[mark(U62(_x0, _x1))]] = 4 + 4x0 + 4x1 > 2 + 2x1 + 4x0 = [[active(U62(mark(_x0), _x1))]] [[mark(U63(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[active(U63(mark(_x0)))]] [[mark(U71(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 2x2 > 1 + x1 + x2 + 2x0 = [[active(U71(mark(_x0), _x1, _x2))]] [[mark(U73(_x0, _x1))]] = 4 + 2x0 + 2x1 > 2 + x1 + 2x0 = [[active(U73(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = 2x0 >= x0 = [[active(isPal(_x0))]] [[mark(U81(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U82(mark(_x0), _x1))]] [[mark(isNePal(_x0))]] = 2x0 >= x0 = [[active(isNePal(_x0))]] [[mark(U91(_x0, _x1))]] = 4 + 2x0 + 2x1 > 2 + x1 + 2x0 = [[active(U91(mark(_x0), _x1))]] [[mark(U92(_x0))]] = 4x0 >= 4x0 = [[active(U92(mark(_x0)))]] [[mark(e)]] = 6 > 3 = [[active(e)]] [[mark(o)]] = 2 > 1 = [[active(o)]] [[mark(u)]] = 2 > 1 = [[active(u)]] [[!6220!6220(mark(_x0), _x1)]] = 2x1 + 4x0 >= 2x0 + 2x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 4x0 >= 2x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = 2x0 >= 2x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 1 + 2x0 >= 1 + x0 = [[U13(_x0)]] [[U13(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 4x0 >= 2x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = 2 + x1 + x2 + 2x0 >= 2 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = 2 + x0 + x2 + 2x1 >= 2 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x1 + x2 + 4x0 >= x1 + x2 + 2x0 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x2 + 2x0 + 2x1 >= x1 + x2 + 2x0 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x1 + 2x0 + 2x2 >= x1 + x2 + 2x0 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = 2 + 2x0 + 2x1 + 2x2 >= 2 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = 2 + x0 + 2x2 + 4x1 >= 2 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = 2 + x0 + 2x1 + 4x2 >= 2 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = 2 + x0 + 2x1 + 2x2 >= 2 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = 2 + x0 + 2x1 + 2x2 >= 2 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = 2 + x0 + 2x1 + 2x2 >= 2 + x0 + 2x1 + 2x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 4x0 >= 2x0 = [[isList(_x0)]] [[isList(active(_x0))]] = 2x0 >= 2x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 2x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 2x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 1 + 2x0 >= 1 + x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = 1 + x0 >= 1 + x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = 1 + x1 + 4x0 >= 1 + x1 + 2x0 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = 1 + 2x0 + 2x1 >= 1 + x1 + 2x0 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 2x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x2 + 4x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x2 + 2x1 + 4x0 >= x2 + 2x0 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x2 + 2x0 + 4x1 >= x2 + 2x0 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = 2x0 + 2x1 + 2x2 >= x2 + 2x0 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x0 + x2 + 2x1 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x2 + 4x1 >= x0 + x2 + 2x1 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x2 + 4x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 2x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x1 + 4x0 >= x1 + 2x0 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = 2 + 2x1 + 4x0 >= 2 + 2x0 + 2x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = 2 + 2x0 + 4x1 >= 2 + 2x0 + 2x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = 2 + 2x0 + 2x1 >= 2 + 2x0 + 2x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 1 + 2x0 >= 1 + x0 = [[U63(_x0)]] [[U63(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = 2 + x1 + 2x0 >= 2 + x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = 2 + x0 + 2x1 >= 2 + x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 2x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x1 + 4x0 >= x1 + 2x0 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 2x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 2x0 >= x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = 2 + x1 + 2x0 >= 2 + x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = 2 + x0 + 2x1 >= 2 + x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 4x0 >= 2x0 = [[U92(_x0)]] [[U92(active(_x0))]] = 2x0 >= 2x0 = [[U92(_x0)]] We can thus remove the following rules: active(U13(tt)) => mark(tt) mark(U13(X)) => active(U13(mark(X))) mark(U21(X, Y, Z)) => active(U21(mark(X), Y, Z)) mark(U24(X, Y, Z)) => active(U24(mark(X), Y, Z)) mark(isQid(X)) => active(isQid(X)) mark(U45(X, Y)) => active(U45(mark(X), Y)) mark(U62(X, Y)) => active(U62(mark(X), Y)) mark(U63(X)) => active(U63(mark(X))) mark(U71(X, Y, Z)) => active(U71(mark(X), Y, Z)) mark(U73(X, Y)) => active(U73(mark(X), Y)) mark(U91(X, Y)) => active(U91(mark(X), Y)) mark(e) => active(e) mark(o) => active(o) mark(u) => active(u) 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)) >? active(U11(mark(X), Y)) mark(tt) >? active(tt) mark(U12(X, Y)) >? active(U12(mark(X), Y)) mark(isPalListKind(X)) >? active(isPalListKind(X)) mark(isNeList(X)) >? active(isNeList(X)) mark(U22(X, Y, Z)) >? active(U22(mark(X), Y, Z)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U33(X)) >? active(U33(mark(X))) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U46(X)) >? active(U46(mark(X))) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U54(X, Y, Z)) >? active(U54(mark(X), Y, Z)) mark(U56(X)) >? active(U56(mark(X))) mark(U61(X, Y)) >? active(U61(mark(X), Y)) mark(isPal(X)) >? active(isPal(X)) mark(U81(X, Y)) >? active(U81(mark(X), Y)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(isNePal(X)) >? active(isNePal(X)) mark(U92(X)) >? active(U92(mark(X))) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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.2 + y0 + 2y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.1 + 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.1 + y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y1 + 2y0 U46 = \y0.1 + y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + 2y1 + 2y2 U53 = \y0y1y2.y0 + 2y1 + 2y2 U54 = \y0y1y2.1 + y0 + y1 + 2y2 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.1 + y0 + y1 U62 = \y0y1.y1 + 2y0 U63 = \y0.y0 U71 = \y0y1y2.y0 + y2 + 2y1 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.1 + y0 + 2y1 U82 = \y0y1.y0 + 2y1 U83 = \y0.2y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 active = \y0.y0 isList = \y0.y0 isNeList = \y0.1 + 2y0 isNePal = \y0.2 + 2y0 isPal = \y0.y0 isPalListKind = \y0.2 + 2y0 isQid = \y0.y0 mark = \y0.2y0 tt = 1 Using this interpretation, the requirements translate to: [[mark(U11(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U11(mark(_x0), _x1))]] [[mark(tt)]] = 2 > 1 = [[active(tt)]] [[mark(U12(_x0, _x1))]] = 4 + 2x0 + 4x1 > 2 + 2x0 + 2x1 = [[active(U12(mark(_x0), _x1))]] [[mark(isPalListKind(_x0))]] = 4 + 4x0 > 2 + 2x0 = [[active(isPalListKind(_x0))]] [[mark(isNeList(_x0))]] = 2 + 4x0 > 1 + 2x0 = [[active(isNeList(_x0))]] [[mark(U22(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 2x2 > 1 + x1 + x2 + 2x0 = [[active(U22(mark(_x0), _x1, _x2))]] [[mark(isList(_x0))]] = 2x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = 2x0 >= 2x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U33(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[active(U33(mark(_x0)))]] [[mark(U44(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U46(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[active(U46(mark(_x0)))]] [[mark(U51(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U54(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 4x2 > 1 + x1 + 2x0 + 2x2 = [[active(U54(mark(_x0), _x1, _x2))]] [[mark(U56(_x0))]] = 2x0 >= 2x0 = [[active(U56(mark(_x0)))]] [[mark(U61(_x0, _x1))]] = 2 + 2x0 + 2x1 > 1 + x1 + 2x0 = [[active(U61(mark(_x0), _x1))]] [[mark(isPal(_x0))]] = 2x0 >= x0 = [[active(isPal(_x0))]] [[mark(U81(_x0, _x1))]] = 2 + 2x0 + 4x1 > 1 + 2x0 + 2x1 = [[active(U81(mark(_x0), _x1))]] [[mark(U82(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[active(U82(mark(_x0), _x1))]] [[mark(isNePal(_x0))]] = 4 + 4x0 > 2 + 2x0 = [[active(isNePal(_x0))]] [[mark(U92(_x0))]] = 2x0 >= 2x0 = [[active(U92(mark(_x0)))]] [[!6220!6220(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = 2 + 2x0 + 2x1 >= 2 + x0 + 2x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = 2 + x0 + 4x1 >= 2 + x0 + 2x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = 2 + x0 + 2x1 >= 2 + x0 + 2x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = 2 + x0 + 2x1 >= 2 + x0 + 2x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 2 + 4x0 >= 2 + 2x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = 2 + 2x0 >= 2 + 2x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 2x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 1 + 4x0 >= 1 + 2x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 2x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 2x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 1 + 2x0 >= 1 + x0 = [[U33(_x0)]] [[U33(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 2x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x1 + 4x0 >= x1 + 2x0 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 1 + 2x0 >= 1 + x0 = [[U46(_x0)]] [[U46(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + 2x2 + 4x1 >= x0 + 2x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 4x2 >= x0 + 2x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + 2x2 + 4x1 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 4x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = 1 + x1 + 2x0 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 4x2 >= 1 + x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 2x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = 1 + x1 + 2x0 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x1 + 4x0 >= x1 + 2x0 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 2x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x2 + 4x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 2x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = 1 + 2x0 + 2x1 >= 1 + x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = 1 + x0 + 4x1 >= 1 + x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 4x0 >= 2x0 = [[U83(_x0)]] [[U83(active(_x0))]] = 2x0 >= 2x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 2 + 4x0 >= 2 + 2x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 2 + 2x0 >= 2 + 2x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 2x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: mark(tt) => active(tt) mark(U12(X, Y)) => active(U12(mark(X), Y)) mark(isPalListKind(X)) => active(isPalListKind(X)) mark(isNeList(X)) => active(isNeList(X)) mark(U22(X, Y, Z)) => active(U22(mark(X), Y, Z)) mark(U33(X)) => active(U33(mark(X))) mark(U46(X)) => active(U46(mark(X))) mark(U54(X, Y, Z)) => active(U54(mark(X), Y, Z)) mark(U61(X, Y)) => active(U61(mark(X), Y)) mark(U81(X, Y)) => active(U81(mark(X), Y)) mark(isNePal(X)) => active(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)) >? active(U11(mark(X), Y)) mark(isList(X)) >? active(isList(X)) mark(U26(X)) >? active(U26(mark(X))) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U51(X, Y, Z)) >? active(U51(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U56(X)) >? active(U56(mark(X))) mark(isPal(X)) >? active(isPal(X)) mark(U82(X, Y)) >? active(U82(mark(X), Y)) mark(U92(X)) >? active(U92(mark(X))) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + 2y1 U11 = \y0y1.2 + 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.1 + 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 + y2 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.1 + 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 + 2y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.1 + y0 active = \y0.y0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.3 + y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.2y0 Using this interpretation, the requirements translate to: [[mark(U11(_x0, _x1))]] = 4 + 2x0 + 2x1 > 2 + x1 + 2x0 = [[active(U11(mark(_x0), _x1))]] [[mark(isList(_x0))]] = 2x0 >= x0 = [[active(isList(_x0))]] [[mark(U26(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[active(U26(mark(_x0)))]] [[mark(U31(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U44(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U51(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 2x2 > 1 + x1 + x2 + 2x0 = [[active(U51(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U56(_x0))]] = 2x0 >= 2x0 = [[active(U56(mark(_x0)))]] [[mark(isPal(_x0))]] = 6 + 2x0 > 3 + x0 = [[active(isPal(_x0))]] [[mark(U82(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[active(U82(mark(_x0), _x1))]] [[mark(U92(_x0))]] = 2 + 2x0 > 1 + 2x0 = [[active(U92(mark(_x0)))]] [[!6220!6220(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = 2 + x1 + 2x0 >= 2 + x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = 2 + x0 + 2x1 >= 2 + x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 2x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 2x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 2x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 2x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 1 + 2x0 >= 1 + x0 = [[U26(_x0)]] [[U26(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 2x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 2x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 2x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = 1 + x1 + x2 + 2x0 >= 1 + x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = 1 + x0 + x1 + 2x2 >= 1 + x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 2x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 2x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 3 + 2x0 >= 3 + x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 3 + x0 >= 3 + x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 2x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 2x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 2x0 >= x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 1 + 2x0 >= 1 + x0 = [[U92(_x0)]] [[U92(active(_x0))]] = 1 + x0 >= 1 + x0 = [[U92(_x0)]] We can thus remove the following rules: mark(U11(X, Y)) => active(U11(mark(X), Y)) mark(U26(X)) => active(U26(mark(X))) mark(U51(X, Y, Z)) => active(U51(mark(X), Y, Z)) mark(isPal(X)) => active(isPal(X)) mark(U92(X)) => active(U92(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]): mark(isList(X)) >? active(isList(X)) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U44(X, Y, Z)) >? active(U44(mark(X), Y, Z)) mark(U52(X, Y, Z)) >? active(U52(mark(X), Y, Z)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U56(X)) >? active(U56(mark(X))) mark(U82(X, Y)) >? active(U82(mark(X), Y)) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + 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.1 + y0 + y2 + 2y1 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.2 + y0 + y1 + 2y2 U53 = \y0y1y2.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.2 + y1 + 2y0 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 active = \y0.y0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.2y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.2y0 Using this interpretation, the requirements translate to: [[mark(isList(_x0))]] = 2x0 >= x0 = [[active(isList(_x0))]] [[mark(U31(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U44(_x0, _x1, _x2))]] = 2 + 2x0 + 2x2 + 4x1 > 1 + x2 + 2x0 + 2x1 = [[active(U44(mark(_x0), _x1, _x2))]] [[mark(U52(_x0, _x1, _x2))]] = 4 + 2x0 + 2x1 + 4x2 > 2 + x1 + 2x0 + 2x2 = [[active(U52(mark(_x0), _x1, _x2))]] [[mark(U53(_x0, _x1, _x2))]] = 2x1 + 4x0 + 4x2 >= x1 + 2x2 + 4x0 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U56(_x0))]] = 2x0 >= 2x0 = [[active(U56(mark(_x0)))]] [[mark(U82(_x0, _x1))]] = 4 + 2x1 + 4x0 > 2 + x1 + 4x0 = [[active(U82(mark(_x0), _x1))]] [[!6220!6220(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 2x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 2x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 2x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 2x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 2x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 2x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 2x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = 1 + x2 + 2x0 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = 1 + x0 + x2 + 4x1 >= 1 + x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = 1 + x0 + x2 + 2x1 >= 1 + x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 2x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = 2 + x1 + 2x0 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = 2 + x0 + 2x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = 2 + x0 + x1 + 4x2 >= 2 + x0 + x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = 2 + x0 + x1 + 2x2 >= 2 + x0 + x1 + 2x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x1 + 2x2 + 4x0 >= x1 + 2x0 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = 2x0 + 2x1 + 2x2 >= x1 + 2x0 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x1 + 2x0 + 4x2 >= x1 + 2x0 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 2x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 2x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 2x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = 2 + x1 + 4x0 >= 2 + x1 + 2x0 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = 2 + 2x0 + 2x1 >= 2 + x1 + 2x0 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 2x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 4x0 >= 2x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 2x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: mark(U44(X, Y, Z)) => active(U44(mark(X), Y, Z)) mark(U52(X, Y, Z)) => active(U52(mark(X), Y, Z)) mark(U82(X, Y)) => active(U82(mark(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(isList(X)) >? active(isList(X)) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) mark(U56(X)) >? active(U56(mark(X))) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + 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.2y0 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 + y2 + 2y1 U53 = \y0y1y2.y0 + y1 + 2y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + 2y1 U56 = \y0.2 + y0 U61 = \y0y1.y0 + 2y1 U62 = \y0y1.2y0 + 2y1 U63 = \y0.2y0 U71 = \y0y1y2.2y0 + 2y1 + 2y2 U72 = \y0y1.2y0 + 2y1 U73 = \y0y1.y0 + 2y1 U74 = \y0.2y0 U81 = \y0y1.2y0 + 2y1 U82 = \y0y1.y1 + 2y0 U83 = \y0.2y0 U91 = \y0y1.y1 + 2y0 U92 = \y0.y0 active = \y0.y0 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.2y0 isPal = \y0.2y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.2y0 Using this interpretation, the requirements translate to: [[mark(isList(_x0))]] = 2x0 >= x0 = [[active(isList(_x0))]] [[mark(U31(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U53(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[mark(U56(_x0))]] = 4 + 2x0 > 2 + 2x0 = [[active(U56(mark(_x0)))]] [[!6220!6220(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 2x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 2x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 4x0 >= 2x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 2x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 2x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x1 + 4x0 >= x1 + 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 4x0 >= 2x0 = [[U33(_x0)]] [[U33(active(_x0))]] = 2x0 >= 2x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 2x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 2x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x0 + x2 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x2 + 4x1 >= x0 + x2 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x1 + 2x0 + 2x2 >= x0 + x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + 4x2 >= x0 + x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 2 + 2x0 >= 2 + x0 = [[U56(_x0)]] [[U56(active(_x0))]] = 2 + x0 >= 2 + x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = 2x1 + 4x0 >= 2x0 + 2x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 4x0 >= 2x0 = [[U63(_x0)]] [[U63(active(_x0))]] = 2x0 >= 2x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = 2x1 + 2x2 + 4x0 >= 2x0 + 2x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = 2x0 + 2x2 + 4x1 >= 2x0 + 2x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = 2x0 + 2x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = 2x1 + 4x0 >= 2x0 + 2x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 4x0 >= 2x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 4x0 >= 2x0 = [[U74(_x0)]] [[U74(active(_x0))]] = 2x0 >= 2x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = 2x1 + 4x0 >= 2x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x1 + 4x0 >= x1 + 2x0 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 4x0 >= 2x0 = [[U83(_x0)]] [[U83(active(_x0))]] = 2x0 >= 2x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 4x0 >= 2x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x1 + 4x0 >= x1 + 2x0 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 2x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: mark(U56(X)) => active(U56(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]): mark(isList(X)) >? active(isList(X)) mark(U31(X, Y)) >? active(U31(mark(X), Y)) mark(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + 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.2 + y1 + 2y0 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 + 2y2 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 active = \y0.y0 isList = \y0.2 + y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.2y0 Using this interpretation, the requirements translate to: [[mark(isList(_x0))]] = 4 + 2x0 > 2 + x0 = [[active(isList(_x0))]] [[mark(U31(_x0, _x1))]] = 4 + 2x1 + 4x0 > 2 + x1 + 4x0 = [[active(U31(mark(_x0), _x1))]] [[mark(U53(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[active(U53(mark(_x0), _x1, _x2))]] [[!6220!6220(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 2x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 2x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 2x0 >= x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = x0 >= x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 2 + 2x0 >= 2 + x0 = [[isList(_x0)]] [[isList(active(_x0))]] = 2 + x0 >= 2 + x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 2x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = 2 + x1 + 4x0 >= 2 + x1 + 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 2 + 2x0 + 2x1 >= 2 + x1 + 2x0 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 2x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 2x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 2x0 >= x0 = [[U46(_x0)]] [[U46(active(_x0))]] = x0 >= x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x1 + 2x0 + 2x2 >= x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + 2x1 + 2x2 >= x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + x1 + 4x2 >= x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 2x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 2x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 2x0 >= x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = x0 >= x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 2x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 2x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 2x0 >= x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = x0 >= x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 2x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: mark(isList(X)) => active(isList(X)) mark(U31(X, Y)) => active(U31(mark(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(U53(X, Y, Z)) >? active(U53(mark(X), Y, Z)) !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + 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.y1 + 2y0 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.2y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.1 + y0 + 2y1 + 2y2 U54 = \y0y1y2.y0 + y2 + 2y1 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + 2y1 U62 = \y0y1.y1 + 2y0 U63 = \y0.y0 U71 = \y0y1y2.y1 + y2 + 2y0 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + 2y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.y0 + y1 U92 = \y0.y0 active = \y0.y0 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.2y0 isPal = \y0.2y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.2y0 Using this interpretation, the requirements translate to: [[mark(U53(_x0, _x1, _x2))]] = 2 + 2x0 + 4x1 + 4x2 > 1 + 2x0 + 2x1 + 2x2 = [[active(U53(mark(_x0), _x1, _x2))]] [[!6220!6220(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 2x0 >= x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = x0 >= x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 2x0 >= x0 = [[U13(_x0)]] [[U13(active(_x0))]] = x0 >= x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 4x0 >= 2x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = 2x0 >= 2x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 2x0 >= x0 = [[isList(_x0)]] [[isList(active(_x0))]] = x0 >= x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 2x0 >= x0 = [[U26(_x0)]] [[U26(active(_x0))]] = x0 >= x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = x1 + 4x0 >= x1 + 2x0 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 2x0 >= x0 = [[U33(_x0)]] [[U33(active(_x0))]] = x0 >= x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 2x0 >= x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = x0 >= x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = x0 + x2 + 4x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 4x0 >= 2x0 = [[U46(_x0)]] [[U46(active(_x0))]] = 2x0 >= 2x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = 1 + 2x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = 1 + x0 + 2x2 + 4x1 >= 1 + x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = 1 + x0 + 2x1 + 4x2 >= 1 + x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = 1 + x0 + 2x1 + 2x2 >= 1 + x0 + 2x1 + 2x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = x0 + x2 + 4x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = x0 + 2x1 + 2x2 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 2x0 >= x0 = [[U56(_x0)]] [[U56(active(_x0))]] = x0 >= x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = x1 + 4x0 >= x1 + 2x0 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 2x0 >= x0 = [[U63(_x0)]] [[U63(active(_x0))]] = x0 >= x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = x1 + x2 + 4x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = x2 + 2x0 + 2x1 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = x1 + 2x0 + 2x2 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = 2x0 + 2x1 >= x0 + 2x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = x0 + 4x1 >= x0 + 2x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 4x0 >= 2x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 2x0 >= 2x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 2x0 >= x0 = [[U74(_x0)]] [[U74(active(_x0))]] = x0 >= x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 2x0 >= x0 = [[U83(_x0)]] [[U83(active(_x0))]] = x0 >= x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 4x0 >= 2x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 2x0 >= 2x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = x1 + 2x0 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = x0 + 2x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = x0 + x1 >= x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 2x0 >= x0 = [[U92(_x0)]] [[U92(active(_x0))]] = x0 >= x0 = [[U92(_x0)]] We can thus remove the following rules: mark(U53(X, Y, Z)) => active(U53(mark(X), Y, 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]): !6220!6220(mark(X), Y) >? !6220!6220(X, Y) !6220!6220(X, mark(Y)) >? !6220!6220(X, Y) !6220!6220(active(X), Y) >? !6220!6220(X, Y) !6220!6220(X, active(Y)) >? !6220!6220(X, Y) U11(mark(X), Y) >? U11(X, Y) U11(X, mark(Y)) >? U11(X, Y) U11(active(X), Y) >? U11(X, Y) U11(X, active(Y)) >? U11(X, Y) U12(mark(X), Y) >? U12(X, Y) U12(X, mark(Y)) >? U12(X, Y) U12(active(X), Y) >? U12(X, Y) U12(X, active(Y)) >? U12(X, Y) isPalListKind(mark(X)) >? isPalListKind(X) isPalListKind(active(X)) >? isPalListKind(X) U13(mark(X)) >? U13(X) U13(active(X)) >? U13(X) isNeList(mark(X)) >? isNeList(X) isNeList(active(X)) >? isNeList(X) U21(mark(X), Y, Z) >? U21(X, Y, Z) U21(X, mark(Y), Z) >? U21(X, Y, Z) U21(X, Y, mark(Z)) >? U21(X, Y, Z) U21(active(X), Y, Z) >? U21(X, Y, Z) U21(X, active(Y), Z) >? U21(X, Y, Z) U21(X, Y, active(Z)) >? U21(X, Y, Z) U22(mark(X), Y, Z) >? U22(X, Y, Z) U22(X, mark(Y), Z) >? U22(X, Y, Z) U22(X, Y, mark(Z)) >? U22(X, Y, Z) U22(active(X), Y, Z) >? U22(X, Y, Z) U22(X, active(Y), Z) >? U22(X, Y, Z) U22(X, Y, active(Z)) >? U22(X, Y, Z) U23(mark(X), Y, Z) >? U23(X, Y, Z) U23(X, mark(Y), Z) >? U23(X, Y, Z) U23(X, Y, mark(Z)) >? U23(X, Y, Z) U23(active(X), Y, Z) >? U23(X, Y, Z) U23(X, active(Y), Z) >? U23(X, Y, Z) U23(X, Y, active(Z)) >? U23(X, Y, Z) U24(mark(X), Y, Z) >? U24(X, Y, Z) U24(X, mark(Y), Z) >? U24(X, Y, Z) U24(X, Y, mark(Z)) >? U24(X, Y, Z) U24(active(X), Y, Z) >? U24(X, Y, Z) U24(X, active(Y), Z) >? U24(X, Y, Z) U24(X, Y, active(Z)) >? U24(X, Y, Z) U25(mark(X), Y) >? U25(X, Y) U25(X, mark(Y)) >? U25(X, Y) U25(active(X), Y) >? U25(X, Y) U25(X, active(Y)) >? U25(X, Y) isList(mark(X)) >? isList(X) isList(active(X)) >? isList(X) U26(mark(X)) >? U26(X) U26(active(X)) >? U26(X) U31(mark(X), Y) >? U31(X, Y) U31(X, mark(Y)) >? U31(X, Y) U31(active(X), Y) >? U31(X, Y) U31(X, active(Y)) >? U31(X, Y) U32(mark(X), Y) >? U32(X, Y) U32(X, mark(Y)) >? U32(X, Y) U32(active(X), Y) >? U32(X, Y) U32(X, active(Y)) >? U32(X, Y) U33(mark(X)) >? U33(X) U33(active(X)) >? U33(X) isQid(mark(X)) >? isQid(X) isQid(active(X)) >? isQid(X) U41(mark(X), Y, Z) >? U41(X, Y, Z) U41(X, mark(Y), Z) >? U41(X, Y, Z) U41(X, Y, mark(Z)) >? U41(X, Y, Z) U41(active(X), Y, Z) >? U41(X, Y, Z) U41(X, active(Y), Z) >? U41(X, Y, Z) U41(X, Y, active(Z)) >? U41(X, Y, Z) U42(mark(X), Y, Z) >? U42(X, Y, Z) U42(X, mark(Y), Z) >? U42(X, Y, Z) U42(X, Y, mark(Z)) >? U42(X, Y, Z) U42(active(X), Y, Z) >? U42(X, Y, Z) U42(X, active(Y), Z) >? U42(X, Y, Z) U42(X, Y, active(Z)) >? U42(X, Y, Z) U43(mark(X), Y, Z) >? U43(X, Y, Z) U43(X, mark(Y), Z) >? U43(X, Y, Z) U43(X, Y, mark(Z)) >? U43(X, Y, Z) U43(active(X), Y, Z) >? U43(X, Y, Z) U43(X, active(Y), Z) >? U43(X, Y, Z) U43(X, Y, active(Z)) >? U43(X, Y, Z) U44(mark(X), Y, Z) >? U44(X, Y, Z) U44(X, mark(Y), Z) >? U44(X, Y, Z) U44(X, Y, mark(Z)) >? U44(X, Y, Z) U44(active(X), Y, Z) >? U44(X, Y, Z) U44(X, active(Y), Z) >? U44(X, Y, Z) U44(X, Y, active(Z)) >? U44(X, Y, Z) U45(mark(X), Y) >? U45(X, Y) U45(X, mark(Y)) >? U45(X, Y) U45(active(X), Y) >? U45(X, Y) U45(X, active(Y)) >? U45(X, Y) U46(mark(X)) >? U46(X) U46(active(X)) >? U46(X) U51(mark(X), Y, Z) >? U51(X, Y, Z) U51(X, mark(Y), Z) >? U51(X, Y, Z) U51(X, Y, mark(Z)) >? U51(X, Y, Z) U51(active(X), Y, Z) >? U51(X, Y, Z) U51(X, active(Y), Z) >? U51(X, Y, Z) U51(X, Y, active(Z)) >? U51(X, Y, Z) U52(mark(X), Y, Z) >? U52(X, Y, Z) U52(X, mark(Y), Z) >? U52(X, Y, Z) U52(X, Y, mark(Z)) >? U52(X, Y, Z) U52(active(X), Y, Z) >? U52(X, Y, Z) U52(X, active(Y), Z) >? U52(X, Y, Z) U52(X, Y, active(Z)) >? U52(X, Y, Z) U53(mark(X), Y, Z) >? U53(X, Y, Z) U53(X, mark(Y), Z) >? U53(X, Y, Z) U53(X, Y, mark(Z)) >? U53(X, Y, Z) U53(active(X), Y, Z) >? U53(X, Y, Z) U53(X, active(Y), Z) >? U53(X, Y, Z) U53(X, Y, active(Z)) >? U53(X, Y, Z) U54(mark(X), Y, Z) >? U54(X, Y, Z) U54(X, mark(Y), Z) >? U54(X, Y, Z) U54(X, Y, mark(Z)) >? U54(X, Y, Z) U54(active(X), Y, Z) >? U54(X, Y, Z) U54(X, active(Y), Z) >? U54(X, Y, Z) U54(X, Y, active(Z)) >? U54(X, Y, Z) U55(mark(X), Y) >? U55(X, Y) U55(X, mark(Y)) >? U55(X, Y) U55(active(X), Y) >? U55(X, Y) U55(X, active(Y)) >? U55(X, Y) U56(mark(X)) >? U56(X) U56(active(X)) >? U56(X) U61(mark(X), Y) >? U61(X, Y) U61(X, mark(Y)) >? U61(X, Y) U61(active(X), Y) >? U61(X, Y) U61(X, active(Y)) >? U61(X, Y) U62(mark(X), Y) >? U62(X, Y) U62(X, mark(Y)) >? U62(X, Y) U62(active(X), Y) >? U62(X, Y) U62(X, active(Y)) >? U62(X, Y) U63(mark(X)) >? U63(X) U63(active(X)) >? U63(X) U71(mark(X), Y, Z) >? U71(X, Y, Z) U71(X, mark(Y), Z) >? U71(X, Y, Z) U71(X, Y, mark(Z)) >? U71(X, Y, Z) U71(active(X), Y, Z) >? U71(X, Y, Z) U71(X, active(Y), Z) >? U71(X, Y, Z) U71(X, Y, active(Z)) >? U71(X, Y, Z) U72(mark(X), Y) >? U72(X, Y) U72(X, mark(Y)) >? U72(X, Y) U72(active(X), Y) >? U72(X, Y) U72(X, active(Y)) >? U72(X, Y) U73(mark(X), Y) >? U73(X, Y) U73(X, mark(Y)) >? U73(X, Y) U73(active(X), Y) >? U73(X, Y) U73(X, active(Y)) >? U73(X, Y) isPal(mark(X)) >? isPal(X) isPal(active(X)) >? isPal(X) U74(mark(X)) >? U74(X) U74(active(X)) >? U74(X) U81(mark(X), Y) >? U81(X, Y) U81(X, mark(Y)) >? U81(X, Y) U81(active(X), Y) >? U81(X, Y) U81(X, active(Y)) >? U81(X, Y) U82(mark(X), Y) >? U82(X, Y) U82(X, mark(Y)) >? U82(X, Y) U82(active(X), Y) >? U82(X, Y) U82(X, active(Y)) >? U82(X, Y) U83(mark(X)) >? U83(X) U83(active(X)) >? U83(X) isNePal(mark(X)) >? isNePal(X) isNePal(active(X)) >? isNePal(X) U91(mark(X), Y) >? U91(X, Y) U91(X, mark(Y)) >? U91(X, Y) U91(active(X), Y) >? U91(X, Y) U91(X, active(Y)) >? U91(X, Y) U92(mark(X)) >? U92(X) U92(active(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 + 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 + 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.y0 active = \y0.3 + 3y0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.2y0 isQid = \y0.2y0 mark = \y0.3 + 3y0 Using this interpretation, the requirements translate to: [[!6220!6220(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[!6220!6220(_x0, _x1)]] [[!6220!6220(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[!6220!6220(_x0, _x1)]] [[U11(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U11(_x0, _x1)]] [[U11(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U11(_x0, _x1)]] [[U11(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U11(_x0, _x1)]] [[U12(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U12(_x0, _x1)]] [[U12(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U12(_x0, _x1)]] [[U12(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U12(_x0, _x1)]] [[isPalListKind(mark(_x0))]] = 6 + 6x0 > 2x0 = [[isPalListKind(_x0)]] [[isPalListKind(active(_x0))]] = 6 + 6x0 > 2x0 = [[isPalListKind(_x0)]] [[U13(mark(_x0))]] = 3 + 3x0 > x0 = [[U13(_x0)]] [[U13(active(_x0))]] = 3 + 3x0 > x0 = [[U13(_x0)]] [[isNeList(mark(_x0))]] = 3 + 3x0 > x0 = [[isNeList(_x0)]] [[isNeList(active(_x0))]] = 3 + 3x0 > x0 = [[isNeList(_x0)]] [[U21(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U21(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U21(_x0, _x1, _x2)]] [[U22(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U22(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U22(_x0, _x1, _x2)]] [[U23(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U23(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U23(_x0, _x1, _x2)]] [[U24(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U24(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U24(_x0, _x1, _x2)]] [[U25(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U25(_x0, _x1)]] [[U25(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U25(_x0, _x1)]] [[U25(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U25(_x0, _x1)]] [[isList(mark(_x0))]] = 3 + 3x0 > x0 = [[isList(_x0)]] [[isList(active(_x0))]] = 3 + 3x0 > x0 = [[isList(_x0)]] [[U26(mark(_x0))]] = 3 + 3x0 > x0 = [[U26(_x0)]] [[U26(active(_x0))]] = 3 + 3x0 > x0 = [[U26(_x0)]] [[U31(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U31(_x0, _x1)]] [[U31(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U31(_x0, _x1)]] [[U31(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U31(_x0, _x1)]] [[U32(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U32(_x0, _x1)]] [[U32(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U32(_x0, _x1)]] [[U32(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U32(_x0, _x1)]] [[U33(mark(_x0))]] = 3 + 3x0 > x0 = [[U33(_x0)]] [[U33(active(_x0))]] = 3 + 3x0 > x0 = [[U33(_x0)]] [[isQid(mark(_x0))]] = 6 + 6x0 > 2x0 = [[isQid(_x0)]] [[isQid(active(_x0))]] = 6 + 6x0 > 2x0 = [[isQid(_x0)]] [[U41(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U41(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U41(_x0, _x1, _x2)]] [[U42(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U42(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U42(_x0, _x1, _x2)]] [[U43(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U43(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U43(_x0, _x1, _x2)]] [[U44(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U44(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U44(_x0, _x1, _x2)]] [[U45(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U45(_x0, _x1)]] [[U45(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U45(_x0, _x1)]] [[U45(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U45(_x0, _x1)]] [[U46(mark(_x0))]] = 3 + 3x0 > x0 = [[U46(_x0)]] [[U46(active(_x0))]] = 3 + 3x0 > x0 = [[U46(_x0)]] [[U51(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U51(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U51(_x0, _x1, _x2)]] [[U52(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U52(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U52(_x0, _x1, _x2)]] [[U53(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U53(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U53(_x0, _x1, _x2)]] [[U54(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U54(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U54(_x0, _x1, _x2)]] [[U55(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U55(_x0, _x1)]] [[U55(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U55(_x0, _x1)]] [[U55(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U55(_x0, _x1)]] [[U56(mark(_x0))]] = 3 + 3x0 > x0 = [[U56(_x0)]] [[U56(active(_x0))]] = 3 + 3x0 > x0 = [[U56(_x0)]] [[U61(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U61(_x0, _x1)]] [[U61(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U61(_x0, _x1)]] [[U61(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U61(_x0, _x1)]] [[U62(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U62(_x0, _x1)]] [[U62(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U62(_x0, _x1)]] [[U62(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U62(_x0, _x1)]] [[U63(mark(_x0))]] = 3 + 3x0 > x0 = [[U63(_x0)]] [[U63(active(_x0))]] = 3 + 3x0 > x0 = [[U63(_x0)]] [[U71(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, mark(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, mark(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(active(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, active(_x1), _x2)]] = 3 + x0 + x2 + 3x1 > x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U71(_x0, _x1, active(_x2))]] = 3 + x0 + x1 + 3x2 > x0 + x1 + x2 = [[U71(_x0, _x1, _x2)]] [[U72(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U72(_x0, _x1)]] [[U72(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U72(_x0, _x1)]] [[U72(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U72(_x0, _x1)]] [[U73(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U73(_x0, _x1)]] [[U73(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U73(_x0, _x1)]] [[U73(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U73(_x0, _x1)]] [[isPal(mark(_x0))]] = 3 + 3x0 > x0 = [[isPal(_x0)]] [[isPal(active(_x0))]] = 3 + 3x0 > x0 = [[isPal(_x0)]] [[U74(mark(_x0))]] = 3 + 3x0 > x0 = [[U74(_x0)]] [[U74(active(_x0))]] = 3 + 3x0 > x0 = [[U74(_x0)]] [[U81(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U81(_x0, _x1)]] [[U81(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U81(_x0, _x1)]] [[U81(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U81(_x0, _x1)]] [[U82(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U82(_x0, _x1)]] [[U82(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U82(_x0, _x1)]] [[U82(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U82(_x0, _x1)]] [[U83(mark(_x0))]] = 3 + 3x0 > x0 = [[U83(_x0)]] [[U83(active(_x0))]] = 3 + 3x0 > x0 = [[U83(_x0)]] [[isNePal(mark(_x0))]] = 3 + 3x0 > x0 = [[isNePal(_x0)]] [[isNePal(active(_x0))]] = 3 + 3x0 > x0 = [[isNePal(_x0)]] [[U91(mark(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, mark(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U91(_x0, _x1)]] [[U91(active(_x0), _x1)]] = 3 + x1 + 3x0 > x0 + x1 = [[U91(_x0, _x1)]] [[U91(_x0, active(_x1))]] = 3 + x0 + 3x1 > x0 + x1 = [[U91(_x0, _x1)]] [[U92(mark(_x0))]] = 3 + 3x0 > x0 = [[U92(_x0)]] [[U92(active(_x0))]] = 3 + 3x0 > x0 = [[U92(_x0)]] We can thus remove the following rules: !6220!6220(mark(X), Y) => !6220!6220(X, Y) !6220!6220(X, mark(Y)) => !6220!6220(X, Y) !6220!6220(active(X), Y) => !6220!6220(X, Y) !6220!6220(X, active(Y)) => !6220!6220(X, Y) U11(mark(X), Y) => U11(X, Y) U11(X, mark(Y)) => U11(X, Y) U11(active(X), Y) => U11(X, Y) U11(X, active(Y)) => U11(X, Y) U12(mark(X), Y) => U12(X, Y) U12(X, mark(Y)) => U12(X, Y) U12(active(X), Y) => U12(X, Y) U12(X, active(Y)) => U12(X, Y) isPalListKind(mark(X)) => isPalListKind(X) isPalListKind(active(X)) => isPalListKind(X) U13(mark(X)) => U13(X) U13(active(X)) => U13(X) isNeList(mark(X)) => isNeList(X) isNeList(active(X)) => isNeList(X) U21(mark(X), Y, Z) => U21(X, Y, Z) U21(X, mark(Y), Z) => U21(X, Y, Z) U21(X, Y, mark(Z)) => U21(X, Y, Z) U21(active(X), Y, Z) => U21(X, Y, Z) U21(X, active(Y), Z) => U21(X, Y, Z) U21(X, Y, active(Z)) => U21(X, Y, Z) U22(mark(X), Y, Z) => U22(X, Y, Z) U22(X, mark(Y), Z) => U22(X, Y, Z) U22(X, Y, mark(Z)) => U22(X, Y, Z) U22(active(X), Y, Z) => U22(X, Y, Z) U22(X, active(Y), Z) => U22(X, Y, Z) U22(X, Y, active(Z)) => U22(X, Y, Z) U23(mark(X), Y, Z) => U23(X, Y, Z) U23(X, mark(Y), Z) => U23(X, Y, Z) U23(X, Y, mark(Z)) => U23(X, Y, Z) U23(active(X), Y, Z) => U23(X, Y, Z) U23(X, active(Y), Z) => U23(X, Y, Z) U23(X, Y, active(Z)) => U23(X, Y, Z) U24(mark(X), Y, Z) => U24(X, Y, Z) U24(X, mark(Y), Z) => U24(X, Y, Z) U24(X, Y, mark(Z)) => U24(X, Y, Z) U24(active(X), Y, Z) => U24(X, Y, Z) U24(X, active(Y), Z) => U24(X, Y, Z) U24(X, Y, active(Z)) => U24(X, Y, Z) U25(mark(X), Y) => U25(X, Y) U25(X, mark(Y)) => U25(X, Y) U25(active(X), Y) => U25(X, Y) U25(X, active(Y)) => U25(X, Y) isList(mark(X)) => isList(X) isList(active(X)) => isList(X) U26(mark(X)) => U26(X) U26(active(X)) => U26(X) U31(mark(X), Y) => U31(X, Y) U31(X, mark(Y)) => U31(X, Y) U31(active(X), Y) => U31(X, Y) U31(X, active(Y)) => U31(X, Y) U32(mark(X), Y) => U32(X, Y) U32(X, mark(Y)) => U32(X, Y) U32(active(X), Y) => U32(X, Y) U32(X, active(Y)) => U32(X, Y) U33(mark(X)) => U33(X) U33(active(X)) => U33(X) isQid(mark(X)) => isQid(X) isQid(active(X)) => isQid(X) U41(mark(X), Y, Z) => U41(X, Y, Z) U41(X, mark(Y), Z) => U41(X, Y, Z) U41(X, Y, mark(Z)) => U41(X, Y, Z) U41(active(X), Y, Z) => U41(X, Y, Z) U41(X, active(Y), Z) => U41(X, Y, Z) U41(X, Y, active(Z)) => U41(X, Y, Z) U42(mark(X), Y, Z) => U42(X, Y, Z) U42(X, mark(Y), Z) => U42(X, Y, Z) U42(X, Y, mark(Z)) => U42(X, Y, Z) U42(active(X), Y, Z) => U42(X, Y, Z) U42(X, active(Y), Z) => U42(X, Y, Z) U42(X, Y, active(Z)) => U42(X, Y, Z) U43(mark(X), Y, Z) => U43(X, Y, Z) U43(X, mark(Y), Z) => U43(X, Y, Z) U43(X, Y, mark(Z)) => U43(X, Y, Z) U43(active(X), Y, Z) => U43(X, Y, Z) U43(X, active(Y), Z) => U43(X, Y, Z) U43(X, Y, active(Z)) => U43(X, Y, Z) U44(mark(X), Y, Z) => U44(X, Y, Z) U44(X, mark(Y), Z) => U44(X, Y, Z) U44(X, Y, mark(Z)) => U44(X, Y, Z) U44(active(X), Y, Z) => U44(X, Y, Z) U44(X, active(Y), Z) => U44(X, Y, Z) U44(X, Y, active(Z)) => U44(X, Y, Z) U45(mark(X), Y) => U45(X, Y) U45(X, mark(Y)) => U45(X, Y) U45(active(X), Y) => U45(X, Y) U45(X, active(Y)) => U45(X, Y) U46(mark(X)) => U46(X) U46(active(X)) => U46(X) U51(mark(X), Y, Z) => U51(X, Y, Z) U51(X, mark(Y), Z) => U51(X, Y, Z) U51(X, Y, mark(Z)) => U51(X, Y, Z) U51(active(X), Y, Z) => U51(X, Y, Z) U51(X, active(Y), Z) => U51(X, Y, Z) U51(X, Y, active(Z)) => U51(X, Y, Z) U52(mark(X), Y, Z) => U52(X, Y, Z) U52(X, mark(Y), Z) => U52(X, Y, Z) U52(X, Y, mark(Z)) => U52(X, Y, Z) U52(active(X), Y, Z) => U52(X, Y, Z) U52(X, active(Y), Z) => U52(X, Y, Z) U52(X, Y, active(Z)) => U52(X, Y, Z) U53(mark(X), Y, Z) => U53(X, Y, Z) U53(X, mark(Y), Z) => U53(X, Y, Z) U53(X, Y, mark(Z)) => U53(X, Y, Z) U53(active(X), Y, Z) => U53(X, Y, Z) U53(X, active(Y), Z) => U53(X, Y, Z) U53(X, Y, active(Z)) => U53(X, Y, Z) U54(mark(X), Y, Z) => U54(X, Y, Z) U54(X, mark(Y), Z) => U54(X, Y, Z) U54(X, Y, mark(Z)) => U54(X, Y, Z) U54(active(X), Y, Z) => U54(X, Y, Z) U54(X, active(Y), Z) => U54(X, Y, Z) U54(X, Y, active(Z)) => U54(X, Y, Z) U55(mark(X), Y) => U55(X, Y) U55(X, mark(Y)) => U55(X, Y) U55(active(X), Y) => U55(X, Y) U55(X, active(Y)) => U55(X, Y) U56(mark(X)) => U56(X) U56(active(X)) => U56(X) U61(mark(X), Y) => U61(X, Y) U61(X, mark(Y)) => U61(X, Y) U61(active(X), Y) => U61(X, Y) U61(X, active(Y)) => U61(X, Y) U62(mark(X), Y) => U62(X, Y) U62(X, mark(Y)) => U62(X, Y) U62(active(X), Y) => U62(X, Y) U62(X, active(Y)) => U62(X, Y) U63(mark(X)) => U63(X) U63(active(X)) => U63(X) U71(mark(X), Y, Z) => U71(X, Y, Z) U71(X, mark(Y), Z) => U71(X, Y, Z) U71(X, Y, mark(Z)) => U71(X, Y, Z) U71(active(X), Y, Z) => U71(X, Y, Z) U71(X, active(Y), Z) => U71(X, Y, Z) U71(X, Y, active(Z)) => U71(X, Y, Z) U72(mark(X), Y) => U72(X, Y) U72(X, mark(Y)) => U72(X, Y) U72(active(X), Y) => U72(X, Y) U72(X, active(Y)) => U72(X, Y) U73(mark(X), Y) => U73(X, Y) U73(X, mark(Y)) => U73(X, Y) U73(active(X), Y) => U73(X, Y) U73(X, active(Y)) => U73(X, Y) isPal(mark(X)) => isPal(X) isPal(active(X)) => isPal(X) U74(mark(X)) => U74(X) U74(active(X)) => U74(X) U81(mark(X), Y) => U81(X, Y) U81(X, mark(Y)) => U81(X, Y) U81(active(X), Y) => U81(X, Y) U81(X, active(Y)) => U81(X, Y) U82(mark(X), Y) => U82(X, Y) U82(X, mark(Y)) => U82(X, Y) U82(active(X), Y) => U82(X, Y) U82(X, active(Y)) => U82(X, Y) U83(mark(X)) => U83(X) U83(active(X)) => U83(X) isNePal(mark(X)) => isNePal(X) isNePal(active(X)) => isNePal(X) U91(mark(X), Y) => U91(X, Y) U91(X, mark(Y)) => U91(X, Y) U91(active(X), Y) => U91(X, Y) U91(X, active(Y)) => U91(X, Y) U92(mark(X)) => U92(X) U92(active(X)) => U92(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.