/export/starexec/sandbox/solver/bin/starexec_run_FirstOrder /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/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 ok : [o] --> o proper : [o] --> o top : [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) active(!6220!6220(X, Y)) => !6220!6220(active(X), Y) active(!6220!6220(X, Y)) => !6220!6220(X, active(Y)) active(U11(X, Y)) => U11(active(X), Y) active(U12(X, Y)) => U12(active(X), Y) active(U13(X)) => U13(active(X)) active(U21(X, Y, Z)) => U21(active(X), Y, Z) active(U22(X, Y, Z)) => U22(active(X), Y, Z) active(U23(X, Y, Z)) => U23(active(X), Y, Z) active(U24(X, Y, Z)) => U24(active(X), Y, Z) active(U25(X, Y)) => U25(active(X), Y) active(U26(X)) => U26(active(X)) active(U31(X, Y)) => U31(active(X), Y) active(U32(X, Y)) => U32(active(X), Y) active(U33(X)) => U33(active(X)) active(U41(X, Y, Z)) => U41(active(X), Y, Z) active(U42(X, Y, Z)) => U42(active(X), Y, Z) active(U43(X, Y, Z)) => U43(active(X), Y, Z) active(U44(X, Y, Z)) => U44(active(X), Y, Z) active(U45(X, Y)) => U45(active(X), Y) active(U46(X)) => U46(active(X)) active(U51(X, Y, Z)) => U51(active(X), Y, Z) active(U52(X, Y, Z)) => U52(active(X), Y, Z) active(U53(X, Y, Z)) => U53(active(X), Y, Z) active(U54(X, Y, Z)) => U54(active(X), Y, Z) active(U55(X, Y)) => U55(active(X), Y) active(U56(X)) => U56(active(X)) active(U61(X, Y)) => U61(active(X), Y) active(U62(X, Y)) => U62(active(X), Y) active(U63(X)) => U63(active(X)) active(U71(X, Y, Z)) => U71(active(X), Y, Z) active(U72(X, Y)) => U72(active(X), Y) active(U73(X, Y)) => U73(active(X), Y) active(U74(X)) => U74(active(X)) active(U81(X, Y)) => U81(active(X), Y) active(U82(X, Y)) => U82(active(X), Y) active(U83(X)) => U83(active(X)) active(U91(X, Y)) => U91(active(X), Y) active(U92(X)) => U92(active(X)) !6220!6220(mark(X), Y) => mark(!6220!6220(X, Y)) !6220!6220(X, mark(Y)) => mark(!6220!6220(X, Y)) U11(mark(X), Y) => mark(U11(X, Y)) U12(mark(X), Y) => mark(U12(X, Y)) U13(mark(X)) => mark(U13(X)) U21(mark(X), Y, Z) => mark(U21(X, Y, Z)) U22(mark(X), Y, Z) => mark(U22(X, Y, Z)) U23(mark(X), Y, Z) => mark(U23(X, Y, Z)) U24(mark(X), Y, Z) => mark(U24(X, Y, Z)) U25(mark(X), Y) => mark(U25(X, Y)) U26(mark(X)) => mark(U26(X)) U31(mark(X), Y) => mark(U31(X, Y)) U32(mark(X), Y) => mark(U32(X, Y)) U33(mark(X)) => mark(U33(X)) U41(mark(X), Y, Z) => mark(U41(X, Y, Z)) U42(mark(X), Y, Z) => mark(U42(X, Y, Z)) U43(mark(X), Y, Z) => mark(U43(X, Y, Z)) U44(mark(X), Y, Z) => mark(U44(X, Y, Z)) U45(mark(X), Y) => mark(U45(X, Y)) U46(mark(X)) => mark(U46(X)) U51(mark(X), Y, Z) => mark(U51(X, Y, Z)) U52(mark(X), Y, Z) => mark(U52(X, Y, Z)) U53(mark(X), Y, Z) => mark(U53(X, Y, Z)) U54(mark(X), Y, Z) => mark(U54(X, Y, Z)) U55(mark(X), Y) => mark(U55(X, Y)) U56(mark(X)) => mark(U56(X)) U61(mark(X), Y) => mark(U61(X, Y)) U62(mark(X), Y) => mark(U62(X, Y)) U63(mark(X)) => mark(U63(X)) U71(mark(X), Y, Z) => mark(U71(X, Y, Z)) U72(mark(X), Y) => mark(U72(X, Y)) U73(mark(X), Y) => mark(U73(X, Y)) U74(mark(X)) => mark(U74(X)) U81(mark(X), Y) => mark(U81(X, Y)) U82(mark(X), Y) => mark(U82(X, Y)) U83(mark(X)) => mark(U83(X)) U91(mark(X), Y) => mark(U91(X, Y)) U92(mark(X)) => mark(U92(X)) proper(!6220!6220(X, Y)) => !6220!6220(proper(X), proper(Y)) proper(nil) => ok(nil) proper(U11(X, Y)) => U11(proper(X), proper(Y)) proper(tt) => ok(tt) proper(U12(X, Y)) => U12(proper(X), proper(Y)) proper(isPalListKind(X)) => isPalListKind(proper(X)) proper(U13(X)) => U13(proper(X)) proper(isNeList(X)) => isNeList(proper(X)) proper(U21(X, Y, Z)) => U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) => U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) => U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) => U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) => U25(proper(X), proper(Y)) proper(isList(X)) => isList(proper(X)) proper(U26(X)) => U26(proper(X)) proper(U31(X, Y)) => U31(proper(X), proper(Y)) proper(U32(X, Y)) => U32(proper(X), proper(Y)) proper(U33(X)) => U33(proper(X)) proper(isQid(X)) => isQid(proper(X)) proper(U41(X, Y, Z)) => U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) => U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) => U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) => U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) => U45(proper(X), proper(Y)) proper(U46(X)) => U46(proper(X)) proper(U51(X, Y, Z)) => U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) => U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) => U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) => U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) => U55(proper(X), proper(Y)) proper(U56(X)) => U56(proper(X)) proper(U61(X, Y)) => U61(proper(X), proper(Y)) proper(U62(X, Y)) => U62(proper(X), proper(Y)) proper(U63(X)) => U63(proper(X)) proper(U71(X, Y, Z)) => U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) => U72(proper(X), proper(Y)) proper(U73(X, Y)) => U73(proper(X), proper(Y)) proper(isPal(X)) => isPal(proper(X)) proper(U74(X)) => U74(proper(X)) proper(U81(X, Y)) => U81(proper(X), proper(Y)) proper(U82(X, Y)) => U82(proper(X), proper(Y)) proper(U83(X)) => U83(proper(X)) proper(isNePal(X)) => isNePal(proper(X)) proper(U91(X, Y)) => U91(proper(X), proper(Y)) proper(U92(X)) => U92(proper(X)) proper(a) => ok(a) proper(e) => ok(e) proper(i) => ok(i) proper(o) => ok(o) proper(u) => ok(u) !6220!6220(ok(X), ok(Y)) => ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) => ok(U11(X, Y)) U12(ok(X), ok(Y)) => ok(U12(X, Y)) isPalListKind(ok(X)) => ok(isPalListKind(X)) U13(ok(X)) => ok(U13(X)) isNeList(ok(X)) => ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) => ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) => ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) => ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) => ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) => ok(U25(X, Y)) isList(ok(X)) => ok(isList(X)) U26(ok(X)) => ok(U26(X)) U31(ok(X), ok(Y)) => ok(U31(X, Y)) U32(ok(X), ok(Y)) => ok(U32(X, Y)) U33(ok(X)) => ok(U33(X)) isQid(ok(X)) => ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) => ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) => ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) => ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) => ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) => ok(U45(X, Y)) U46(ok(X)) => ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) => ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) => ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) => ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) => ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) => ok(U55(X, Y)) U56(ok(X)) => ok(U56(X)) U61(ok(X), ok(Y)) => ok(U61(X, Y)) U62(ok(X), ok(Y)) => ok(U62(X, Y)) U63(ok(X)) => ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) => ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) => ok(U72(X, Y)) U73(ok(X), ok(Y)) => ok(U73(X, Y)) isPal(ok(X)) => ok(isPal(X)) U74(ok(X)) => ok(U74(X)) U81(ok(X), ok(Y)) => ok(U81(X, Y)) U82(ok(X), ok(Y)) => ok(U82(X, Y)) U83(ok(X)) => ok(U83(X)) isNePal(ok(X)) => ok(isNePal(X)) U91(ok(X), ok(Y)) => ok(U91(X, Y)) U92(ok(X)) => ok(U92(X)) top(mark(X)) => top(proper(X)) top(ok(X)) => top(active(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) active(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(mark(X), Y) >? mark(!6220!6220(X, Y)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U11(mark(X), Y) >? mark(U11(X, Y)) U12(mark(X), Y) >? mark(U12(X, Y)) U13(mark(X)) >? mark(U13(X)) U21(mark(X), Y, Z) >? mark(U21(X, Y, Z)) U22(mark(X), Y, Z) >? mark(U22(X, Y, Z)) U23(mark(X), Y, Z) >? mark(U23(X, Y, Z)) U24(mark(X), Y, Z) >? mark(U24(X, Y, Z)) U25(mark(X), Y) >? mark(U25(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U32(mark(X), Y) >? mark(U32(X, Y)) U33(mark(X)) >? mark(U33(X)) U41(mark(X), Y, Z) >? mark(U41(X, Y, Z)) U42(mark(X), Y, Z) >? mark(U42(X, Y, Z)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U44(mark(X), Y, Z) >? mark(U44(X, Y, Z)) U45(mark(X), Y) >? mark(U45(X, Y)) U46(mark(X)) >? mark(U46(X)) U51(mark(X), Y, Z) >? mark(U51(X, Y, Z)) U52(mark(X), Y, Z) >? mark(U52(X, Y, Z)) U53(mark(X), Y, Z) >? mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U55(mark(X), Y) >? mark(U55(X, Y)) U56(mark(X)) >? mark(U56(X)) U61(mark(X), Y) >? mark(U61(X, Y)) U62(mark(X), Y) >? mark(U62(X, Y)) U63(mark(X)) >? mark(U63(X)) U71(mark(X), Y, Z) >? mark(U71(X, Y, Z)) U72(mark(X), Y) >? mark(U72(X, Y)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U81(mark(X), Y) >? mark(U81(X, Y)) U82(mark(X), Y) >? mark(U82(X, Y)) U83(mark(X)) >? mark(U83(X)) U91(mark(X), Y) >? mark(U91(X, Y)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(mark(X)) >? top(proper(X)) top(ok(X)) >? top(active(X)) about to try horpo We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[U12(x_1, x_2)]] = U12(x_2, x_1) [[U21(x_1, x_2, x_3)]] = U21(x_3, x_1, x_2) [[U82(x_1, x_2)]] = U82(x_2, x_1) [[a]] = _|_ [[active(x_1)]] = x_1 [[o]] = _|_ [[ok(x_1)]] = x_1 [[proper(x_1)]] = x_1 [[tt]] = _|_ [[u]] = _|_ We choose Lex = {!6220!6220, U12, U21, U82} and Mul = {U11, U13, U22, U23, U24, U25, U26, U31, U32, U33, U41, U42, U43, U44, U45, U46, U51, U52, U53, U54, U55, U56, U61, U62, U63, U71, U72, U73, U74, U81, U83, U91, U92, e, i, isList, isNeList, isNePal, isPal, isPalListKind, isQid, mark, nil, top}, and the following precedence: !6220!6220 > U41 > U91 > e > U42 > U43 > U44 > U51 > U52 > i > U21 > U45 > U22 > U53 > U71 > U72 > U92 > isPal > U81 > U82 > isNePal > U54 > U55 > U61 > U23 > U24 > U25 = isList > U11 > U12 > U13 > isNeList > U31 > U32 > U33 > U62 > U73 > isPalListKind > isQid > U56 > nil > U26 = U46 = U63 = U74 = U83 = mark > top 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) >= mark(!6220!6220(X, !6220!6220(Y, Z))) !6220!6220(X, nil) >= mark(X) !6220!6220(nil, X) > mark(X) U11(_|_, X) >= mark(U12(isPalListKind(X), X)) U12(_|_, X) >= mark(U13(isNeList(X))) U13(_|_) > mark(_|_) U21(_|_, X, Y) >= mark(U22(isPalListKind(X), X, Y)) U22(_|_, X, Y) > mark(U23(isPalListKind(Y), X, Y)) U23(_|_, X, Y) > mark(U24(isPalListKind(Y), X, Y)) U24(_|_, X, Y) >= mark(U25(isList(X), Y)) U25(_|_, X) >= mark(U26(isList(X))) U26(_|_) >= mark(_|_) U31(_|_, X) >= mark(U32(isPalListKind(X), X)) U32(_|_, X) >= mark(U33(isQid(X))) U33(_|_) >= mark(_|_) U41(_|_, X, Y) > mark(U42(isPalListKind(X), X, Y)) U42(_|_, X, Y) > mark(U43(isPalListKind(Y), X, Y)) U43(_|_, X, Y) > mark(U44(isPalListKind(Y), X, Y)) U44(_|_, X, Y) > mark(U45(isList(X), Y)) U45(_|_, X) >= mark(U46(isNeList(X))) U46(_|_) >= mark(_|_) U51(_|_, X, Y) > mark(U52(isPalListKind(X), X, Y)) U52(_|_, X, Y) > mark(U53(isPalListKind(Y), X, Y)) U53(_|_, X, Y) >= mark(U54(isPalListKind(Y), X, Y)) U54(_|_, X, Y) >= mark(U55(isNeList(X), Y)) U55(_|_, X) > mark(U56(isList(X))) U56(_|_) > mark(_|_) U61(_|_, X) >= mark(U62(isPalListKind(X), X)) U62(_|_, X) > mark(U63(isQid(X))) U63(_|_) >= mark(_|_) U71(_|_, X, Y) >= mark(U72(isPalListKind(X), Y)) U72(_|_, X) >= mark(U73(isPal(X), X)) U73(_|_, X) >= mark(U74(isPalListKind(X))) U74(_|_) >= mark(_|_) U81(_|_, X) >= mark(U82(isPalListKind(X), X)) U82(_|_, X) >= mark(U83(isNePal(X))) U83(_|_) >= mark(_|_) U91(_|_, X) >= mark(U92(isPalListKind(X))) U92(_|_) > mark(_|_) isList(X) >= mark(U11(isPalListKind(X), X)) isList(nil) >= mark(_|_) isList(!6220!6220(X, Y)) > mark(U21(isPalListKind(X), X, Y)) isNeList(X) > mark(U31(isPalListKind(X), X)) isNeList(!6220!6220(X, Y)) > mark(U41(isPalListKind(X), X, Y)) isNeList(!6220!6220(X, Y)) >= mark(U51(isPalListKind(X), X, Y)) isNePal(X) >= mark(U61(isPalListKind(X), X)) isNePal(!6220!6220(X, !6220!6220(Y, X))) >= mark(U71(isQid(X), X, Y)) isPal(X) >= mark(U81(isPalListKind(X), X)) isPal(nil) >= mark(_|_) isPalListKind(_|_) >= mark(_|_) isPalListKind(e) >= mark(_|_) isPalListKind(i) > mark(_|_) isPalListKind(nil) > mark(_|_) isPalListKind(_|_) >= mark(_|_) isPalListKind(_|_) > mark(_|_) isPalListKind(!6220!6220(X, Y)) >= mark(U91(isPalListKind(X), Y)) isQid(_|_) >= mark(_|_) isQid(e) > mark(_|_) isQid(i) >= mark(_|_) isQid(_|_) > mark(_|_) isQid(_|_) >= mark(_|_) !6220!6220(X, Y) >= !6220!6220(X, Y) !6220!6220(X, Y) >= !6220!6220(X, Y) U11(X, Y) >= U11(X, Y) U12(X, Y) >= U12(X, Y) U13(X) >= U13(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) U26(X) >= U26(X) U31(X, Y) >= U31(X, Y) U32(X, Y) >= U32(X, Y) U33(X) >= U33(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) U46(X) >= U46(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) U56(X) >= U56(X) U61(X, Y) >= U61(X, Y) U62(X, Y) >= U62(X, Y) U63(X) >= U63(X) U71(X, Y, Z) >= U71(X, Y, Z) U72(X, Y) >= U72(X, Y) U73(X, Y) >= U73(X, Y) U74(X) >= U74(X) U81(X, Y) >= U81(X, Y) U82(X, Y) >= U82(X, Y) U83(X) >= U83(X) U91(X, Y) >= U91(X, Y) U92(X) >= U92(X) !6220!6220(mark(X), Y) > mark(!6220!6220(X, Y)) !6220!6220(X, mark(Y)) >= mark(!6220!6220(X, Y)) U11(mark(X), Y) > mark(U11(X, Y)) U12(mark(X), Y) >= mark(U12(X, Y)) U13(mark(X)) >= mark(U13(X)) U21(mark(X), Y, Z) > mark(U21(X, Y, Z)) U22(mark(X), Y, Z) >= mark(U22(X, Y, Z)) U23(mark(X), Y, Z) > mark(U23(X, Y, Z)) U24(mark(X), Y, Z) >= mark(U24(X, Y, Z)) U25(mark(X), Y) >= mark(U25(X, Y)) U26(mark(X)) >= mark(U26(X)) U31(mark(X), Y) >= mark(U31(X, Y)) U32(mark(X), Y) > mark(U32(X, Y)) U33(mark(X)) > mark(U33(X)) U41(mark(X), Y, Z) > mark(U41(X, Y, Z)) U42(mark(X), Y, Z) >= mark(U42(X, Y, Z)) U43(mark(X), Y, Z) >= mark(U43(X, Y, Z)) U44(mark(X), Y, Z) > mark(U44(X, Y, Z)) U45(mark(X), Y) > mark(U45(X, Y)) U46(mark(X)) >= mark(U46(X)) U51(mark(X), Y, Z) > mark(U51(X, Y, Z)) U52(mark(X), Y, Z) > mark(U52(X, Y, Z)) U53(mark(X), Y, Z) >= mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >= mark(U54(X, Y, Z)) U55(mark(X), Y) > mark(U55(X, Y)) U56(mark(X)) >= mark(U56(X)) U61(mark(X), Y) > mark(U61(X, Y)) U62(mark(X), Y) >= mark(U62(X, Y)) U63(mark(X)) >= mark(U63(X)) U71(mark(X), Y, Z) >= mark(U71(X, Y, Z)) U72(mark(X), Y) >= mark(U72(X, Y)) U73(mark(X), Y) >= mark(U73(X, Y)) U74(mark(X)) >= mark(U74(X)) U81(mark(X), Y) >= mark(U81(X, Y)) U82(mark(X), Y) >= mark(U82(X, Y)) U83(mark(X)) >= mark(U83(X)) U91(mark(X), Y) > mark(U91(X, Y)) U92(mark(X)) >= mark(U92(X)) !6220!6220(X, Y) >= !6220!6220(X, Y) nil >= nil U11(X, Y) >= U11(X, Y) _|_ >= _|_ U12(X, Y) >= U12(X, Y) isPalListKind(X) >= isPalListKind(X) U13(X) >= U13(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) U26(X) >= U26(X) U31(X, Y) >= U31(X, Y) U32(X, Y) >= U32(X, Y) U33(X) >= U33(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) U46(X) >= U46(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) U56(X) >= U56(X) U61(X, Y) >= U61(X, Y) U62(X, Y) >= U62(X, Y) U63(X) >= U63(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) U74(X) >= U74(X) U81(X, Y) >= U81(X, Y) U82(X, Y) >= U82(X, Y) U83(X) >= U83(X) isNePal(X) >= isNePal(X) U91(X, Y) >= U91(X, Y) U92(X) >= U92(X) _|_ >= _|_ e >= e i >= i _|_ >= _|_ _|_ >= _|_ !6220!6220(X, Y) >= !6220!6220(X, Y) U11(X, Y) >= U11(X, Y) U12(X, Y) >= U12(X, Y) isPalListKind(X) >= isPalListKind(X) U13(X) >= U13(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) U26(X) >= U26(X) U31(X, Y) >= U31(X, Y) U32(X, Y) >= U32(X, Y) U33(X) >= U33(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) U46(X) >= U46(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) U56(X) >= U56(X) U61(X, Y) >= U61(X, Y) U62(X, Y) >= U62(X, Y) U63(X) >= U63(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) U74(X) >= U74(X) U81(X, Y) >= U81(X, Y) U82(X, Y) >= U82(X, Y) U83(X) >= U83(X) isNePal(X) >= isNePal(X) U91(X, Y) >= U91(X, Y) U92(X) >= U92(X) top(mark(X)) >= top(X) top(X) >= top(X) With these choices, we have: 1] !6220!6220(!6220!6220(X, Y), Z) >= mark(!6220!6220(X, !6220!6220(Y, Z))) because [2], by (Star) 2] !6220!6220*(!6220!6220(X, Y), Z) >= mark(!6220!6220(X, !6220!6220(Y, Z))) because !6220!6220 > mark and [3], by (Copy) 3] !6220!6220*(!6220!6220(X, Y), Z) >= !6220!6220(X, !6220!6220(Y, Z)) because [4], [7] and [9], by (Stat) 4] !6220!6220(X, Y) > X because [5], by definition 5] !6220!6220*(X, Y) >= X because [6], by (Select) 6] X >= X by (Meta) 7] !6220!6220*(!6220!6220(X, Y), Z) >= X because [8], by (Select) 8] !6220!6220(X, Y) >= X because [5], by (Star) 9] !6220!6220*(!6220!6220(X, Y), Z) >= !6220!6220(Y, Z) because [10], [13] and [15], by (Stat) 10] !6220!6220(X, Y) > Y because [11], by definition 11] !6220!6220*(X, Y) >= Y because [12], by (Select) 12] Y >= Y by (Meta) 13] !6220!6220*(!6220!6220(X, Y), Z) >= Y because [14], by (Select) 14] !6220!6220(X, Y) >= Y because [11], by (Star) 15] !6220!6220*(!6220!6220(X, Y), Z) >= Z because [16], by (Select) 16] Z >= Z by (Meta) 17] !6220!6220(X, nil) >= mark(X) because [18], by (Star) 18] !6220!6220*(X, nil) >= mark(X) because !6220!6220 > mark and [19], by (Copy) 19] !6220!6220*(X, nil) >= X because [6], by (Select) 20] !6220!6220(nil, X) > mark(X) because [21], by definition 21] !6220!6220*(nil, X) >= mark(X) because !6220!6220 > mark and [22], by (Copy) 22] !6220!6220*(nil, X) >= X because [6], by (Select) 23] U11(_|_, X) >= mark(U12(isPalListKind(X), X)) because [24], by (Star) 24] U11*(_|_, X) >= mark(U12(isPalListKind(X), X)) because U11 > mark and [25], by (Copy) 25] U11*(_|_, X) >= U12(isPalListKind(X), X) because U11 > U12, [26] and [27], by (Copy) 26] U11*(_|_, X) >= isPalListKind(X) because U11 > isPalListKind and [27], by (Copy) 27] U11*(_|_, X) >= X because [28], by (Select) 28] X >= X by (Meta) 29] U12(_|_, X) >= mark(U13(isNeList(X))) because [30], by (Star) 30] U12*(_|_, X) >= mark(U13(isNeList(X))) because U12 > mark and [31], by (Copy) 31] U12*(_|_, X) >= U13(isNeList(X)) because U12 > U13 and [32], by (Copy) 32] U12*(_|_, X) >= isNeList(X) because U12 > isNeList and [33], by (Copy) 33] U12*(_|_, X) >= X because [28], by (Select) 34] U13(_|_) > mark(_|_) because [35], by definition 35] U13*(_|_) >= mark(_|_) because U13 > mark and [36], by (Copy) 36] U13*(_|_) >= _|_ by (Bot) 37] U21(_|_, X, Y) >= mark(U22(isPalListKind(X), X, Y)) because [38], by (Star) 38] U21*(_|_, X, Y) >= mark(U22(isPalListKind(X), X, Y)) because U21 > mark and [39], by (Copy) 39] U21*(_|_, X, Y) >= U22(isPalListKind(X), X, Y) because U21 > U22, [40], [41] and [43], by (Copy) 40] U21*(_|_, X, Y) >= isPalListKind(X) because U21 > isPalListKind and [41], by (Copy) 41] U21*(_|_, X, Y) >= X because [42], by (Select) 42] X >= X by (Meta) 43] U21*(_|_, X, Y) >= Y because [44], by (Select) 44] Y >= Y by (Meta) 45] U22(_|_, X, Y) > mark(U23(isPalListKind(Y), X, Y)) because [46], by definition 46] U22*(_|_, X, Y) >= mark(U23(isPalListKind(Y), X, Y)) because U22 > mark and [47], by (Copy) 47] U22*(_|_, X, Y) >= U23(isPalListKind(Y), X, Y) because U22 > U23, [48], [50] and [49], by (Copy) 48] U22*(_|_, X, Y) >= isPalListKind(Y) because U22 > isPalListKind and [49], by (Copy) 49] U22*(_|_, X, Y) >= Y because [44], by (Select) 50] U22*(_|_, X, Y) >= X because [42], by (Select) 51] U23(_|_, X, Y) > mark(U24(isPalListKind(Y), X, Y)) because [52], by definition 52] U23*(_|_, X, Y) >= mark(U24(isPalListKind(Y), X, Y)) because U23 > mark and [53], by (Copy) 53] U23*(_|_, X, Y) >= U24(isPalListKind(Y), X, Y) because U23 > U24, [54], [56] and [55], by (Copy) 54] U23*(_|_, X, Y) >= isPalListKind(Y) because U23 > isPalListKind and [55], by (Copy) 55] U23*(_|_, X, Y) >= Y because [44], by (Select) 56] U23*(_|_, X, Y) >= X because [42], by (Select) 57] U24(_|_, X, Y) >= mark(U25(isList(X), Y)) because [58], by (Star) 58] U24*(_|_, X, Y) >= mark(U25(isList(X), Y)) because U24 > mark and [59], by (Copy) 59] U24*(_|_, X, Y) >= U25(isList(X), Y) because U24 > U25, [60] and [62], by (Copy) 60] U24*(_|_, X, Y) >= isList(X) because U24 > isList and [61], by (Copy) 61] U24*(_|_, X, Y) >= X because [42], by (Select) 62] U24*(_|_, X, Y) >= Y because [44], by (Select) 63] U25(_|_, X) >= mark(U26(isList(X))) because [64], by (Star) 64] U25*(_|_, X) >= mark(U26(isList(X))) because U25 > mark and [65], by (Copy) 65] U25*(_|_, X) >= U26(isList(X)) because U25 > U26 and [66], by (Copy) 66] U25*(_|_, X) >= isList(X) because U25 = isList, U25 in Mul and [67], by (Stat) 67] X >= X by (Meta) 68] U26(_|_) >= mark(_|_) because U26 = mark, U26 in Mul and [69], by (Fun) 69] _|_ >= _|_ by (Bot) 70] U31(_|_, X) >= mark(U32(isPalListKind(X), X)) because [71], by (Star) 71] U31*(_|_, X) >= mark(U32(isPalListKind(X), X)) because U31 > mark and [72], by (Copy) 72] U31*(_|_, X) >= U32(isPalListKind(X), X) because U31 > U32, [73] and [74], by (Copy) 73] U31*(_|_, X) >= isPalListKind(X) because U31 > isPalListKind and [74], by (Copy) 74] U31*(_|_, X) >= X because [28], by (Select) 75] U32(_|_, X) >= mark(U33(isQid(X))) because [76], by (Star) 76] U32*(_|_, X) >= mark(U33(isQid(X))) because U32 > mark and [77], by (Copy) 77] U32*(_|_, X) >= U33(isQid(X)) because U32 > U33 and [78], by (Copy) 78] U32*(_|_, X) >= isQid(X) because U32 > isQid and [79], by (Copy) 79] U32*(_|_, X) >= X because [28], by (Select) 80] U33(_|_) >= mark(_|_) because [81], by (Star) 81] U33*(_|_) >= mark(_|_) because U33 > mark and [82], by (Copy) 82] U33*(_|_) >= _|_ by (Bot) 83] U41(_|_, X, Y) > mark(U42(isPalListKind(X), X, Y)) because [84], by definition 84] U41*(_|_, X, Y) >= mark(U42(isPalListKind(X), X, Y)) because U41 > mark and [85], by (Copy) 85] U41*(_|_, X, Y) >= U42(isPalListKind(X), X, Y) because U41 > U42, [86], [87] and [88], by (Copy) 86] U41*(_|_, X, Y) >= isPalListKind(X) because U41 > isPalListKind and [87], by (Copy) 87] U41*(_|_, X, Y) >= X because [42], by (Select) 88] U41*(_|_, X, Y) >= Y because [67], by (Select) 89] U42(_|_, X, Y) > mark(U43(isPalListKind(Y), X, Y)) because [90], by definition 90] U42*(_|_, X, Y) >= mark(U43(isPalListKind(Y), X, Y)) because U42 > mark and [91], by (Copy) 91] U42*(_|_, X, Y) >= U43(isPalListKind(Y), X, Y) because U42 > U43, [92], [94] and [93], by (Copy) 92] U42*(_|_, X, Y) >= isPalListKind(Y) because U42 > isPalListKind and [93], by (Copy) 93] U42*(_|_, X, Y) >= Y because [67], by (Select) 94] U42*(_|_, X, Y) >= X because [42], by (Select) 95] U43(_|_, X, Y) > mark(U44(isPalListKind(Y), X, Y)) because [96], by definition 96] U43*(_|_, X, Y) >= mark(U44(isPalListKind(Y), X, Y)) because U43 > mark and [97], by (Copy) 97] U43*(_|_, X, Y) >= U44(isPalListKind(Y), X, Y) because U43 > U44, [98], [100] and [99], by (Copy) 98] U43*(_|_, X, Y) >= isPalListKind(Y) because U43 > isPalListKind and [99], by (Copy) 99] U43*(_|_, X, Y) >= Y because [67], by (Select) 100] U43*(_|_, X, Y) >= X because [42], by (Select) 101] U44(_|_, X, Y) > mark(U45(isList(X), Y)) because [102], by definition 102] U44*(_|_, X, Y) >= mark(U45(isList(X), Y)) because U44 > mark and [103], by (Copy) 103] U44*(_|_, X, Y) >= U45(isList(X), Y) because U44 > U45, [104] and [106], by (Copy) 104] U44*(_|_, X, Y) >= isList(X) because U44 > isList and [105], by (Copy) 105] U44*(_|_, X, Y) >= X because [42], by (Select) 106] U44*(_|_, X, Y) >= Y because [67], by (Select) 107] U45(_|_, X) >= mark(U46(isNeList(X))) because [108], by (Star) 108] U45*(_|_, X) >= mark(U46(isNeList(X))) because U45 > mark and [109], by (Copy) 109] U45*(_|_, X) >= U46(isNeList(X)) because U45 > U46 and [110], by (Copy) 110] U45*(_|_, X) >= isNeList(X) because U45 > isNeList and [111], by (Copy) 111] U45*(_|_, X) >= X because [67], by (Select) 112] U46(_|_) >= mark(_|_) because U46 = mark, U46 in Mul and [69], by (Fun) 113] U51(_|_, X, Y) > mark(U52(isPalListKind(X), X, Y)) because [114], by definition 114] U51*(_|_, X, Y) >= mark(U52(isPalListKind(X), X, Y)) because U51 > mark and [115], by (Copy) 115] U51*(_|_, X, Y) >= U52(isPalListKind(X), X, Y) because U51 > U52, [116], [117] and [118], by (Copy) 116] U51*(_|_, X, Y) >= isPalListKind(X) because U51 > isPalListKind and [117], by (Copy) 117] U51*(_|_, X, Y) >= X because [42], by (Select) 118] U51*(_|_, X, Y) >= Y because [67], by (Select) 119] U52(_|_, X, Y) > mark(U53(isPalListKind(Y), X, Y)) because [120], by definition 120] U52*(_|_, X, Y) >= mark(U53(isPalListKind(Y), X, Y)) because U52 > mark and [121], by (Copy) 121] U52*(_|_, X, Y) >= U53(isPalListKind(Y), X, Y) because U52 > U53, [122], [124] and [123], by (Copy) 122] U52*(_|_, X, Y) >= isPalListKind(Y) because U52 > isPalListKind and [123], by (Copy) 123] U52*(_|_, X, Y) >= Y because [67], by (Select) 124] U52*(_|_, X, Y) >= X because [42], by (Select) 125] U53(_|_, X, Y) >= mark(U54(isPalListKind(Y), X, Y)) because [126], by (Star) 126] U53*(_|_, X, Y) >= mark(U54(isPalListKind(Y), X, Y)) because U53 > mark and [127], by (Copy) 127] U53*(_|_, X, Y) >= U54(isPalListKind(Y), X, Y) because U53 > U54, [128], [130] and [129], by (Copy) 128] U53*(_|_, X, Y) >= isPalListKind(Y) because U53 > isPalListKind and [129], by (Copy) 129] U53*(_|_, X, Y) >= Y because [67], by (Select) 130] U53*(_|_, X, Y) >= X because [42], by (Select) 131] U54(_|_, X, Y) >= mark(U55(isNeList(X), Y)) because [132], by (Star) 132] U54*(_|_, X, Y) >= mark(U55(isNeList(X), Y)) because U54 > mark and [133], by (Copy) 133] U54*(_|_, X, Y) >= U55(isNeList(X), Y) because U54 > U55, [134] and [136], by (Copy) 134] U54*(_|_, X, Y) >= isNeList(X) because U54 > isNeList and [135], by (Copy) 135] U54*(_|_, X, Y) >= X because [42], by (Select) 136] U54*(_|_, X, Y) >= Y because [67], by (Select) 137] U55(_|_, X) > mark(U56(isList(X))) because [138], by definition 138] U55*(_|_, X) >= mark(U56(isList(X))) because U55 > mark and [139], by (Copy) 139] U55*(_|_, X) >= U56(isList(X)) because U55 > U56 and [140], by (Copy) 140] U55*(_|_, X) >= isList(X) because U55 > isList and [141], by (Copy) 141] U55*(_|_, X) >= X because [67], by (Select) 142] U56(_|_) > mark(_|_) because [143], by definition 143] U56*(_|_) >= mark(_|_) because U56 > mark and [144], by (Copy) 144] U56*(_|_) >= _|_ by (Bot) 145] U61(_|_, X) >= mark(U62(isPalListKind(X), X)) because [146], by (Star) 146] U61*(_|_, X) >= mark(U62(isPalListKind(X), X)) because U61 > mark and [147], by (Copy) 147] U61*(_|_, X) >= U62(isPalListKind(X), X) because U61 > U62, [148] and [149], by (Copy) 148] U61*(_|_, X) >= isPalListKind(X) because U61 > isPalListKind and [149], by (Copy) 149] U61*(_|_, X) >= X because [28], by (Select) 150] U62(_|_, X) > mark(U63(isQid(X))) because [151], by definition 151] U62*(_|_, X) >= mark(U63(isQid(X))) because U62 > mark and [152], by (Copy) 152] U62*(_|_, X) >= U63(isQid(X)) because U62 > U63 and [153], by (Copy) 153] U62*(_|_, X) >= isQid(X) because U62 > isQid and [154], by (Copy) 154] U62*(_|_, X) >= X because [28], by (Select) 155] U63(_|_) >= mark(_|_) because U63 = mark, U63 in Mul and [69], by (Fun) 156] U71(_|_, X, Y) >= mark(U72(isPalListKind(X), Y)) because [157], by (Star) 157] U71*(_|_, X, Y) >= mark(U72(isPalListKind(X), Y)) because U71 > mark and [158], by (Copy) 158] U71*(_|_, X, Y) >= U72(isPalListKind(X), Y) because U71 > U72, [159] and [162], by (Copy) 159] U71*(_|_, X, Y) >= isPalListKind(X) because U71 > isPalListKind and [160], by (Copy) 160] U71*(_|_, X, Y) >= X because [161], by (Select) 161] X >= X by (Meta) 162] U71*(_|_, X, Y) >= Y because [163], by (Select) 163] Y >= Y by (Meta) 164] U72(_|_, X) >= mark(U73(isPal(X), X)) because [165], by (Star) 165] U72*(_|_, X) >= mark(U73(isPal(X), X)) because U72 > mark and [166], by (Copy) 166] U72*(_|_, X) >= U73(isPal(X), X) because U72 > U73, [167] and [168], by (Copy) 167] U72*(_|_, X) >= isPal(X) because U72 > isPal and [168], by (Copy) 168] U72*(_|_, X) >= X because [163], by (Select) 169] U73(_|_, X) >= mark(U74(isPalListKind(X))) because [170], by (Star) 170] U73*(_|_, X) >= mark(U74(isPalListKind(X))) because U73 > mark and [171], by (Copy) 171] U73*(_|_, X) >= U74(isPalListKind(X)) because U73 > U74 and [172], by (Copy) 172] U73*(_|_, X) >= isPalListKind(X) because U73 > isPalListKind and [173], by (Copy) 173] U73*(_|_, X) >= X because [163], by (Select) 174] U74(_|_) >= mark(_|_) because U74 = mark, U74 in Mul and [69], by (Fun) 175] U81(_|_, X) >= mark(U82(isPalListKind(X), X)) because [176], by (Star) 176] U81*(_|_, X) >= mark(U82(isPalListKind(X), X)) because U81 > mark and [177], by (Copy) 177] U81*(_|_, X) >= U82(isPalListKind(X), X) because U81 > U82, [178] and [179], by (Copy) 178] U81*(_|_, X) >= isPalListKind(X) because U81 > isPalListKind and [179], by (Copy) 179] U81*(_|_, X) >= X because [28], by (Select) 180] U82(_|_, X) >= mark(U83(isNePal(X))) because [181], by (Star) 181] U82*(_|_, X) >= mark(U83(isNePal(X))) because U82 > mark and [182], by (Copy) 182] U82*(_|_, X) >= U83(isNePal(X)) because U82 > U83 and [183], by (Copy) 183] U82*(_|_, X) >= isNePal(X) because U82 > isNePal and [184], by (Copy) 184] U82*(_|_, X) >= X because [28], by (Select) 185] U83(_|_) >= mark(_|_) because U83 = mark, U83 in Mul and [69], by (Fun) 186] U91(_|_, X) >= mark(U92(isPalListKind(X))) because [187], by (Star) 187] U91*(_|_, X) >= mark(U92(isPalListKind(X))) because U91 > mark and [188], by (Copy) 188] U91*(_|_, X) >= U92(isPalListKind(X)) because U91 > U92 and [189], by (Copy) 189] U91*(_|_, X) >= isPalListKind(X) because U91 > isPalListKind and [190], by (Copy) 190] U91*(_|_, X) >= X because [67], by (Select) 191] U92(_|_) > mark(_|_) because [192], by definition 192] U92*(_|_) >= mark(_|_) because U92 > mark and [193], by (Copy) 193] U92*(_|_) >= _|_ by (Bot) 194] isList(X) >= mark(U11(isPalListKind(X), X)) because [195], by (Star) 195] isList*(X) >= mark(U11(isPalListKind(X), X)) because isList > mark and [196], by (Copy) 196] isList*(X) >= U11(isPalListKind(X), X) because isList > U11, [197] and [198], by (Copy) 197] isList*(X) >= isPalListKind(X) because isList > isPalListKind and [198], by (Copy) 198] isList*(X) >= X because [28], by (Select) 199] isList(nil) >= mark(_|_) because [200], by (Star) 200] isList*(nil) >= mark(_|_) because [201], by (Select) 201] nil >= mark(_|_) because [202], by (Star) 202] nil* >= mark(_|_) because nil > mark and [203], by (Copy) 203] nil* >= _|_ by (Bot) 204] isList(!6220!6220(X, Y)) > mark(U21(isPalListKind(X), X, Y)) because [205], by definition 205] isList*(!6220!6220(X, Y)) >= mark(U21(isPalListKind(X), X, Y)) because [206], by (Select) 206] !6220!6220(X, Y) >= mark(U21(isPalListKind(X), X, Y)) because [207], by (Star) 207] !6220!6220*(X, Y) >= mark(U21(isPalListKind(X), X, Y)) because !6220!6220 > mark and [208], by (Copy) 208] !6220!6220*(X, Y) >= U21(isPalListKind(X), X, Y) because !6220!6220 > U21, [209], [210] and [211], by (Copy) 209] !6220!6220*(X, Y) >= isPalListKind(X) because !6220!6220 > isPalListKind and [210], by (Copy) 210] !6220!6220*(X, Y) >= X because [42], by (Select) 211] !6220!6220*(X, Y) >= Y because [67], by (Select) 212] isNeList(X) > mark(U31(isPalListKind(X), X)) because [213], by definition 213] isNeList*(X) >= mark(U31(isPalListKind(X), X)) because isNeList > mark and [214], by (Copy) 214] isNeList*(X) >= U31(isPalListKind(X), X) because isNeList > U31, [215] and [216], by (Copy) 215] isNeList*(X) >= isPalListKind(X) because isNeList > isPalListKind and [216], by (Copy) 216] isNeList*(X) >= X because [28], by (Select) 217] isNeList(!6220!6220(X, Y)) > mark(U41(isPalListKind(X), X, Y)) because [218], by definition 218] isNeList*(!6220!6220(X, Y)) >= mark(U41(isPalListKind(X), X, Y)) because isNeList > mark and [219], by (Copy) 219] isNeList*(!6220!6220(X, Y)) >= U41(isPalListKind(X), X, Y) because [220], by (Select) 220] !6220!6220(X, Y) >= U41(isPalListKind(X), X, Y) because [221], by (Star) 221] !6220!6220*(X, Y) >= U41(isPalListKind(X), X, Y) because !6220!6220 > U41, [209], [210] and [211], by (Copy) 222] isNeList(!6220!6220(X, Y)) >= mark(U51(isPalListKind(X), X, Y)) because [223], by (Star) 223] isNeList*(!6220!6220(X, Y)) >= mark(U51(isPalListKind(X), X, Y)) because [224], by (Select) 224] !6220!6220(X, Y) >= mark(U51(isPalListKind(X), X, Y)) because [225], by (Star) 225] !6220!6220*(X, Y) >= mark(U51(isPalListKind(X), X, Y)) because !6220!6220 > mark and [226], by (Copy) 226] !6220!6220*(X, Y) >= U51(isPalListKind(X), X, Y) because !6220!6220 > U51, [209], [210] and [211], by (Copy) 227] isNePal(X) >= mark(U61(isPalListKind(X), X)) because [228], by (Star) 228] isNePal*(X) >= mark(U61(isPalListKind(X), X)) because isNePal > mark and [229], by (Copy) 229] isNePal*(X) >= U61(isPalListKind(X), X) because isNePal > U61, [230] and [231], by (Copy) 230] isNePal*(X) >= isPalListKind(X) because isNePal > isPalListKind and [231], by (Copy) 231] isNePal*(X) >= X because [28], by (Select) 232] isNePal(!6220!6220(X, !6220!6220(Y, X))) >= mark(U71(isQid(X), X, Y)) because [233], by (Star) 233] isNePal*(!6220!6220(X, !6220!6220(Y, X))) >= mark(U71(isQid(X), X, Y)) because [234], by (Select) 234] !6220!6220(X, !6220!6220(Y, X)) >= mark(U71(isQid(X), X, Y)) because [235], by (Star) 235] !6220!6220*(X, !6220!6220(Y, X)) >= mark(U71(isQid(X), X, Y)) because !6220!6220 > mark and [236], by (Copy) 236] !6220!6220*(X, !6220!6220(Y, X)) >= U71(isQid(X), X, Y) because !6220!6220 > U71, [237], [238] and [239], by (Copy) 237] !6220!6220*(X, !6220!6220(Y, X)) >= isQid(X) because !6220!6220 > isQid and [238], by (Copy) 238] !6220!6220*(X, !6220!6220(Y, X)) >= X because [161], by (Select) 239] !6220!6220*(X, !6220!6220(Y, X)) >= Y because [240], by (Select) 240] !6220!6220(Y, X) >= Y because [241], by (Star) 241] !6220!6220*(Y, X) >= Y because [163], by (Select) 242] isPal(X) >= mark(U81(isPalListKind(X), X)) because [243], by (Star) 243] isPal*(X) >= mark(U81(isPalListKind(X), X)) because isPal > mark and [244], by (Copy) 244] isPal*(X) >= U81(isPalListKind(X), X) because isPal > U81, [245] and [246], by (Copy) 245] isPal*(X) >= isPalListKind(X) because isPal > isPalListKind and [246], by (Copy) 246] isPal*(X) >= X because [28], by (Select) 247] isPal(nil) >= mark(_|_) because [248], by (Star) 248] isPal*(nil) >= mark(_|_) because [201], by (Select) 249] isPalListKind(_|_) >= mark(_|_) because [250], by (Star) 250] isPalListKind*(_|_) >= mark(_|_) because isPalListKind > mark and [251], by (Copy) 251] isPalListKind*(_|_) >= _|_ by (Bot) 252] isPalListKind(e) >= mark(_|_) because [253], by (Star) 253] isPalListKind*(e) >= mark(_|_) because isPalListKind > mark and [254], by (Copy) 254] isPalListKind*(e) >= _|_ by (Bot) 255] isPalListKind(i) > mark(_|_) because [256], by definition 256] isPalListKind*(i) >= mark(_|_) because isPalListKind > mark and [257], by (Copy) 257] isPalListKind*(i) >= _|_ by (Bot) 258] isPalListKind(nil) > mark(_|_) because [259], by definition 259] isPalListKind*(nil) >= mark(_|_) because [201], by (Select) 260] isPalListKind(_|_) >= mark(_|_) because [261], by (Star) 261] isPalListKind*(_|_) >= mark(_|_) because isPalListKind > mark and [262], by (Copy) 262] isPalListKind*(_|_) >= _|_ by (Bot) 263] isPalListKind(_|_) > mark(_|_) because [264], by definition 264] isPalListKind*(_|_) >= mark(_|_) because isPalListKind > mark and [265], by (Copy) 265] isPalListKind*(_|_) >= _|_ by (Bot) 266] isPalListKind(!6220!6220(X, Y)) >= mark(U91(isPalListKind(X), Y)) because [267], by (Star) 267] isPalListKind*(!6220!6220(X, Y)) >= mark(U91(isPalListKind(X), Y)) because [268], by (Select) 268] !6220!6220(X, Y) >= mark(U91(isPalListKind(X), Y)) because [269], by (Star) 269] !6220!6220*(X, Y) >= mark(U91(isPalListKind(X), Y)) because !6220!6220 > mark and [270], by (Copy) 270] !6220!6220*(X, Y) >= U91(isPalListKind(X), Y) because !6220!6220 > U91, [209] and [211], by (Copy) 271] isQid(_|_) >= mark(_|_) because [272], by (Star) 272] isQid*(_|_) >= mark(_|_) because isQid > mark and [273], by (Copy) 273] isQid*(_|_) >= _|_ by (Bot) 274] isQid(e) > mark(_|_) because [275], by definition 275] isQid*(e) >= mark(_|_) because isQid > mark and [276], by (Copy) 276] isQid*(e) >= _|_ by (Bot) 277] isQid(i) >= mark(_|_) because [278], by (Star) 278] isQid*(i) >= mark(_|_) because isQid > mark and [279], by (Copy) 279] isQid*(i) >= _|_ by (Bot) 280] isQid(_|_) > mark(_|_) because [281], by definition 281] isQid*(_|_) >= mark(_|_) because isQid > mark and [282], by (Copy) 282] isQid*(_|_) >= _|_ by (Bot) 283] isQid(_|_) >= mark(_|_) because [284], by (Star) 284] isQid*(_|_) >= mark(_|_) because isQid > mark and [285], by (Copy) 285] isQid*(_|_) >= _|_ by (Bot) 286] !6220!6220(X, Y) >= !6220!6220(X, Y) because [287] and [288], by (Fun) 287] X >= X by (Meta) 288] Y >= Y by (Meta) 289] !6220!6220(X, Y) >= !6220!6220(X, Y) because [287] and [290], by (Fun) 290] Y >= Y by (Meta) 291] U11(X, Y) >= U11(X, Y) because U11 in Mul, [287] and [290], by (Fun) 292] U12(X, Y) >= U12(X, Y) because [287] and [290], by (Fun) 293] U13(X) >= U13(X) because U13 in Mul and [294], by (Fun) 294] X >= X by (Meta) 295] U21(X, Y, Z) >= U21(X, Y, Z) because [287], [290] and [296], by (Fun) 296] Z >= Z by (Meta) 297] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [287], [290] and [296], by (Fun) 298] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [287], [290] and [296], by (Fun) 299] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [287], [290] and [296], by (Fun) 300] U25(X, Y) >= U25(X, Y) because U25 in Mul, [287] and [290], by (Fun) 301] U26(X) >= U26(X) because U26 in Mul and [294], by (Fun) 302] U31(X, Y) >= U31(X, Y) because U31 in Mul, [287] and [290], by (Fun) 303] U32(X, Y) >= U32(X, Y) because U32 in Mul, [287] and [290], by (Fun) 304] U33(X) >= U33(X) because U33 in Mul and [294], by (Fun) 305] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [287], [290] and [296], by (Fun) 306] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [287], [290] and [296], by (Fun) 307] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [287], [290] and [296], by (Fun) 308] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [287], [290] and [296], by (Fun) 309] U45(X, Y) >= U45(X, Y) because U45 in Mul, [287] and [290], by (Fun) 310] U46(X) >= U46(X) because U46 in Mul and [294], by (Fun) 311] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [287], [290] and [296], by (Fun) 312] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [287], [290] and [296], by (Fun) 313] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [287], [290] and [296], by (Fun) 314] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [287], [290] and [296], by (Fun) 315] U55(X, Y) >= U55(X, Y) because U55 in Mul, [287] and [290], by (Fun) 316] U56(X) >= U56(X) because U56 in Mul and [294], by (Fun) 317] U61(X, Y) >= U61(X, Y) because U61 in Mul, [287] and [290], by (Fun) 318] U62(X, Y) >= U62(X, Y) because U62 in Mul, [287] and [290], by (Fun) 319] U63(X) >= U63(X) because U63 in Mul and [294], by (Fun) 320] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [287], [290] and [296], by (Fun) 321] U72(X, Y) >= U72(X, Y) because U72 in Mul, [287] and [290], by (Fun) 322] U73(X, Y) >= U73(X, Y) because U73 in Mul, [287] and [290], by (Fun) 323] U74(X) >= U74(X) because U74 in Mul and [294], by (Fun) 324] U81(X, Y) >= U81(X, Y) because U81 in Mul, [287] and [290], by (Fun) 325] U82(X, Y) >= U82(X, Y) because [287] and [290], by (Fun) 326] U83(X) >= U83(X) because U83 in Mul and [294], by (Fun) 327] U91(X, Y) >= U91(X, Y) because U91 in Mul, [287] and [290], by (Fun) 328] U92(X) >= U92(X) because U92 in Mul and [294], by (Fun) 329] !6220!6220(mark(X), Y) > mark(!6220!6220(X, Y)) because [330], by definition 330] !6220!6220*(mark(X), Y) >= mark(!6220!6220(X, Y)) because !6220!6220 > mark and [331], by (Copy) 331] !6220!6220*(mark(X), Y) >= !6220!6220(X, Y) because [332], [334] and [336], by (Stat) 332] mark(X) > X because [333], by definition 333] mark*(X) >= X because [287], by (Select) 334] !6220!6220*(mark(X), Y) >= X because [335], by (Select) 335] mark(X) >= X because [333], by (Star) 336] !6220!6220*(mark(X), Y) >= Y because [290], by (Select) 337] !6220!6220(X, mark(Y)) >= mark(!6220!6220(X, Y)) because [338], by (Star) 338] !6220!6220*(X, mark(Y)) >= mark(!6220!6220(X, Y)) because !6220!6220 > mark and [339], by (Copy) 339] !6220!6220*(X, mark(Y)) >= !6220!6220(X, Y) because [287], [340], [342] and [343], by (Stat) 340] mark(Y) > Y because [341], by definition 341] mark*(Y) >= Y because [290], by (Select) 342] !6220!6220*(X, mark(Y)) >= X because [287], by (Select) 343] !6220!6220*(X, mark(Y)) >= Y because [344], by (Select) 344] mark(Y) >= Y because [341], by (Star) 345] U11(mark(X), Y) > mark(U11(X, Y)) because [346], by definition 346] U11*(mark(X), Y) >= mark(U11(X, Y)) because U11 > mark and [347], by (Copy) 347] U11*(mark(X), Y) >= U11(X, Y) because U11 in Mul, [332] and [290], by (Stat) 348] U12(mark(X), Y) >= mark(U12(X, Y)) because [349], by (Star) 349] U12*(mark(X), Y) >= mark(U12(X, Y)) because U12 > mark and [350], by (Copy) 350] U12*(mark(X), Y) >= U12(X, Y) because [332], [290], [351] and [352], by (Stat) 351] U12*(mark(X), Y) >= X because [335], by (Select) 352] U12*(mark(X), Y) >= Y because [290], by (Select) 353] U13(mark(X)) >= mark(U13(X)) because [354], by (Star) 354] U13*(mark(X)) >= mark(U13(X)) because U13 > mark and [355], by (Copy) 355] U13*(mark(X)) >= U13(X) because U13 in Mul and [356], by (Stat) 356] mark(X) > X because [357], by definition 357] mark*(X) >= X because [294], by (Select) 358] U21(mark(X), Y, Z) > mark(U21(X, Y, Z)) because [359], by definition 359] U21*(mark(X), Y, Z) >= mark(U21(X, Y, Z)) because U21 > mark and [360], by (Copy) 360] U21*(mark(X), Y, Z) >= U21(X, Y, Z) because [332], [296], [361], [362] and [363], by (Stat) 361] U21*(mark(X), Y, Z) >= X because [335], by (Select) 362] U21*(mark(X), Y, Z) >= Y because [290], by (Select) 363] U21*(mark(X), Y, Z) >= Z because [296], by (Select) 364] U22(mark(X), Y, Z) >= mark(U22(X, Y, Z)) because [365], by (Star) 365] U22*(mark(X), Y, Z) >= mark(U22(X, Y, Z)) because U22 > mark and [366], by (Copy) 366] U22*(mark(X), Y, Z) >= U22(X, Y, Z) because U22 in Mul, [332], [290] and [296], by (Stat) 367] U23(mark(X), Y, Z) > mark(U23(X, Y, Z)) because [368], by definition 368] U23*(mark(X), Y, Z) >= mark(U23(X, Y, Z)) because U23 > mark and [369], by (Copy) 369] U23*(mark(X), Y, Z) >= U23(X, Y, Z) because U23 in Mul, [332], [290] and [296], by (Stat) 370] U24(mark(X), Y, Z) >= mark(U24(X, Y, Z)) because [371], by (Star) 371] U24*(mark(X), Y, Z) >= mark(U24(X, Y, Z)) because U24 > mark and [372], by (Copy) 372] U24*(mark(X), Y, Z) >= U24(X, Y, Z) because U24 in Mul, [332], [290] and [296], by (Stat) 373] U25(mark(X), Y) >= mark(U25(X, Y)) because [374], by (Star) 374] U25*(mark(X), Y) >= mark(U25(X, Y)) because U25 > mark and [375], by (Copy) 375] U25*(mark(X), Y) >= U25(X, Y) because U25 in Mul, [332] and [290], by (Stat) 376] U26(mark(X)) >= mark(U26(X)) because U26 = mark, U26 in Mul and [377], by (Fun) 377] mark(X) >= U26(X) because mark = U26, mark in Mul and [294], by (Fun) 378] U31(mark(X), Y) >= mark(U31(X, Y)) because [379], by (Star) 379] U31*(mark(X), Y) >= mark(U31(X, Y)) because U31 > mark and [380], by (Copy) 380] U31*(mark(X), Y) >= U31(X, Y) because U31 in Mul, [332] and [290], by (Stat) 381] U32(mark(X), Y) > mark(U32(X, Y)) because [382], by definition 382] U32*(mark(X), Y) >= mark(U32(X, Y)) because U32 > mark and [383], by (Copy) 383] U32*(mark(X), Y) >= U32(X, Y) because U32 in Mul, [332] and [290], by (Stat) 384] U33(mark(X)) > mark(U33(X)) because [385], by definition 385] U33*(mark(X)) >= mark(U33(X)) because U33 > mark and [386], by (Copy) 386] U33*(mark(X)) >= U33(X) because U33 in Mul and [356], by (Stat) 387] U41(mark(X), Y, Z) > mark(U41(X, Y, Z)) because [388], by definition 388] U41*(mark(X), Y, Z) >= mark(U41(X, Y, Z)) because U41 > mark and [389], by (Copy) 389] U41*(mark(X), Y, Z) >= U41(X, Y, Z) because U41 in Mul, [332], [290] and [296], by (Stat) 390] U42(mark(X), Y, Z) >= mark(U42(X, Y, Z)) because [391], by (Star) 391] U42*(mark(X), Y, Z) >= mark(U42(X, Y, Z)) because U42 > mark and [392], by (Copy) 392] U42*(mark(X), Y, Z) >= U42(X, Y, Z) because U42 in Mul, [332], [290] and [296], by (Stat) 393] U43(mark(X), Y, Z) >= mark(U43(X, Y, Z)) because [394], by (Star) 394] U43*(mark(X), Y, Z) >= mark(U43(X, Y, Z)) because U43 > mark and [395], by (Copy) 395] U43*(mark(X), Y, Z) >= U43(X, Y, Z) because U43 in Mul, [332], [290] and [296], by (Stat) 396] U44(mark(X), Y, Z) > mark(U44(X, Y, Z)) because [397], by definition 397] U44*(mark(X), Y, Z) >= mark(U44(X, Y, Z)) because U44 > mark and [398], by (Copy) 398] U44*(mark(X), Y, Z) >= U44(X, Y, Z) because U44 in Mul, [332], [290] and [296], by (Stat) 399] U45(mark(X), Y) > mark(U45(X, Y)) because [400], by definition 400] U45*(mark(X), Y) >= mark(U45(X, Y)) because U45 > mark and [401], by (Copy) 401] U45*(mark(X), Y) >= U45(X, Y) because U45 in Mul, [332] and [290], by (Stat) 402] U46(mark(X)) >= mark(U46(X)) because U46 = mark, U46 in Mul and [403], by (Fun) 403] mark(X) >= U46(X) because mark = U46, mark in Mul and [294], by (Fun) 404] U51(mark(X), Y, Z) > mark(U51(X, Y, Z)) because [405], by definition 405] U51*(mark(X), Y, Z) >= mark(U51(X, Y, Z)) because U51 > mark and [406], by (Copy) 406] U51*(mark(X), Y, Z) >= U51(X, Y, Z) because U51 in Mul, [332], [290] and [296], by (Stat) 407] U52(mark(X), Y, Z) > mark(U52(X, Y, Z)) because [408], by definition 408] U52*(mark(X), Y, Z) >= mark(U52(X, Y, Z)) because U52 > mark and [409], by (Copy) 409] U52*(mark(X), Y, Z) >= U52(X, Y, Z) because U52 in Mul, [332], [290] and [296], by (Stat) 410] U53(mark(X), Y, Z) >= mark(U53(X, Y, Z)) because [411], by (Star) 411] U53*(mark(X), Y, Z) >= mark(U53(X, Y, Z)) because U53 > mark and [412], by (Copy) 412] U53*(mark(X), Y, Z) >= U53(X, Y, Z) because U53 in Mul, [332], [290] and [296], by (Stat) 413] U54(mark(X), Y, Z) >= mark(U54(X, Y, Z)) because [414], by (Star) 414] U54*(mark(X), Y, Z) >= mark(U54(X, Y, Z)) because U54 > mark and [415], by (Copy) 415] U54*(mark(X), Y, Z) >= U54(X, Y, Z) because U54 in Mul, [332], [290] and [296], by (Stat) 416] U55(mark(X), Y) > mark(U55(X, Y)) because [417], by definition 417] U55*(mark(X), Y) >= mark(U55(X, Y)) because U55 > mark and [418], by (Copy) 418] U55*(mark(X), Y) >= U55(X, Y) because U55 in Mul, [332] and [290], by (Stat) 419] U56(mark(X)) >= mark(U56(X)) because [420], by (Star) 420] U56*(mark(X)) >= mark(U56(X)) because U56 > mark and [421], by (Copy) 421] U56*(mark(X)) >= U56(X) because U56 in Mul and [356], by (Stat) 422] U61(mark(X), Y) > mark(U61(X, Y)) because [423], by definition 423] U61*(mark(X), Y) >= mark(U61(X, Y)) because U61 > mark and [424], by (Copy) 424] U61*(mark(X), Y) >= U61(X, Y) because U61 in Mul, [332] and [290], by (Stat) 425] U62(mark(X), Y) >= mark(U62(X, Y)) because [426], by (Star) 426] U62*(mark(X), Y) >= mark(U62(X, Y)) because U62 > mark and [427], by (Copy) 427] U62*(mark(X), Y) >= U62(X, Y) because U62 in Mul, [332] and [290], by (Stat) 428] U63(mark(X)) >= mark(U63(X)) because U63 = mark, U63 in Mul and [429], by (Fun) 429] mark(X) >= U63(X) because mark = U63, mark in Mul and [294], by (Fun) 430] U71(mark(X), Y, Z) >= mark(U71(X, Y, Z)) because [431], by (Star) 431] U71*(mark(X), Y, Z) >= mark(U71(X, Y, Z)) because U71 > mark and [432], by (Copy) 432] U71*(mark(X), Y, Z) >= U71(X, Y, Z) because U71 in Mul, [332], [290] and [296], by (Stat) 433] U72(mark(X), Y) >= mark(U72(X, Y)) because [434], by (Star) 434] U72*(mark(X), Y) >= mark(U72(X, Y)) because U72 > mark and [435], by (Copy) 435] U72*(mark(X), Y) >= U72(X, Y) because U72 in Mul, [332] and [290], by (Stat) 436] U73(mark(X), Y) >= mark(U73(X, Y)) because [437], by (Star) 437] U73*(mark(X), Y) >= mark(U73(X, Y)) because U73 > mark and [438], by (Copy) 438] U73*(mark(X), Y) >= U73(X, Y) because U73 in Mul, [332] and [290], by (Stat) 439] U74(mark(X)) >= mark(U74(X)) because U74 = mark, U74 in Mul and [440], by (Fun) 440] mark(X) >= U74(X) because mark = U74, mark in Mul and [294], by (Fun) 441] U81(mark(X), Y) >= mark(U81(X, Y)) because [442], by (Star) 442] U81*(mark(X), Y) >= mark(U81(X, Y)) because U81 > mark and [443], by (Copy) 443] U81*(mark(X), Y) >= U81(X, Y) because U81 in Mul, [332] and [290], by (Stat) 444] U82(mark(X), Y) >= mark(U82(X, Y)) because [445], by (Star) 445] U82*(mark(X), Y) >= mark(U82(X, Y)) because U82 > mark and [446], by (Copy) 446] U82*(mark(X), Y) >= U82(X, Y) because [332], [290], [447] and [448], by (Stat) 447] U82*(mark(X), Y) >= X because [335], by (Select) 448] U82*(mark(X), Y) >= Y because [290], by (Select) 449] U83(mark(X)) >= mark(U83(X)) because U83 = mark, U83 in Mul and [450], by (Fun) 450] mark(X) >= U83(X) because mark = U83, mark in Mul and [294], by (Fun) 451] U91(mark(X), Y) > mark(U91(X, Y)) because [452], by definition 452] U91*(mark(X), Y) >= mark(U91(X, Y)) because U91 > mark and [453], by (Copy) 453] U91*(mark(X), Y) >= U91(X, Y) because U91 in Mul, [332] and [290], by (Stat) 454] U92(mark(X)) >= mark(U92(X)) because [455], by (Star) 455] U92*(mark(X)) >= mark(U92(X)) because U92 > mark and [456], by (Copy) 456] U92*(mark(X)) >= U92(X) because U92 in Mul and [356], by (Stat) 457] !6220!6220(X, Y) >= !6220!6220(X, Y) because [458] and [459], by (Fun) 458] X >= X by (Meta) 459] Y >= Y by (Meta) 460] nil >= nil by (Fun) 461] U11(X, Y) >= U11(X, Y) because U11 in Mul, [458] and [459], by (Fun) 462] _|_ >= _|_ by (Bot) 463] U12(X, Y) >= U12(X, Y) because [458] and [459], by (Fun) 464] isPalListKind(X) >= isPalListKind(X) because isPalListKind in Mul and [465], by (Fun) 465] X >= X by (Meta) 466] U13(X) >= U13(X) because U13 in Mul and [465], by (Fun) 467] isNeList(X) >= isNeList(X) because isNeList in Mul and [465], by (Fun) 468] U21(X, Y, Z) >= U21(X, Y, Z) because [458], [459] and [469], by (Fun) 469] Z >= Z by (Meta) 470] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [458], [459] and [469], by (Fun) 471] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [458], [459] and [469], by (Fun) 472] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [458], [459] and [469], by (Fun) 473] U25(X, Y) >= U25(X, Y) because U25 in Mul, [458] and [459], by (Fun) 474] isList(X) >= isList(X) because isList in Mul and [465], by (Fun) 475] U26(X) >= U26(X) because U26 in Mul and [465], by (Fun) 476] U31(X, Y) >= U31(X, Y) because U31 in Mul, [458] and [459], by (Fun) 477] U32(X, Y) >= U32(X, Y) because U32 in Mul, [458] and [459], by (Fun) 478] U33(X) >= U33(X) because U33 in Mul and [465], by (Fun) 479] isQid(X) >= isQid(X) because isQid in Mul and [465], by (Fun) 480] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [458], [459] and [469], by (Fun) 481] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [458], [459] and [469], by (Fun) 482] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [458], [459] and [469], by (Fun) 483] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [458], [459] and [469], by (Fun) 484] U45(X, Y) >= U45(X, Y) because U45 in Mul, [458] and [459], by (Fun) 485] U46(X) >= U46(X) because U46 in Mul and [465], by (Fun) 486] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [458], [459] and [469], by (Fun) 487] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [458], [459] and [469], by (Fun) 488] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [458], [459] and [469], by (Fun) 489] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [458], [459] and [469], by (Fun) 490] U55(X, Y) >= U55(X, Y) because U55 in Mul, [458] and [459], by (Fun) 491] U56(X) >= U56(X) because U56 in Mul and [465], by (Fun) 492] U61(X, Y) >= U61(X, Y) because U61 in Mul, [458] and [459], by (Fun) 493] U62(X, Y) >= U62(X, Y) because U62 in Mul, [458] and [459], by (Fun) 494] U63(X) >= U63(X) because U63 in Mul and [465], by (Fun) 495] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [458], [459] and [469], by (Fun) 496] U72(X, Y) >= U72(X, Y) because U72 in Mul, [458] and [459], by (Fun) 497] U73(X, Y) >= U73(X, Y) because U73 in Mul, [458] and [459], by (Fun) 498] isPal(X) >= isPal(X) because isPal in Mul and [465], by (Fun) 499] U74(X) >= U74(X) because U74 in Mul and [465], by (Fun) 500] U81(X, Y) >= U81(X, Y) because U81 in Mul, [458] and [459], by (Fun) 501] U82(X, Y) >= U82(X, Y) because [458] and [459], by (Fun) 502] U83(X) >= U83(X) because U83 in Mul and [465], by (Fun) 503] isNePal(X) >= isNePal(X) because isNePal in Mul and [465], by (Fun) 504] U91(X, Y) >= U91(X, Y) because U91 in Mul, [458] and [459], by (Fun) 505] U92(X) >= U92(X) because U92 in Mul and [465], by (Fun) 506] _|_ >= _|_ by (Bot) 507] e >= e by (Fun) 508] i >= i by (Fun) 509] _|_ >= _|_ by (Bot) 510] _|_ >= _|_ by (Bot) 511] !6220!6220(X, Y) >= !6220!6220(X, Y) because [512] and [513], by (Fun) 512] X >= X by (Meta) 513] Y >= Y by (Meta) 514] U11(X, Y) >= U11(X, Y) because U11 in Mul, [512] and [513], by (Fun) 515] U12(X, Y) >= U12(X, Y) because [512] and [513], by (Fun) 516] isPalListKind(X) >= isPalListKind(X) because isPalListKind in Mul and [517], by (Fun) 517] X >= X by (Meta) 518] U13(X) >= U13(X) because U13 in Mul and [517], by (Fun) 519] isNeList(X) >= isNeList(X) because isNeList in Mul and [517], by (Fun) 520] U21(X, Y, Z) >= U21(X, Y, Z) because [512], [513] and [521], by (Fun) 521] Z >= Z by (Meta) 522] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [512], [513] and [521], by (Fun) 523] U23(X, Y, Z) >= U23(X, Y, Z) because U23 in Mul, [512], [513] and [521], by (Fun) 524] U24(X, Y, Z) >= U24(X, Y, Z) because U24 in Mul, [512], [513] and [521], by (Fun) 525] U25(X, Y) >= U25(X, Y) because U25 in Mul, [512] and [513], by (Fun) 526] isList(X) >= isList(X) because isList in Mul and [517], by (Fun) 527] U26(X) >= U26(X) because U26 in Mul and [517], by (Fun) 528] U31(X, Y) >= U31(X, Y) because U31 in Mul, [512] and [513], by (Fun) 529] U32(X, Y) >= U32(X, Y) because U32 in Mul, [512] and [513], by (Fun) 530] U33(X) >= U33(X) because U33 in Mul and [517], by (Fun) 531] isQid(X) >= isQid(X) because isQid in Mul and [517], by (Fun) 532] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [512], [513] and [521], by (Fun) 533] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [512], [513] and [521], by (Fun) 534] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [512], [513] and [521], by (Fun) 535] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [512], [513] and [521], by (Fun) 536] U45(X, Y) >= U45(X, Y) because U45 in Mul, [512] and [513], by (Fun) 537] U46(X) >= U46(X) because U46 in Mul and [517], by (Fun) 538] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [512], [513] and [521], by (Fun) 539] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [512], [513] and [521], by (Fun) 540] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [512], [513] and [521], by (Fun) 541] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [512], [513] and [521], by (Fun) 542] U55(X, Y) >= U55(X, Y) because U55 in Mul, [512] and [513], by (Fun) 543] U56(X) >= U56(X) because U56 in Mul and [517], by (Fun) 544] U61(X, Y) >= U61(X, Y) because U61 in Mul, [512] and [513], by (Fun) 545] U62(X, Y) >= U62(X, Y) because U62 in Mul, [512] and [513], by (Fun) 546] U63(X) >= U63(X) because U63 in Mul and [517], by (Fun) 547] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [512], [513] and [521], by (Fun) 548] U72(X, Y) >= U72(X, Y) because U72 in Mul, [512] and [513], by (Fun) 549] U73(X, Y) >= U73(X, Y) because U73 in Mul, [512] and [513], by (Fun) 550] isPal(X) >= isPal(X) because isPal in Mul and [517], by (Fun) 551] U74(X) >= U74(X) because U74 in Mul and [517], by (Fun) 552] U81(X, Y) >= U81(X, Y) because U81 in Mul, [512] and [513], by (Fun) 553] U82(X, Y) >= U82(X, Y) because [512] and [513], by (Fun) 554] U83(X) >= U83(X) because U83 in Mul and [517], by (Fun) 555] isNePal(X) >= isNePal(X) because isNePal in Mul and [517], by (Fun) 556] U91(X, Y) >= U91(X, Y) because U91 in Mul, [512] and [513], by (Fun) 557] U92(X) >= U92(X) because U92 in Mul and [517], by (Fun) 558] top(mark(X)) >= top(X) because [559], by (Star) 559] top*(mark(X)) >= top(X) because [560], by (Select) 560] mark(X) >= top(X) because [561], by (Star) 561] mark*(X) >= top(X) because mark > top and [562], by (Copy) 562] mark*(X) >= X because [517], by (Select) 563] top(X) >= top(X) because top in Mul and [564], by (Fun) 564] X >= X by (Meta) We can thus remove the following rules: active(!6220!6220(nil, X)) => mark(X) active(U13(tt)) => mark(tt) active(U22(tt, X, Y)) => mark(U23(isPalListKind(Y), X, Y)) active(U23(tt, X, Y)) => mark(U24(isPalListKind(Y), X, Y)) 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(U51(tt, X, Y)) => mark(U52(isPalListKind(X), X, Y)) active(U52(tt, X, Y)) => mark(U53(isPalListKind(Y), X, Y)) active(U55(tt, X)) => mark(U56(isList(X))) active(U56(tt)) => mark(tt) active(U62(tt, X)) => mark(U63(isQid(X))) active(U92(tt)) => 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(isPalListKind(i)) => mark(tt) active(isPalListKind(nil)) => mark(tt) active(isPalListKind(u)) => mark(tt) active(isQid(e)) => mark(tt) active(isQid(o)) => mark(tt) !6220!6220(mark(X), Y) => mark(!6220!6220(X, Y)) U11(mark(X), Y) => mark(U11(X, Y)) U21(mark(X), Y, Z) => mark(U21(X, Y, Z)) U23(mark(X), Y, Z) => mark(U23(X, Y, Z)) U32(mark(X), Y) => mark(U32(X, Y)) U33(mark(X)) => mark(U33(X)) U41(mark(X), Y, Z) => mark(U41(X, Y, Z)) U44(mark(X), Y, Z) => mark(U44(X, Y, Z)) U45(mark(X), Y) => mark(U45(X, Y)) U51(mark(X), Y, Z) => mark(U51(X, Y, Z)) U52(mark(X), Y, Z) => mark(U52(X, Y, Z)) U55(mark(X), Y) => mark(U55(X, Y)) U61(mark(X), Y) => mark(U61(X, Y)) U91(mark(X), Y) => mark(U91(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(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(!6220!6220(X, nil)) >? mark(X) active(U11(tt, X)) >? mark(U12(isPalListKind(X), X)) active(U12(tt, X)) >? mark(U13(isNeList(X))) active(U21(tt, X, Y)) >? mark(U22(isPalListKind(X), 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(U45(tt, X)) >? mark(U46(isNeList(X))) active(U46(tt)) >? mark(tt) active(U53(tt, X, Y)) >? mark(U54(isPalListKind(Y), X, Y)) active(U54(tt, X, Y)) >? mark(U55(isNeList(X), Y)) active(U61(tt, X)) >? mark(U62(isPalListKind(X), 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(isList(X)) >? mark(U11(isPalListKind(X), X)) active(isList(nil)) >? mark(tt) 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(o)) >? mark(tt) active(isPalListKind(!6220!6220(X, Y))) >? mark(U91(isPalListKind(X), Y)) active(isQid(a)) >? mark(tt) active(isQid(i)) >? mark(tt) active(isQid(u)) >? mark(tt) active(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U12(mark(X), Y) >? mark(U12(X, Y)) U13(mark(X)) >? mark(U13(X)) U22(mark(X), Y, Z) >? mark(U22(X, Y, Z)) U24(mark(X), Y, Z) >? mark(U24(X, Y, Z)) U25(mark(X), Y) >? mark(U25(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U42(mark(X), Y, Z) >? mark(U42(X, Y, Z)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U46(mark(X)) >? mark(U46(X)) U53(mark(X), Y, Z) >? mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U56(mark(X)) >? mark(U56(X)) U62(mark(X), Y) >? mark(U62(X, Y)) U63(mark(X)) >? mark(U63(X)) U71(mark(X), Y, Z) >? mark(U71(X, Y, Z)) U72(mark(X), Y) >? mark(U72(X, Y)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U81(mark(X), Y) >? mark(U81(X, Y)) U82(mark(X), Y) >? mark(U82(X, Y)) U83(mark(X)) >? mark(U83(X)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(mark(X)) >? top(proper(X)) top(ok(X)) >? top(active(X)) about to try horpo We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[U23(x_1, x_2, x_3)]] = U23(x_3, x_1, x_2) [[U24(x_1, x_2, x_3)]] = U24(x_3, x_2, x_1) [[U92(x_1)]] = x_1 [[active(x_1)]] = x_1 [[isPalListKind(x_1)]] = x_1 [[ok(x_1)]] = x_1 [[proper(x_1)]] = x_1 We choose Lex = {!6220!6220, U23, U24} and Mul = {U11, U12, U13, U21, U22, U25, U26, U31, U32, U33, U41, U42, U43, U44, U45, U46, U51, U52, U53, U54, U55, U56, U61, U62, U63, U71, U72, U73, U74, U81, U82, U83, U91, a, e, i, isList, isNeList, isNePal, isPal, isQid, mark, nil, o, top, tt, u}, and the following precedence: nil > o > U31 > U45 > U52 > a > U32 > U44 > U41 > U21 > U24 > e > !6220!6220 > isQid > U23 > U25 > isList > U53 > U54 > U55 > U22 > U71 > U72 > isPal > U81 > tt > U51 > U82 > U43 > U91 > U11 > i > U42 > isNePal > U73 > U74 > U12 > U61 > U62 > U13 = U26 = U33 = U46 = U56 = U63 = U83 = isNeList = mark > u > top 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) >= mark(!6220!6220(X, !6220!6220(Y, Z))) !6220!6220(X, nil) > mark(X) U11(tt, X) >= mark(U12(X, X)) U12(tt, X) >= mark(U13(isNeList(X))) U21(tt, X, Y) >= mark(U22(X, X, Y)) U24(tt, X, Y) > mark(U25(isList(X), Y)) U25(tt, X) > mark(U26(isList(X))) U26(tt) >= mark(tt) U31(tt, X) >= mark(U32(X, X)) U32(tt, X) >= mark(U33(isQid(X))) U33(tt) >= mark(tt) U45(tt, X) > mark(U46(isNeList(X))) U46(tt) >= mark(tt) U53(tt, X, Y) > mark(U54(Y, X, Y)) U54(tt, X, Y) > mark(U55(isNeList(X), Y)) U61(tt, X) > mark(U62(X, X)) U63(tt) >= mark(tt) U71(tt, X, Y) > mark(U72(X, Y)) U72(tt, X) >= mark(U73(isPal(X), X)) U73(tt, X) > mark(U74(X)) U74(tt) >= mark(tt) U81(tt, X) > mark(U82(X, X)) U82(tt, X) > mark(U83(isNePal(X))) U83(tt) >= mark(tt) U91(tt, X) >= mark(X) isList(X) >= mark(U11(X, X)) isList(nil) >= mark(tt) isNeList(!6220!6220(X, Y)) >= mark(U51(X, X, Y)) isNePal(X) > mark(U61(X, X)) isNePal(!6220!6220(X, !6220!6220(Y, X))) >= mark(U71(isQid(X), X, Y)) isPal(X) >= mark(U81(X, X)) isPal(nil) >= mark(tt) a > mark(tt) e > mark(tt) o > mark(tt) !6220!6220(X, Y) > mark(U91(X, Y)) isQid(a) >= mark(tt) isQid(i) > mark(tt) isQid(u) > mark(tt) !6220!6220(X, Y) >= !6220!6220(X, Y) !6220!6220(X, Y) >= !6220!6220(X, Y) U11(X, Y) >= U11(X, Y) U12(X, Y) >= U12(X, Y) U13(X) >= U13(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) U26(X) >= U26(X) U31(X, Y) >= U31(X, Y) U32(X, Y) >= U32(X, Y) U33(X) >= U33(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) U46(X) >= U46(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) U56(X) >= U56(X) U61(X, Y) >= U61(X, Y) U62(X, Y) >= U62(X, Y) U63(X) >= U63(X) U71(X, Y, Z) >= U71(X, Y, Z) U72(X, Y) >= U72(X, Y) U73(X, Y) >= U73(X, Y) U74(X) >= U74(X) U81(X, Y) >= U81(X, Y) U82(X, Y) >= U82(X, Y) U83(X) >= U83(X) U91(X, Y) >= U91(X, Y) X >= X !6220!6220(X, mark(Y)) >= mark(!6220!6220(X, Y)) U12(mark(X), Y) > mark(U12(X, Y)) U13(mark(X)) >= mark(U13(X)) U22(mark(X), Y, Z) > mark(U22(X, Y, Z)) U24(mark(X), Y, Z) > mark(U24(X, Y, Z)) U25(mark(X), Y) >= mark(U25(X, Y)) U26(mark(X)) >= mark(U26(X)) U31(mark(X), Y) >= mark(U31(X, Y)) U42(mark(X), Y, Z) > mark(U42(X, Y, Z)) U43(mark(X), Y, Z) >= mark(U43(X, Y, Z)) U46(mark(X)) >= mark(U46(X)) U53(mark(X), Y, Z) >= mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >= mark(U54(X, Y, Z)) U56(mark(X)) >= mark(U56(X)) U62(mark(X), Y) > mark(U62(X, Y)) U63(mark(X)) >= mark(U63(X)) U71(mark(X), Y, Z) > mark(U71(X, Y, Z)) U72(mark(X), Y) > mark(U72(X, Y)) U73(mark(X), Y) >= mark(U73(X, Y)) U74(mark(X)) >= mark(U74(X)) U81(mark(X), Y) >= mark(U81(X, Y)) U82(mark(X), Y) >= mark(U82(X, Y)) U83(mark(X)) >= mark(U83(X)) mark(X) >= mark(X) !6220!6220(X, Y) >= !6220!6220(X, Y) nil >= nil U11(X, Y) >= U11(X, Y) tt >= tt U12(X, Y) >= U12(X, Y) X >= X U13(X) >= U13(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) U26(X) >= U26(X) U31(X, Y) >= U31(X, Y) U32(X, Y) >= U32(X, Y) U33(X) >= U33(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) U46(X) >= U46(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) U56(X) >= U56(X) U61(X, Y) >= U61(X, Y) U62(X, Y) >= U62(X, Y) U63(X) >= U63(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) U74(X) >= U74(X) U81(X, Y) >= U81(X, Y) U82(X, Y) >= U82(X, Y) U83(X) >= U83(X) isNePal(X) >= isNePal(X) U91(X, Y) >= U91(X, Y) X >= X a >= a e >= e i >= i o >= o u >= u !6220!6220(X, Y) >= !6220!6220(X, Y) U11(X, Y) >= U11(X, Y) U12(X, Y) >= U12(X, Y) X >= X U13(X) >= U13(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) U26(X) >= U26(X) U31(X, Y) >= U31(X, Y) U32(X, Y) >= U32(X, Y) U33(X) >= U33(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) U46(X) >= U46(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) U56(X) >= U56(X) U61(X, Y) >= U61(X, Y) U62(X, Y) >= U62(X, Y) U63(X) >= U63(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) U74(X) >= U74(X) U81(X, Y) >= U81(X, Y) U82(X, Y) >= U82(X, Y) U83(X) >= U83(X) isNePal(X) >= isNePal(X) U91(X, Y) >= U91(X, Y) X >= X top(mark(X)) >= top(X) top(X) >= top(X) With these choices, we have: 1] !6220!6220(!6220!6220(X, Y), Z) >= mark(!6220!6220(X, !6220!6220(Y, Z))) because [2], by (Star) 2] !6220!6220*(!6220!6220(X, Y), Z) >= mark(!6220!6220(X, !6220!6220(Y, Z))) because !6220!6220 > mark and [3], by (Copy) 3] !6220!6220*(!6220!6220(X, Y), Z) >= !6220!6220(X, !6220!6220(Y, Z)) because [4], [7] and [9], by (Stat) 4] !6220!6220(X, Y) > X because [5], by definition 5] !6220!6220*(X, Y) >= X because [6], by (Select) 6] X >= X by (Meta) 7] !6220!6220*(!6220!6220(X, Y), Z) >= X because [8], by (Select) 8] !6220!6220(X, Y) >= X because [5], by (Star) 9] !6220!6220*(!6220!6220(X, Y), Z) >= !6220!6220(Y, Z) because [10], [13] and [15], by (Stat) 10] !6220!6220(X, Y) > Y because [11], by definition 11] !6220!6220*(X, Y) >= Y because [12], by (Select) 12] Y >= Y by (Meta) 13] !6220!6220*(!6220!6220(X, Y), Z) >= Y because [14], by (Select) 14] !6220!6220(X, Y) >= Y because [11], by (Star) 15] !6220!6220*(!6220!6220(X, Y), Z) >= Z because [16], by (Select) 16] Z >= Z by (Meta) 17] !6220!6220(X, nil) > mark(X) because [18], by definition 18] !6220!6220*(X, nil) >= mark(X) because !6220!6220 > mark and [19], by (Copy) 19] !6220!6220*(X, nil) >= X because [6], by (Select) 20] U11(tt, X) >= mark(U12(X, X)) because [21], by (Star) 21] U11*(tt, X) >= mark(U12(X, X)) because U11 > mark and [22], by (Copy) 22] U11*(tt, X) >= U12(X, X) because U11 > U12, [23] and [23], by (Copy) 23] U11*(tt, X) >= X because [24], by (Select) 24] X >= X by (Meta) 25] U12(tt, X) >= mark(U13(isNeList(X))) because [26], by (Star) 26] U12*(tt, X) >= mark(U13(isNeList(X))) because U12 > mark and [27], by (Copy) 27] U12*(tt, X) >= U13(isNeList(X)) because U12 > U13 and [28], by (Copy) 28] U12*(tt, X) >= isNeList(X) because U12 > isNeList and [29], by (Copy) 29] U12*(tt, X) >= X because [24], by (Select) 30] U21(tt, X, Y) >= mark(U22(X, X, Y)) because [31], by (Star) 31] U21*(tt, X, Y) >= mark(U22(X, X, Y)) because U21 > mark and [32], by (Copy) 32] U21*(tt, X, Y) >= U22(X, X, Y) because U21 > U22, [33], [33] and [35], by (Copy) 33] U21*(tt, X, Y) >= X because [34], by (Select) 34] X >= X by (Meta) 35] U21*(tt, X, Y) >= Y because [36], by (Select) 36] Y >= Y by (Meta) 37] U24(tt, X, Y) > mark(U25(isList(X), Y)) because [38], by definition 38] U24*(tt, X, Y) >= mark(U25(isList(X), Y)) because U24 > mark and [39], by (Copy) 39] U24*(tt, X, Y) >= U25(isList(X), Y) because U24 > U25, [40] and [42], by (Copy) 40] U24*(tt, X, Y) >= isList(X) because U24 > isList and [41], by (Copy) 41] U24*(tt, X, Y) >= X because [34], by (Select) 42] U24*(tt, X, Y) >= Y because [36], by (Select) 43] U25(tt, X) > mark(U26(isList(X))) because [44], by definition 44] U25*(tt, X) >= mark(U26(isList(X))) because U25 > mark and [45], by (Copy) 45] U25*(tt, X) >= U26(isList(X)) because U25 > U26 and [46], by (Copy) 46] U25*(tt, X) >= isList(X) because U25 > isList and [47], by (Copy) 47] U25*(tt, X) >= X because [36], by (Select) 48] U26(tt) >= mark(tt) because U26 = mark, U26 in Mul and [49], by (Fun) 49] tt >= tt by (Fun) 50] U31(tt, X) >= mark(U32(X, X)) because [51], by (Star) 51] U31*(tt, X) >= mark(U32(X, X)) because U31 > mark and [52], by (Copy) 52] U31*(tt, X) >= U32(X, X) because U31 > U32, [53] and [53], by (Copy) 53] U31*(tt, X) >= X because [24], by (Select) 54] U32(tt, X) >= mark(U33(isQid(X))) because [55], by (Star) 55] U32*(tt, X) >= mark(U33(isQid(X))) because U32 > mark and [56], by (Copy) 56] U32*(tt, X) >= U33(isQid(X)) because U32 > U33 and [57], by (Copy) 57] U32*(tt, X) >= isQid(X) because U32 > isQid and [58], by (Copy) 58] U32*(tt, X) >= X because [24], by (Select) 59] U33(tt) >= mark(tt) because U33 = mark, U33 in Mul and [49], by (Fun) 60] U45(tt, X) > mark(U46(isNeList(X))) because [61], by definition 61] U45*(tt, X) >= mark(U46(isNeList(X))) because U45 > mark and [62], by (Copy) 62] U45*(tt, X) >= U46(isNeList(X)) because U45 > U46 and [63], by (Copy) 63] U45*(tt, X) >= isNeList(X) because U45 > isNeList and [64], by (Copy) 64] U45*(tt, X) >= X because [36], by (Select) 65] U46(tt) >= mark(tt) because U46 = mark, U46 in Mul and [49], by (Fun) 66] U53(tt, X, Y) > mark(U54(Y, X, Y)) because [67], by definition 67] U53*(tt, X, Y) >= mark(U54(Y, X, Y)) because U53 > mark and [68], by (Copy) 68] U53*(tt, X, Y) >= U54(Y, X, Y) because U53 > U54, [69], [70] and [69], by (Copy) 69] U53*(tt, X, Y) >= Y because [36], by (Select) 70] U53*(tt, X, Y) >= X because [34], by (Select) 71] U54(tt, X, Y) > mark(U55(isNeList(X), Y)) because [72], by definition 72] U54*(tt, X, Y) >= mark(U55(isNeList(X), Y)) because U54 > mark and [73], by (Copy) 73] U54*(tt, X, Y) >= U55(isNeList(X), Y) because U54 > U55, [74] and [76], by (Copy) 74] U54*(tt, X, Y) >= isNeList(X) because U54 > isNeList and [75], by (Copy) 75] U54*(tt, X, Y) >= X because [34], by (Select) 76] U54*(tt, X, Y) >= Y because [36], by (Select) 77] U61(tt, X) > mark(U62(X, X)) because [78], by definition 78] U61*(tt, X) >= mark(U62(X, X)) because U61 > mark and [79], by (Copy) 79] U61*(tt, X) >= U62(X, X) because U61 > U62, [80] and [80], by (Copy) 80] U61*(tt, X) >= X because [24], by (Select) 81] U63(tt) >= mark(tt) because U63 = mark, U63 in Mul and [49], by (Fun) 82] U71(tt, X, Y) > mark(U72(X, Y)) because [83], by definition 83] U71*(tt, X, Y) >= mark(U72(X, Y)) because U71 > mark and [84], by (Copy) 84] U71*(tt, X, Y) >= U72(X, Y) because U71 > U72, [85] and [87], by (Copy) 85] U71*(tt, X, Y) >= X because [86], by (Select) 86] X >= X by (Meta) 87] U71*(tt, X, Y) >= Y because [88], by (Select) 88] Y >= Y by (Meta) 89] U72(tt, X) >= mark(U73(isPal(X), X)) because [90], by (Star) 90] U72*(tt, X) >= mark(U73(isPal(X), X)) because U72 > mark and [91], by (Copy) 91] U72*(tt, X) >= U73(isPal(X), X) because U72 > U73, [92] and [93], by (Copy) 92] U72*(tt, X) >= isPal(X) because U72 > isPal and [93], by (Copy) 93] U72*(tt, X) >= X because [88], by (Select) 94] U73(tt, X) > mark(U74(X)) because [95], by definition 95] U73*(tt, X) >= mark(U74(X)) because U73 > mark and [96], by (Copy) 96] U73*(tt, X) >= U74(X) because U73 > U74 and [97], by (Copy) 97] U73*(tt, X) >= X because [88], by (Select) 98] U74(tt) >= mark(tt) because [99], by (Star) 99] U74*(tt) >= mark(tt) because U74 > mark and [100], by (Copy) 100] U74*(tt) >= tt because [49], by (Select) 101] U81(tt, X) > mark(U82(X, X)) because [102], by definition 102] U81*(tt, X) >= mark(U82(X, X)) because U81 > mark and [103], by (Copy) 103] U81*(tt, X) >= U82(X, X) because U81 > U82, [104] and [104], by (Copy) 104] U81*(tt, X) >= X because [24], by (Select) 105] U82(tt, X) > mark(U83(isNePal(X))) because [106], by definition 106] U82*(tt, X) >= mark(U83(isNePal(X))) because U82 > mark and [107], by (Copy) 107] U82*(tt, X) >= U83(isNePal(X)) because U82 > U83 and [108], by (Copy) 108] U82*(tt, X) >= isNePal(X) because U82 > isNePal and [109], by (Copy) 109] U82*(tt, X) >= X because [24], by (Select) 110] U83(tt) >= mark(tt) because U83 = mark, U83 in Mul and [49], by (Fun) 111] U91(tt, X) >= mark(X) because [112], by (Star) 112] U91*(tt, X) >= mark(X) because U91 > mark and [113], by (Copy) 113] U91*(tt, X) >= X because [36], by (Select) 114] isList(X) >= mark(U11(X, X)) because [115], by (Star) 115] isList*(X) >= mark(U11(X, X)) because isList > mark and [116], by (Copy) 116] isList*(X) >= U11(X, X) because isList > U11, [117] and [117], by (Copy) 117] isList*(X) >= X because [24], by (Select) 118] isList(nil) >= mark(tt) because [119], by (Star) 119] isList*(nil) >= mark(tt) because isList > mark and [120], by (Copy) 120] isList*(nil) >= tt because isList > tt, by (Copy) 121] isNeList(!6220!6220(X, Y)) >= mark(U51(X, X, Y)) because isNeList = mark, isNeList in Mul and [122], by (Fun) 122] !6220!6220(X, Y) >= U51(X, X, Y) because [123], by (Star) 123] !6220!6220*(X, Y) >= U51(X, X, Y) because !6220!6220 > U51, [124], [124] and [125], by (Copy) 124] !6220!6220*(X, Y) >= X because [34], by (Select) 125] !6220!6220*(X, Y) >= Y because [36], by (Select) 126] isNePal(X) > mark(U61(X, X)) because [127], by definition 127] isNePal*(X) >= mark(U61(X, X)) because isNePal > mark and [128], by (Copy) 128] isNePal*(X) >= U61(X, X) because isNePal > U61, [129] and [129], by (Copy) 129] isNePal*(X) >= X because [24], by (Select) 130] isNePal(!6220!6220(X, !6220!6220(Y, X))) >= mark(U71(isQid(X), X, Y)) because [131], by (Star) 131] isNePal*(!6220!6220(X, !6220!6220(Y, X))) >= mark(U71(isQid(X), X, Y)) because [132], by (Select) 132] !6220!6220(X, !6220!6220(Y, X)) >= mark(U71(isQid(X), X, Y)) because [133], by (Star) 133] !6220!6220*(X, !6220!6220(Y, X)) >= mark(U71(isQid(X), X, Y)) because [134], by (Select) 134] !6220!6220(Y, X) >= mark(U71(isQid(X), X, Y)) because [135], by (Star) 135] !6220!6220*(Y, X) >= mark(U71(isQid(X), X, Y)) because !6220!6220 > mark and [136], by (Copy) 136] !6220!6220*(Y, X) >= U71(isQid(X), X, Y) because !6220!6220 > U71, [137], [138] and [139], by (Copy) 137] !6220!6220*(Y, X) >= isQid(X) because !6220!6220 > isQid and [138], by (Copy) 138] !6220!6220*(Y, X) >= X because [86], by (Select) 139] !6220!6220*(Y, X) >= Y because [88], by (Select) 140] isPal(X) >= mark(U81(X, X)) because [141], by (Star) 141] isPal*(X) >= mark(U81(X, X)) because isPal > mark and [142], by (Copy) 142] isPal*(X) >= U81(X, X) because isPal > U81, [143] and [143], by (Copy) 143] isPal*(X) >= X because [24], by (Select) 144] isPal(nil) >= mark(tt) because [145], by (Star) 145] isPal*(nil) >= mark(tt) because isPal > mark and [146], by (Copy) 146] isPal*(nil) >= tt because isPal > tt, by (Copy) 147] a > mark(tt) because [148], by definition 148] a* >= mark(tt) because a > mark and [149], by (Copy) 149] a* >= tt because a > tt, by (Copy) 150] e > mark(tt) because [151], by definition 151] e* >= mark(tt) because e > mark and [152], by (Copy) 152] e* >= tt because e > tt, by (Copy) 153] o > mark(tt) because [154], by definition 154] o* >= mark(tt) because o > mark and [155], by (Copy) 155] o* >= tt because o > tt, by (Copy) 156] !6220!6220(X, Y) > mark(U91(X, Y)) because [157], by definition 157] !6220!6220*(X, Y) >= mark(U91(X, Y)) because !6220!6220 > mark and [158], by (Copy) 158] !6220!6220*(X, Y) >= U91(X, Y) because !6220!6220 > U91, [124] and [125], by (Copy) 159] isQid(a) >= mark(tt) because [160], by (Star) 160] isQid*(a) >= mark(tt) because isQid > mark and [161], by (Copy) 161] isQid*(a) >= tt because isQid > tt, by (Copy) 162] isQid(i) > mark(tt) because [163], by definition 163] isQid*(i) >= mark(tt) because isQid > mark and [164], by (Copy) 164] isQid*(i) >= tt because isQid > tt, by (Copy) 165] isQid(u) > mark(tt) because [166], by definition 166] isQid*(u) >= mark(tt) because isQid > mark and [167], by (Copy) 167] isQid*(u) >= tt because isQid > tt, by (Copy) 168] !6220!6220(X, Y) >= !6220!6220(X, Y) because [169] and [170], by (Fun) 169] X >= X by (Meta) 170] Y >= Y by (Meta) 171] !6220!6220(X, Y) >= !6220!6220(X, Y) because [169] and [172], by (Fun) 172] Y >= Y by (Meta) 173] U11(X, Y) >= U11(X, Y) because U11 in Mul, [169] and [172], by (Fun) 174] U12(X, Y) >= U12(X, Y) because U12 in Mul, [169] and [172], by (Fun) 175] U13(X) >= U13(X) because U13 in Mul and [176], by (Fun) 176] X >= X by (Meta) 177] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [169], [172] and [178], by (Fun) 178] Z >= Z by (Meta) 179] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [169], [172] and [178], by (Fun) 180] U23(X, Y, Z) >= U23(X, Y, Z) because [169], [172] and [178], by (Fun) 181] U24(X, Y, Z) >= U24(X, Y, Z) because [169], [172] and [178], by (Fun) 182] U25(X, Y) >= U25(X, Y) because U25 in Mul, [169] and [172], by (Fun) 183] U26(X) >= U26(X) because U26 in Mul and [176], by (Fun) 184] U31(X, Y) >= U31(X, Y) because U31 in Mul, [169] and [172], by (Fun) 185] U32(X, Y) >= U32(X, Y) because U32 in Mul, [169] and [172], by (Fun) 186] U33(X) >= U33(X) because U33 in Mul and [176], by (Fun) 187] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [169], [172] and [178], by (Fun) 188] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [169], [172] and [178], by (Fun) 189] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [169], [172] and [178], by (Fun) 190] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [169], [172] and [178], by (Fun) 191] U45(X, Y) >= U45(X, Y) because U45 in Mul, [169] and [172], by (Fun) 192] U46(X) >= U46(X) because U46 in Mul and [176], by (Fun) 193] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [169], [172] and [178], by (Fun) 194] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [169], [172] and [178], by (Fun) 195] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [169], [172] and [178], by (Fun) 196] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [169], [172] and [178], by (Fun) 197] U55(X, Y) >= U55(X, Y) because U55 in Mul, [169] and [172], by (Fun) 198] U56(X) >= U56(X) because U56 in Mul and [176], by (Fun) 199] U61(X, Y) >= U61(X, Y) because U61 in Mul, [169] and [172], by (Fun) 200] U62(X, Y) >= U62(X, Y) because U62 in Mul, [169] and [172], by (Fun) 201] U63(X) >= U63(X) because U63 in Mul and [176], by (Fun) 202] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [169], [172] and [178], by (Fun) 203] U72(X, Y) >= U72(X, Y) because U72 in Mul, [169] and [172], by (Fun) 204] U73(X, Y) >= U73(X, Y) because U73 in Mul, [169] and [172], by (Fun) 205] U74(X) >= U74(X) because U74 in Mul and [176], by (Fun) 206] U81(X, Y) >= U81(X, Y) because U81 in Mul, [169] and [172], by (Fun) 207] U82(X, Y) >= U82(X, Y) because U82 in Mul, [169] and [172], by (Fun) 208] U83(X) >= U83(X) because U83 in Mul and [176], by (Fun) 209] U91(X, Y) >= U91(X, Y) because U91 in Mul, [169] and [172], by (Fun) 210] X >= X by (Meta) 211] !6220!6220(X, mark(Y)) >= mark(!6220!6220(X, Y)) because [212], by (Star) 212] !6220!6220*(X, mark(Y)) >= mark(!6220!6220(X, Y)) because !6220!6220 > mark and [213], by (Copy) 213] !6220!6220*(X, mark(Y)) >= !6220!6220(X, Y) because [169], [214], [216] and [217], by (Stat) 214] mark(Y) > Y because [215], by definition 215] mark*(Y) >= Y because [172], by (Select) 216] !6220!6220*(X, mark(Y)) >= X because [169], by (Select) 217] !6220!6220*(X, mark(Y)) >= Y because [218], by (Select) 218] mark(Y) >= Y because [215], by (Star) 219] U12(mark(X), Y) > mark(U12(X, Y)) because [220], by definition 220] U12*(mark(X), Y) >= mark(U12(X, Y)) because U12 > mark and [221], by (Copy) 221] U12*(mark(X), Y) >= U12(X, Y) because U12 in Mul, [222] and [172], by (Stat) 222] mark(X) > X because [223], by definition 223] mark*(X) >= X because [169], by (Select) 224] U13(mark(X)) >= mark(U13(X)) because U13 = mark, U13 in Mul and [225], by (Fun) 225] mark(X) >= U13(X) because mark = U13, mark in Mul and [176], by (Fun) 226] U22(mark(X), Y, Z) > mark(U22(X, Y, Z)) because [227], by definition 227] U22*(mark(X), Y, Z) >= mark(U22(X, Y, Z)) because U22 > mark and [228], by (Copy) 228] U22*(mark(X), Y, Z) >= U22(X, Y, Z) because U22 in Mul, [222], [172] and [178], by (Stat) 229] U24(mark(X), Y, Z) > mark(U24(X, Y, Z)) because [230], by definition 230] U24*(mark(X), Y, Z) >= mark(U24(X, Y, Z)) because U24 > mark and [231], by (Copy) 231] U24*(mark(X), Y, Z) >= U24(X, Y, Z) because [222], [172], [178], [232], [234] and [235], by (Stat) 232] U24*(mark(X), Y, Z) >= X because [233], by (Select) 233] mark(X) >= X because [223], by (Star) 234] U24*(mark(X), Y, Z) >= Y because [172], by (Select) 235] U24*(mark(X), Y, Z) >= Z because [178], by (Select) 236] U25(mark(X), Y) >= mark(U25(X, Y)) because [237], by (Star) 237] U25*(mark(X), Y) >= mark(U25(X, Y)) because U25 > mark and [238], by (Copy) 238] U25*(mark(X), Y) >= U25(X, Y) because U25 in Mul, [222] and [172], by (Stat) 239] U26(mark(X)) >= mark(U26(X)) because U26 = mark, U26 in Mul and [240], by (Fun) 240] mark(X) >= U26(X) because mark = U26, mark in Mul and [176], by (Fun) 241] U31(mark(X), Y) >= mark(U31(X, Y)) because [242], by (Star) 242] U31*(mark(X), Y) >= mark(U31(X, Y)) because U31 > mark and [243], by (Copy) 243] U31*(mark(X), Y) >= U31(X, Y) because U31 in Mul, [222] and [172], by (Stat) 244] U42(mark(X), Y, Z) > mark(U42(X, Y, Z)) because [245], by definition 245] U42*(mark(X), Y, Z) >= mark(U42(X, Y, Z)) because U42 > mark and [246], by (Copy) 246] U42*(mark(X), Y, Z) >= U42(X, Y, Z) because U42 in Mul, [222], [172] and [178], by (Stat) 247] U43(mark(X), Y, Z) >= mark(U43(X, Y, Z)) because [248], by (Star) 248] U43*(mark(X), Y, Z) >= mark(U43(X, Y, Z)) because U43 > mark and [249], by (Copy) 249] U43*(mark(X), Y, Z) >= U43(X, Y, Z) because U43 in Mul, [222], [172] and [178], by (Stat) 250] U46(mark(X)) >= mark(U46(X)) because U46 = mark, U46 in Mul and [251], by (Fun) 251] mark(X) >= U46(X) because mark = U46, mark in Mul and [176], by (Fun) 252] U53(mark(X), Y, Z) >= mark(U53(X, Y, Z)) because [253], by (Star) 253] U53*(mark(X), Y, Z) >= mark(U53(X, Y, Z)) because U53 > mark and [254], by (Copy) 254] U53*(mark(X), Y, Z) >= U53(X, Y, Z) because U53 in Mul, [222], [172] and [178], by (Stat) 255] U54(mark(X), Y, Z) >= mark(U54(X, Y, Z)) because [256], by (Star) 256] U54*(mark(X), Y, Z) >= mark(U54(X, Y, Z)) because U54 > mark and [257], by (Copy) 257] U54*(mark(X), Y, Z) >= U54(X, Y, Z) because U54 in Mul, [222], [172] and [178], by (Stat) 258] U56(mark(X)) >= mark(U56(X)) because U56 = mark, U56 in Mul and [259], by (Fun) 259] mark(X) >= U56(X) because mark = U56, mark in Mul and [176], by (Fun) 260] U62(mark(X), Y) > mark(U62(X, Y)) because [261], by definition 261] U62*(mark(X), Y) >= mark(U62(X, Y)) because U62 > mark and [262], by (Copy) 262] U62*(mark(X), Y) >= U62(X, Y) because U62 in Mul, [222] and [172], by (Stat) 263] U63(mark(X)) >= mark(U63(X)) because U63 = mark, U63 in Mul and [264], by (Fun) 264] mark(X) >= U63(X) because mark = U63, mark in Mul and [176], by (Fun) 265] U71(mark(X), Y, Z) > mark(U71(X, Y, Z)) because [266], by definition 266] U71*(mark(X), Y, Z) >= mark(U71(X, Y, Z)) because U71 > mark and [267], by (Copy) 267] U71*(mark(X), Y, Z) >= U71(X, Y, Z) because U71 in Mul, [222], [172] and [178], by (Stat) 268] U72(mark(X), Y) > mark(U72(X, Y)) because [269], by definition 269] U72*(mark(X), Y) >= mark(U72(X, Y)) because U72 > mark and [270], by (Copy) 270] U72*(mark(X), Y) >= U72(X, Y) because U72 in Mul, [222] and [172], by (Stat) 271] U73(mark(X), Y) >= mark(U73(X, Y)) because [272], by (Star) 272] U73*(mark(X), Y) >= mark(U73(X, Y)) because U73 > mark and [273], by (Copy) 273] U73*(mark(X), Y) >= U73(X, Y) because U73 in Mul, [222] and [172], by (Stat) 274] U74(mark(X)) >= mark(U74(X)) because [275], by (Star) 275] U74*(mark(X)) >= mark(U74(X)) because U74 > mark and [276], by (Copy) 276] U74*(mark(X)) >= U74(X) because U74 in Mul and [277], by (Stat) 277] mark(X) > X because [278], by definition 278] mark*(X) >= X because [210], by (Select) 279] U81(mark(X), Y) >= mark(U81(X, Y)) because [280], by (Star) 280] U81*(mark(X), Y) >= mark(U81(X, Y)) because U81 > mark and [281], by (Copy) 281] U81*(mark(X), Y) >= U81(X, Y) because U81 in Mul, [222] and [172], by (Stat) 282] U82(mark(X), Y) >= mark(U82(X, Y)) because [283], by (Star) 283] U82*(mark(X), Y) >= mark(U82(X, Y)) because U82 > mark and [284], by (Copy) 284] U82*(mark(X), Y) >= U82(X, Y) because U82 in Mul, [222] and [172], by (Stat) 285] U83(mark(X)) >= mark(U83(X)) because U83 = mark, U83 in Mul and [286], by (Fun) 286] mark(X) >= U83(X) because mark = U83, mark in Mul and [176], by (Fun) 287] mark(X) >= mark(X) because mark in Mul and [288], by (Fun) 288] X >= X by (Meta) 289] !6220!6220(X, Y) >= !6220!6220(X, Y) because [290] and [291], by (Fun) 290] X >= X by (Meta) 291] Y >= Y by (Meta) 292] nil >= nil by (Fun) 293] U11(X, Y) >= U11(X, Y) because U11 in Mul, [290] and [291], by (Fun) 294] tt >= tt by (Fun) 295] U12(X, Y) >= U12(X, Y) because U12 in Mul, [290] and [291], by (Fun) 296] X >= X by (Meta) 297] U13(X) >= U13(X) because U13 in Mul and [298], by (Fun) 298] X >= X by (Meta) 299] isNeList(X) >= isNeList(X) because isNeList in Mul and [298], by (Fun) 300] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [290], [291] and [301], by (Fun) 301] Z >= Z by (Meta) 302] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [290], [291] and [301], by (Fun) 303] U23(X, Y, Z) >= U23(X, Y, Z) because [290], [291] and [301], by (Fun) 304] U24(X, Y, Z) >= U24(X, Y, Z) because [290], [291] and [301], by (Fun) 305] U25(X, Y) >= U25(X, Y) because U25 in Mul, [290] and [291], by (Fun) 306] isList(X) >= isList(X) because isList in Mul and [298], by (Fun) 307] U26(X) >= U26(X) because U26 in Mul and [298], by (Fun) 308] U31(X, Y) >= U31(X, Y) because U31 in Mul, [290] and [291], by (Fun) 309] U32(X, Y) >= U32(X, Y) because U32 in Mul, [290] and [291], by (Fun) 310] U33(X) >= U33(X) because U33 in Mul and [298], by (Fun) 311] isQid(X) >= isQid(X) because isQid in Mul and [298], by (Fun) 312] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [290], [291] and [301], by (Fun) 313] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [290], [291] and [301], by (Fun) 314] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [290], [291] and [301], by (Fun) 315] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [290], [291] and [301], by (Fun) 316] U45(X, Y) >= U45(X, Y) because U45 in Mul, [290] and [291], by (Fun) 317] U46(X) >= U46(X) because U46 in Mul and [298], by (Fun) 318] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [290], [291] and [301], by (Fun) 319] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [290], [291] and [301], by (Fun) 320] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [290], [291] and [301], by (Fun) 321] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [290], [291] and [301], by (Fun) 322] U55(X, Y) >= U55(X, Y) because U55 in Mul, [290] and [291], by (Fun) 323] U56(X) >= U56(X) because U56 in Mul and [298], by (Fun) 324] U61(X, Y) >= U61(X, Y) because U61 in Mul, [290] and [291], by (Fun) 325] U62(X, Y) >= U62(X, Y) because U62 in Mul, [290] and [291], by (Fun) 326] U63(X) >= U63(X) because U63 in Mul and [298], by (Fun) 327] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [290], [291] and [301], by (Fun) 328] U72(X, Y) >= U72(X, Y) because U72 in Mul, [290] and [291], by (Fun) 329] U73(X, Y) >= U73(X, Y) because U73 in Mul, [290] and [291], by (Fun) 330] isPal(X) >= isPal(X) because isPal in Mul and [298], by (Fun) 331] U74(X) >= U74(X) because U74 in Mul and [298], by (Fun) 332] U81(X, Y) >= U81(X, Y) because U81 in Mul, [290] and [291], by (Fun) 333] U82(X, Y) >= U82(X, Y) because U82 in Mul, [290] and [291], by (Fun) 334] U83(X) >= U83(X) because U83 in Mul and [298], by (Fun) 335] isNePal(X) >= isNePal(X) because isNePal in Mul and [298], by (Fun) 336] U91(X, Y) >= U91(X, Y) because U91 in Mul, [290] and [291], by (Fun) 337] X >= X by (Meta) 338] a >= a by (Fun) 339] e >= e by (Fun) 340] i >= i by (Fun) 341] o >= o by (Fun) 342] u >= u by (Fun) 343] !6220!6220(X, Y) >= !6220!6220(X, Y) because [344] and [345], by (Fun) 344] X >= X by (Meta) 345] Y >= Y by (Meta) 346] U11(X, Y) >= U11(X, Y) because U11 in Mul, [344] and [345], by (Fun) 347] U12(X, Y) >= U12(X, Y) because U12 in Mul, [344] and [345], by (Fun) 348] X >= X by (Meta) 349] U13(X) >= U13(X) because U13 in Mul and [350], by (Fun) 350] X >= X by (Meta) 351] isNeList(X) >= isNeList(X) because isNeList in Mul and [350], by (Fun) 352] U21(X, Y, Z) >= U21(X, Y, Z) because U21 in Mul, [344], [345] and [353], by (Fun) 353] Z >= Z by (Meta) 354] U22(X, Y, Z) >= U22(X, Y, Z) because U22 in Mul, [344], [345] and [353], by (Fun) 355] U23(X, Y, Z) >= U23(X, Y, Z) because [344], [345] and [353], by (Fun) 356] U24(X, Y, Z) >= U24(X, Y, Z) because [344], [345] and [353], by (Fun) 357] U25(X, Y) >= U25(X, Y) because U25 in Mul, [344] and [345], by (Fun) 358] isList(X) >= isList(X) because isList in Mul and [350], by (Fun) 359] U26(X) >= U26(X) because U26 in Mul and [350], by (Fun) 360] U31(X, Y) >= U31(X, Y) because U31 in Mul, [344] and [345], by (Fun) 361] U32(X, Y) >= U32(X, Y) because U32 in Mul, [344] and [345], by (Fun) 362] U33(X) >= U33(X) because U33 in Mul and [350], by (Fun) 363] isQid(X) >= isQid(X) because isQid in Mul and [350], by (Fun) 364] U41(X, Y, Z) >= U41(X, Y, Z) because U41 in Mul, [344], [345] and [353], by (Fun) 365] U42(X, Y, Z) >= U42(X, Y, Z) because U42 in Mul, [344], [345] and [353], by (Fun) 366] U43(X, Y, Z) >= U43(X, Y, Z) because U43 in Mul, [344], [345] and [353], by (Fun) 367] U44(X, Y, Z) >= U44(X, Y, Z) because U44 in Mul, [344], [345] and [353], by (Fun) 368] U45(X, Y) >= U45(X, Y) because U45 in Mul, [344] and [345], by (Fun) 369] U46(X) >= U46(X) because U46 in Mul and [350], by (Fun) 370] U51(X, Y, Z) >= U51(X, Y, Z) because U51 in Mul, [344], [345] and [353], by (Fun) 371] U52(X, Y, Z) >= U52(X, Y, Z) because U52 in Mul, [344], [345] and [353], by (Fun) 372] U53(X, Y, Z) >= U53(X, Y, Z) because U53 in Mul, [344], [345] and [353], by (Fun) 373] U54(X, Y, Z) >= U54(X, Y, Z) because U54 in Mul, [344], [345] and [353], by (Fun) 374] U55(X, Y) >= U55(X, Y) because U55 in Mul, [344] and [345], by (Fun) 375] U56(X) >= U56(X) because U56 in Mul and [350], by (Fun) 376] U61(X, Y) >= U61(X, Y) because U61 in Mul, [344] and [345], by (Fun) 377] U62(X, Y) >= U62(X, Y) because U62 in Mul, [344] and [345], by (Fun) 378] U63(X) >= U63(X) because U63 in Mul and [350], by (Fun) 379] U71(X, Y, Z) >= U71(X, Y, Z) because U71 in Mul, [344], [345] and [353], by (Fun) 380] U72(X, Y) >= U72(X, Y) because U72 in Mul, [344] and [345], by (Fun) 381] U73(X, Y) >= U73(X, Y) because U73 in Mul, [344] and [345], by (Fun) 382] isPal(X) >= isPal(X) because isPal in Mul and [350], by (Fun) 383] U74(X) >= U74(X) because U74 in Mul and [350], by (Fun) 384] U81(X, Y) >= U81(X, Y) because U81 in Mul, [344] and [345], by (Fun) 385] U82(X, Y) >= U82(X, Y) because U82 in Mul, [344] and [345], by (Fun) 386] U83(X) >= U83(X) because U83 in Mul and [350], by (Fun) 387] isNePal(X) >= isNePal(X) because isNePal in Mul and [350], by (Fun) 388] U91(X, Y) >= U91(X, Y) because U91 in Mul, [344] and [345], by (Fun) 389] X >= X by (Meta) 390] top(mark(X)) >= top(X) because top in Mul and [391], by (Fun) 391] mark(X) >= X because [278], by (Star) 392] top(X) >= top(X) because top in Mul and [393], by (Fun) 393] X >= X by (Meta) We can thus remove the following rules: active(!6220!6220(X, nil)) => mark(X) active(U24(tt, X, Y)) => mark(U25(isList(X), Y)) active(U25(tt, X)) => mark(U26(isList(X))) active(U45(tt, X)) => mark(U46(isNeList(X))) active(U53(tt, X, Y)) => mark(U54(isPalListKind(Y), X, Y)) active(U54(tt, X, Y)) => mark(U55(isNeList(X), Y)) active(U61(tt, X)) => mark(U62(isPalListKind(X), X)) active(U71(tt, X, Y)) => mark(U72(isPalListKind(X), Y)) active(U73(tt, X)) => mark(U74(isPalListKind(X))) active(U81(tt, X)) => mark(U82(isPalListKind(X), X)) active(U82(tt, X)) => mark(U83(isNePal(X))) active(isNePal(X)) => mark(U61(isPalListKind(X), X)) active(isPalListKind(a)) => mark(tt) active(isPalListKind(e)) => mark(tt) active(isPalListKind(o)) => mark(tt) active(isPalListKind(!6220!6220(X, Y))) => mark(U91(isPalListKind(X), Y)) active(isQid(i)) => mark(tt) active(isQid(u)) => mark(tt) U12(mark(X), Y) => mark(U12(X, Y)) U22(mark(X), Y, Z) => mark(U22(X, Y, Z)) U24(mark(X), Y, Z) => mark(U24(X, Y, Z)) U42(mark(X), Y, Z) => mark(U42(X, Y, Z)) U62(mark(X), Y) => mark(U62(X, Y)) U71(mark(X), Y, Z) => mark(U71(X, Y, Z)) U72(mark(X), Y) => mark(U72(X, Y)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): active(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(U11(tt, X)) >? mark(U12(isPalListKind(X), X)) active(U12(tt, X)) >? mark(U13(isNeList(X))) active(U21(tt, X, Y)) >? mark(U22(isPalListKind(X), X, Y)) 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(U46(tt)) >? mark(tt) active(U63(tt)) >? mark(tt) active(U72(tt, X)) >? mark(U73(isPal(X), X)) active(U74(tt)) >? mark(tt) active(U83(tt)) >? mark(tt) active(U91(tt, X)) >? mark(U92(isPalListKind(X))) active(isList(X)) >? mark(U11(isPalListKind(X), X)) active(isList(nil)) >? mark(tt) active(isNeList(!6220!6220(X, Y))) >? mark(U51(isPalListKind(X), X, Y)) 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(isQid(a)) >? mark(tt) active(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U13(mark(X)) >? mark(U13(X)) U25(mark(X), Y) >? mark(U25(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U46(mark(X)) >? mark(U46(X)) U53(mark(X), Y, Z) >? mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U56(mark(X)) >? mark(U56(X)) U63(mark(X)) >? mark(U63(X)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U81(mark(X), Y) >? mark(U81(X, Y)) U82(mark(X), Y) >? mark(U82(X, Y)) U83(mark(X)) >? mark(U83(X)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(mark(X)) >? top(proper(X)) top(ok(X)) >? top(active(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y0 + 2y1 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y2 + 3y1 U22 = \y0y1y2.y0 + y2 + 2y1 U23 = \y0y1y2.2y0 + 2y1 + 2y2 U24 = \y0y1y2.y0 + y2 + 2y1 U25 = \y0y1.y0 + y1 U26 = \y0.2y0 U31 = \y0y1.y0 + 3y1 U32 = \y0y1.y0 + 2y1 U33 = \y0.2y0 U41 = \y0y1y2.y2 + 2y0 + 2y1 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y2 + 2y0 + 2y1 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + 2y2 U53 = \y0y1y2.y1 + y2 + 2y0 U54 = \y0y1y2.y1 + y2 + 2y0 U55 = \y0y1.2y0 + 2y1 U56 = \y0.y0 U61 = \y0y1.y0 + 2y1 U62 = \y0y1.y0 + 2y1 U63 = \y0.2y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + 3y1 U73 = \y0y1.y0 + y1 U74 = \y0.2y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y1 + 2y0 U83 = \y0.2y0 U91 = \y0y1.y0 + 2y1 U92 = \y0.y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.1 + 3y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.2y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 ok = \y0.y0 proper = \y0.y0 top = \y0.y0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = x2 + 2x1 + 4x0 >= x2 + 2x0 + 2x1 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(U11(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U12(isPalListKind(_x0), _x0))]] [[active(U12(tt, _x0))]] = x0 >= x0 = [[mark(U13(isNeList(_x0)))]] [[active(U21(tt, _x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(U22(isPalListKind(_x0), _x0, _x1))]] [[active(U26(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 3x0 >= 3x0 = [[mark(U32(isPalListKind(_x0), _x0))]] [[active(U32(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U33(isQid(_x0)))]] [[active(U33(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U46(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U63(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U72(tt, _x0))]] = 3x0 >= 3x0 = [[mark(U73(isPal(_x0), _x0))]] [[active(U74(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U83(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U91(tt, _x0))]] = 2x0 >= x0 = [[mark(U92(isPalListKind(_x0)))]] [[active(isList(_x0))]] = 1 + 3x0 > 3x0 = [[mark(U11(isPalListKind(_x0), _x0))]] [[active(isList(nil))]] = 1 > 0 = [[mark(tt)]] [[active(isNeList(!6220!6220(_x0, _x1)))]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U51(isPalListKind(_x0), _x0, _x1))]] [[active(isNePal(!6220!6220(_x0, !6220!6220(_x1, _x0))))]] = 2x1 + 3x0 >= x1 + 2x0 = [[mark(U71(isQid(_x0), _x0, _x1))]] [[active(isPal(_x0))]] = 2x0 >= 2x0 = [[mark(U81(isPalListKind(_x0), _x0))]] [[active(isPal(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isQid(a))]] = 0 >= 0 = [[mark(tt)]] [[active(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = x0 >= x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = 2x0 >= 2x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = 2x0 >= 2x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = x0 >= x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = x0 >= x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = 2x0 >= 2x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = 2x0 >= 2x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = 2x0 >= 2x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = x0 >= x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[mark(!6220!6220(_x0, _x1))]] [[U13(mark(_x0))]] = x0 >= x0 = [[mark(U13(_x0))]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U25(_x0, _x1))]] [[U26(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = x0 + 3x1 >= x0 + 3x1 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[mark(U43(_x0, _x1, _x2))]] [[U46(mark(_x0))]] = x0 >= x0 = [[mark(U46(_x0))]] [[U53(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U53(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U54(_x0, _x1, _x2))]] [[U56(mark(_x0))]] = x0 >= x0 = [[mark(U56(_x0))]] [[U63(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U63(_x0))]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U74(_x0))]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U81(_x0, _x1))]] [[U82(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U82(_x0, _x1))]] [[U83(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U83(_x0))]] [[U92(mark(_x0))]] = x0 >= x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(nil)]] = 0 >= 0 = [[ok(nil)]] [[proper(U11(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U11(proper(_x0), proper(_x1))]] [[proper(tt)]] = 0 >= 0 = [[ok(tt)]] [[proper(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = x0 >= x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = x0 >= x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = x0 >= x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = 1 + 3x0 >= 1 + 3x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = 2x0 >= 2x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = 2x0 >= 2x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = x0 >= x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = x0 >= x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = x0 >= x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = 2x0 >= 2x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 2x0 >= 2x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = 2x0 >= 2x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 2x0 >= 2x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = x0 >= x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = x0 >= x0 = [[U92(proper(_x0))]] [[proper(a)]] = 0 >= 0 = [[ok(a)]] [[proper(e)]] = 0 >= 0 = [[ok(e)]] [[proper(i)]] = 0 >= 0 = [[ok(i)]] [[proper(o)]] = 0 >= 0 = [[ok(o)]] [[proper(u)]] = 0 >= 0 = [[ok(u)]] [[!6220!6220(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = x0 >= x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = x0 >= x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = x0 >= x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x2 + 3x1 >= x0 + x2 + 3x1 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = 1 + 3x0 >= 1 + 3x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = x0 + 3x1 >= x0 + 3x1 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = x0 >= x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = x0 >= x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = x0 >= x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = x0 + 3x1 >= x0 + 3x1 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = x0 >= x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = x0 >= x0 = [[ok(U92(_x0))]] [[top(mark(_x0))]] = x0 >= x0 = [[top(proper(_x0))]] [[top(ok(_x0))]] = x0 >= x0 = [[top(active(_x0))]] We can thus remove the following rules: active(isList(X)) => mark(U11(isPalListKind(X), X)) 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(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(U11(tt, X)) >? mark(U12(isPalListKind(X), X)) active(U12(tt, X)) >? mark(U13(isNeList(X))) active(U21(tt, X, Y)) >? mark(U22(isPalListKind(X), X, Y)) 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(U46(tt)) >? mark(tt) active(U63(tt)) >? mark(tt) active(U72(tt, X)) >? mark(U73(isPal(X), X)) active(U74(tt)) >? mark(tt) active(U83(tt)) >? mark(tt) active(U91(tt, X)) >? mark(U92(isPalListKind(X))) active(isNeList(!6220!6220(X, Y))) >? mark(U51(isPalListKind(X), X, Y)) 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(isQid(a)) >? mark(tt) active(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U13(mark(X)) >? mark(U13(X)) U25(mark(X), Y) >? mark(U25(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U46(mark(X)) >? mark(U46(X)) U53(mark(X), Y, Z) >? mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U56(mark(X)) >? mark(U56(X)) U63(mark(X)) >? mark(U63(X)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U81(mark(X), Y) >? mark(U81(X, Y)) U82(mark(X), Y) >? mark(U82(X, Y)) U83(mark(X)) >? mark(U83(X)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(mark(X)) >? top(proper(X)) top(ok(X)) >? top(active(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 3y0 U11 = \y0y1.y0 + 3y1 U12 = \y0y1.y0 + 2y1 U13 = \y0.y0 U21 = \y0y1y2.1 + y0 + 2y2 + 3y1 U22 = \y0y1y2.y0 + y2 + 2y1 U23 = \y0y1y2.y1 + y2 + 2y0 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.y0 + y1 U26 = \y0.1 + 2y0 U31 = \y0y1.y0 + 2y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y1 + y2 + 2y0 U44 = \y0y1y2.y1 + y2 + 2y0 U45 = \y0y1.y0 + y1 U46 = \y0.y0 U51 = \y0y1y2.y1 + y2 + 2y0 U52 = \y0y1y2.1 + y0 + y1 + y2 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y1 + y2 + 2y0 U55 = \y0y1.y0 + y1 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y0 + 2y1 U63 = \y0.y0 U71 = \y0y1y2.y1 + y2 + 2y0 U72 = \y0y1.2y0 + 3y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.1 + y0 U91 = \y0y1.2y0 + 2y1 U92 = \y0.2y0 a = 1 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 ok = \y0.y0 proper = \y0.y0 top = \y0.y0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = x2 + 3x1 + 9x0 >= x2 + 3x0 + 3x1 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(U11(tt, _x0))]] = 3x0 >= 3x0 = [[mark(U12(isPalListKind(_x0), _x0))]] [[active(U12(tt, _x0))]] = 2x0 >= x0 = [[mark(U13(isNeList(_x0)))]] [[active(U21(tt, _x0, _x1))]] = 1 + 2x1 + 3x0 > x1 + 3x0 = [[mark(U22(isPalListKind(_x0), _x0, _x1))]] [[active(U26(tt))]] = 1 > 0 = [[mark(tt)]] [[active(U31(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U32(isPalListKind(_x0), _x0))]] [[active(U32(tt, _x0))]] = x0 >= x0 = [[mark(U33(isQid(_x0)))]] [[active(U33(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U46(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U63(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U72(tt, _x0))]] = 3x0 >= 3x0 = [[mark(U73(isPal(_x0), _x0))]] [[active(U74(tt))]] = 0 >= 0 = [[mark(tt)]] [[active(U83(tt))]] = 1 > 0 = [[mark(tt)]] [[active(U91(tt, _x0))]] = 2x0 >= 2x0 = [[mark(U92(isPalListKind(_x0)))]] [[active(isNeList(!6220!6220(_x0, _x1)))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(U51(isPalListKind(_x0), _x0, _x1))]] [[active(isNePal(!6220!6220(_x0, !6220!6220(_x1, _x0))))]] = 3x1 + 4x0 >= x1 + 3x0 = [[mark(U71(isQid(_x0), _x0, _x1))]] [[active(isPal(_x0))]] = 2x0 >= 2x0 = [[mark(U81(isPalListKind(_x0), _x0))]] [[active(isPal(nil))]] = 0 >= 0 = [[mark(tt)]] [[active(isQid(a))]] = 1 > 0 = [[mark(tt)]] [[active(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = x0 >= x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = 1 + x0 + 2x2 + 3x1 >= 1 + x0 + 2x2 + 3x1 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = x0 >= x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = x0 >= x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = x0 >= x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = x0 >= x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = x0 >= x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = 1 + x0 >= 1 + x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = 2x0 >= 2x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(!6220!6220(_x0, _x1))]] [[U13(mark(_x0))]] = x0 >= x0 = [[mark(U13(_x0))]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U25(_x0, _x1))]] [[U26(mark(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U43(_x0, _x1, _x2))]] [[U46(mark(_x0))]] = x0 >= x0 = [[mark(U46(_x0))]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[mark(U53(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U54(_x0, _x1, _x2))]] [[U56(mark(_x0))]] = x0 >= x0 = [[mark(U56(_x0))]] [[U63(mark(_x0))]] = x0 >= x0 = [[mark(U63(_x0))]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = x0 >= x0 = [[mark(U74(_x0))]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U81(_x0, _x1))]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U82(_x0, _x1))]] [[U83(mark(_x0))]] = 1 + x0 >= 1 + x0 = [[mark(U83(_x0))]] [[U92(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(nil)]] = 0 >= 0 = [[ok(nil)]] [[proper(U11(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U11(proper(_x0), proper(_x1))]] [[proper(tt)]] = 0 >= 0 = [[ok(tt)]] [[proper(U12(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = x0 >= x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = x0 >= x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = x0 >= x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = 1 + x0 + 2x2 + 3x1 >= 1 + x0 + 2x2 + 3x1 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = x0 >= x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = x0 >= x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = x0 >= x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = x0 >= x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = x0 >= x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = x0 >= x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 2x0 >= 2x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = x0 >= x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 1 + x0 >= 1 + x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = x0 >= x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = 2x0 >= 2x0 = [[U92(proper(_x0))]] [[proper(a)]] = 1 >= 1 = [[ok(a)]] [[proper(e)]] = 0 >= 0 = [[ok(e)]] [[proper(i)]] = 0 >= 0 = [[ok(i)]] [[proper(o)]] = 0 >= 0 = [[ok(o)]] [[proper(u)]] = 0 >= 0 = [[ok(u)]] [[!6220!6220(ok(_x0), ok(_x1))]] = x1 + 3x0 >= x1 + 3x0 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = x0 + 3x1 >= x0 + 3x1 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = x0 >= x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = x0 >= x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = x0 >= x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = 1 + x0 + 2x2 + 3x1 >= 1 + x0 + 2x2 + 3x1 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = x0 >= x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = x0 >= x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = x0 >= x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = x0 >= x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = x0 >= x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = x0 >= x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = x0 >= x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = 1 + x0 >= 1 + x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = x0 >= x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U92(_x0))]] [[top(mark(_x0))]] = x0 >= x0 = [[top(proper(_x0))]] [[top(ok(_x0))]] = x0 >= x0 = [[top(active(_x0))]] We can thus remove the following rules: active(U21(tt, X, Y)) => mark(U22(isPalListKind(X), X, Y)) active(U26(tt)) => mark(tt) active(U83(tt)) => mark(tt) active(isQid(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(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(U11(tt, X)) >? mark(U12(isPalListKind(X), X)) active(U12(tt, X)) >? mark(U13(isNeList(X))) active(U31(tt, X)) >? mark(U32(isPalListKind(X), X)) active(U32(tt, X)) >? mark(U33(isQid(X))) active(U33(tt)) >? mark(tt) active(U46(tt)) >? mark(tt) active(U63(tt)) >? mark(tt) active(U72(tt, X)) >? mark(U73(isPal(X), X)) active(U74(tt)) >? mark(tt) active(U91(tt, X)) >? mark(U92(isPalListKind(X))) active(isNeList(!6220!6220(X, Y))) >? mark(U51(isPalListKind(X), X, Y)) 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(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U13(mark(X)) >? mark(U13(X)) U25(mark(X), Y) >? mark(U25(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U46(mark(X)) >? mark(U46(X)) U53(mark(X), Y, Z) >? mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U56(mark(X)) >? mark(U56(X)) U63(mark(X)) >? mark(U63(X)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U81(mark(X), Y) >? mark(U81(X, Y)) U82(mark(X), Y) >? mark(U82(X, Y)) U83(mark(X)) >? mark(U83(X)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(mark(X)) >? top(proper(X)) top(ok(X)) >? top(active(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 + 3y1 U12 = \y0y1.1 + y0 + 2y1 U13 = \y0.y0 U21 = \y0y1y2.y1 + y2 + 2y0 U22 = \y0y1y2.y2 + 2y0 + 2y1 U23 = \y0y1y2.y1 + y2 + 2y0 U24 = \y0y1y2.y1 + y2 + 2y0 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.2 + 3y0 + 3y1 U32 = \y0y1.y1 + 2y0 U33 = \y0.y0 U41 = \y0y1y2.y1 + y2 + 2y0 U42 = \y0y1y2.y2 + 2y0 + 2y1 U43 = \y0y1y2.y1 + y2 + 2y0 U44 = \y0y1y2.y1 + y2 + 2y0 U45 = \y0y1.y1 + 2y0 U46 = \y0.2y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y1 + y2 + 2y0 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.y1 + y2 + 2y0 U55 = \y0y1.y0 + 2y1 U56 = \y0.y0 U61 = \y0y1.y1 + 2y0 U62 = \y0y1.y0 + y1 U63 = \y0.2y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.2y0 + 3y1 U73 = \y0y1.1 + y0 + y1 U74 = \y0.2y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.2y0 U91 = \y0y1.y0 + 2y1 U92 = \y0.2y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.2y0 isPal = \y0.2y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 1 o = 0 ok = \y0.y0 proper = \y0.y0 top = \y0.y0 tt = 2 u = 0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(U11(tt, _x0))]] = 2 + 3x0 > 1 + 3x0 = [[mark(U12(isPalListKind(_x0), _x0))]] [[active(U12(tt, _x0))]] = 3 + 2x0 > 2x0 = [[mark(U13(isNeList(_x0)))]] [[active(U31(tt, _x0))]] = 8 + 3x0 > 3x0 = [[mark(U32(isPalListKind(_x0), _x0))]] [[active(U32(tt, _x0))]] = 4 + x0 > x0 = [[mark(U33(isQid(_x0)))]] [[active(U33(tt))]] = 2 >= 2 = [[mark(tt)]] [[active(U46(tt))]] = 4 > 2 = [[mark(tt)]] [[active(U63(tt))]] = 4 > 2 = [[mark(tt)]] [[active(U72(tt, _x0))]] = 4 + 3x0 > 1 + 3x0 = [[mark(U73(isPal(_x0), _x0))]] [[active(U74(tt))]] = 4 > 2 = [[mark(tt)]] [[active(U91(tt, _x0))]] = 2 + 2x0 > 2x0 = [[mark(U92(isPalListKind(_x0)))]] [[active(isNeList(!6220!6220(_x0, _x1)))]] = 2x0 + 2x1 >= x1 + 2x0 = [[mark(U51(isPalListKind(_x0), _x0, _x1))]] [[active(isNePal(!6220!6220(_x0, !6220!6220(_x1, _x0))))]] = 2x1 + 4x0 >= x1 + 2x0 = [[mark(U71(isQid(_x0), _x0, _x1))]] [[active(isPal(_x0))]] = 2x0 >= 2x0 = [[mark(U81(isPalListKind(_x0), _x0))]] [[active(isPal(nil))]] = 2 >= 2 = [[mark(tt)]] [[active(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = x0 >= x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = x0 >= x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = 2 + 3x0 + 3x1 >= 2 + 3x0 + 3x1 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = x0 >= x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = 2x0 >= 2x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = x0 >= x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = 2x0 >= 2x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = 2x0 >= 2x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = 2x0 >= 2x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = 2x0 >= 2x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = x0 + x1 >= x0 + x1 = [[mark(!6220!6220(_x0, _x1))]] [[U13(mark(_x0))]] = x0 >= x0 = [[mark(U13(_x0))]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U25(_x0, _x1))]] [[U26(mark(_x0))]] = x0 >= x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = 2 + 3x0 + 3x1 >= 2 + 3x0 + 3x1 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U43(_x0, _x1, _x2))]] [[U46(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U46(_x0))]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[mark(U53(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U54(_x0, _x1, _x2))]] [[U56(mark(_x0))]] = x0 >= x0 = [[mark(U56(_x0))]] [[U63(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U63(_x0))]] [[U73(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U74(_x0))]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U81(_x0, _x1))]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U82(_x0, _x1))]] [[U83(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U83(_x0))]] [[U92(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(nil)]] = 1 >= 1 = [[ok(nil)]] [[proper(U11(_x0, _x1))]] = x0 + 3x1 >= x0 + 3x1 = [[U11(proper(_x0), proper(_x1))]] [[proper(tt)]] = 2 >= 2 = [[ok(tt)]] [[proper(U12(_x0, _x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = x0 >= x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = x0 >= x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = 2x0 >= 2x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = x0 >= x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = x0 >= x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = 2 + 3x0 + 3x1 >= 2 + 3x0 + 3x1 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = x0 >= x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = x0 >= x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = 2x0 >= 2x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = x0 >= x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = 2x0 >= 2x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 2x0 >= 2x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = 2x0 >= 2x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 2x0 >= 2x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = 2x0 >= 2x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = 2x0 >= 2x0 = [[U92(proper(_x0))]] [[proper(a)]] = 0 >= 0 = [[ok(a)]] [[proper(e)]] = 0 >= 0 = [[ok(e)]] [[proper(i)]] = 0 >= 0 = [[ok(i)]] [[proper(o)]] = 0 >= 0 = [[ok(o)]] [[proper(u)]] = 0 >= 0 = [[ok(u)]] [[!6220!6220(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = x0 + 3x1 >= x0 + 3x1 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = x0 >= x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = x0 >= x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = x0 >= x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = x0 >= x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = 2 + 3x0 + 3x1 >= 2 + 3x0 + 3x1 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = x0 >= x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = x0 >= x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = x0 >= x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = 2x0 + 3x1 >= 2x0 + 3x1 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U92(_x0))]] [[top(mark(_x0))]] = x0 >= x0 = [[top(proper(_x0))]] [[top(ok(_x0))]] = x0 >= x0 = [[top(active(_x0))]] We can thus remove the following rules: active(U11(tt, X)) => mark(U12(isPalListKind(X), X)) active(U12(tt, X)) => mark(U13(isNeList(X))) active(U31(tt, X)) => mark(U32(isPalListKind(X), X)) active(U32(tt, X)) => mark(U33(isQid(X))) active(U46(tt)) => mark(tt) active(U63(tt)) => mark(tt) active(U72(tt, X)) => mark(U73(isPal(X), X)) active(U74(tt)) => mark(tt) active(U91(tt, X)) => mark(U92(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(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(U33(tt)) >? mark(tt) active(isNeList(!6220!6220(X, Y))) >? mark(U51(isPalListKind(X), X, Y)) 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(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U13(mark(X)) >? mark(U13(X)) U25(mark(X), Y) >? mark(U25(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U46(mark(X)) >? mark(U46(X)) U53(mark(X), Y, Z) >? mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U56(mark(X)) >? mark(U56(X)) U63(mark(X)) >? mark(U63(X)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U81(mark(X), Y) >? mark(U81(X, Y)) U82(mark(X), Y) >? mark(U82(X, Y)) U83(mark(X)) >? mark(U83(X)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(mark(X)) >? top(proper(X)) top(ok(X)) >? top(active(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 3y0 U11 = \y0y1.y0 + 2y1 U12 = \y0y1.y1 + 2y0 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + 2y2 U22 = \y0y1y2.y1 + 2y0 + 2y2 U23 = \y0y1y2.y1 + y2 + 2y0 U24 = \y0y1y2.y1 + y2 + 2y0 U25 = \y0y1.y0 + y1 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y1 + 2y0 U33 = \y0.2y0 U41 = \y0y1y2.y1 + y2 + 2y0 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y1 + 2y0 U46 = \y0.y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y1 + y2 + 2y0 U53 = \y0y1y2.y1 + y2 + 2y0 U54 = \y0y1y2.y2 + 2y0 + 2y1 U55 = \y0y1.y0 + y1 U56 = \y0.2y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.2y0 + 2y1 U63 = \y0.2y0 U71 = \y0y1y2.y2 + 2y0 + 2y1 U72 = \y0y1.y1 + 2y0 U73 = \y0y1.y0 + y1 U74 = \y0.2y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y1 + 2y0 U83 = \y0.2y0 U91 = \y0y1.2y0 + 2y1 U92 = \y0.2y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.2y0 isNeList = \y0.y0 isNePal = \y0.2y0 isPal = \y0.2y0 isPalListKind = \y0.y0 isQid = \y0.2y0 mark = \y0.y0 nil = 1 o = 0 ok = \y0.y0 proper = \y0.y0 top = \y0.y0 tt = 2 u = 0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = x2 + 3x1 + 9x0 >= x2 + 3x0 + 3x1 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(U33(tt))]] = 4 > 2 = [[mark(tt)]] [[active(isNeList(!6220!6220(_x0, _x1)))]] = x1 + 3x0 >= x1 + 2x0 = [[mark(U51(isPalListKind(_x0), _x0, _x1))]] [[active(isNePal(!6220!6220(_x0, !6220!6220(_x1, _x0))))]] = 6x1 + 8x0 >= x1 + 6x0 = [[mark(U71(isQid(_x0), _x0, _x1))]] [[active(isPal(_x0))]] = 2x0 >= 2x0 = [[mark(U81(isPalListKind(_x0), _x0))]] [[active(isPal(nil))]] = 2 >= 2 = [[mark(tt)]] [[active(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = x0 >= x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = x0 >= x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = 2x0 >= 2x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = x0 >= x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = 2x0 >= 2x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = 2x0 >= 2x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = 2x0 >= 2x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = 2x0 >= 2x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = 2x0 >= 2x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(!6220!6220(_x0, _x1))]] [[U13(mark(_x0))]] = x0 >= x0 = [[mark(U13(_x0))]] [[U25(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U25(_x0, _x1))]] [[U26(mark(_x0))]] = x0 >= x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[mark(U43(_x0, _x1, _x2))]] [[U46(mark(_x0))]] = x0 >= x0 = [[mark(U46(_x0))]] [[U53(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U53(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[mark(U54(_x0, _x1, _x2))]] [[U56(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U56(_x0))]] [[U63(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U63(_x0))]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U74(_x0))]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U81(_x0, _x1))]] [[U82(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U82(_x0, _x1))]] [[U83(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U83(_x0))]] [[U92(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(nil)]] = 1 >= 1 = [[ok(nil)]] [[proper(U11(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U11(proper(_x0), proper(_x1))]] [[proper(tt)]] = 2 >= 2 = [[ok(tt)]] [[proper(U12(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = x0 >= x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = x0 >= x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = x0 >= x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = 2x0 >= 2x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = x0 >= x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = 2x0 >= 2x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = 2x0 >= 2x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = x0 >= x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = 2x0 >= 2x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = 2x0 >= 2x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 2x0 >= 2x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = 2x0 >= 2x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 2x0 >= 2x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = 2x0 >= 2x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = 2x0 >= 2x0 = [[U92(proper(_x0))]] [[proper(a)]] = 0 >= 0 = [[ok(a)]] [[proper(e)]] = 0 >= 0 = [[ok(e)]] [[proper(i)]] = 0 >= 0 = [[ok(i)]] [[proper(o)]] = 0 >= 0 = [[ok(o)]] [[proper(u)]] = 0 >= 0 = [[ok(u)]] [[!6220!6220(ok(_x0), ok(_x1))]] = x1 + 3x0 >= x1 + 3x0 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = x0 >= x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = x0 >= x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = x0 >= x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = x0 >= x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = x0 >= x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U92(_x0))]] [[top(mark(_x0))]] = x0 >= x0 = [[top(proper(_x0))]] [[top(ok(_x0))]] = x0 >= x0 = [[top(active(_x0))]] We can thus remove the following rules: active(U33(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(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(isNeList(!6220!6220(X, Y))) >? mark(U51(isPalListKind(X), X, Y)) 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(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U13(mark(X)) >? mark(U13(X)) U25(mark(X), Y) >? mark(U25(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U46(mark(X)) >? mark(U46(X)) U53(mark(X), Y, Z) >? mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U56(mark(X)) >? mark(U56(X)) U63(mark(X)) >? mark(U63(X)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U81(mark(X), Y) >? mark(U81(X, Y)) U82(mark(X), Y) >? mark(U82(X, Y)) U83(mark(X)) >? mark(U83(X)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(mark(X)) >? top(proper(X)) top(ok(X)) >? top(active(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 3y0 U11 = \y0y1.y0 + 2y1 U12 = \y0y1.y1 + 2y0 U13 = \y0.y0 U21 = \y0y1y2.y1 + 2y0 + 2y2 U22 = \y0y1y2.y1 + 2y0 + 2y2 U23 = \y0y1y2.y0 + 2y1 + 2y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.y1 + 2y0 U26 = \y0.y0 U31 = \y0y1.y1 + 2y0 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.1 + y1 + y2 + 2y0 U43 = \y0y1y2.y1 + y2 + 2y0 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y1 + 2y0 U46 = \y0.y0 U51 = \y0y1y2.y1 + y2 + 2y0 U52 = \y0y1y2.y1 + y2 + 2y0 U53 = \y0y1y2.y1 + y2 + 2y0 U54 = \y0y1y2.y1 + y2 + 2y0 U55 = \y0y1.y0 + y1 U56 = \y0.2y0 U61 = \y0y1.y1 + 2y0 U62 = \y0y1.y0 + y1 U63 = \y0.2y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y1 + 2y0 U73 = \y0y1.1 + y1 + 2y0 U74 = \y0.y0 U81 = \y0y1.y1 + 2y0 U82 = \y0y1.1 + 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.y0 isNePal = \y0.y0 isPal = \y0.2 + 3y0 isPalListKind = \y0.y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 ok = \y0.y0 proper = \y0.y0 top = \y0.2y0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = x2 + 3x1 + 9x0 >= x2 + 3x0 + 3x1 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(isNeList(!6220!6220(_x0, _x1)))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(U51(isPalListKind(_x0), _x0, _x1))]] [[active(isNePal(!6220!6220(_x0, !6220!6220(_x1, _x0))))]] = 3x1 + 4x0 >= x1 + 2x0 = [[mark(U71(isQid(_x0), _x0, _x1))]] [[active(isPal(_x0))]] = 2 + 3x0 > 3x0 = [[mark(U81(isPalListKind(_x0), _x0))]] [[active(isPal(nil))]] = 2 > 0 = [[mark(tt)]] [[active(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = x0 >= x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = x0 >= x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = x0 >= x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = x0 >= x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = 2x0 >= 2x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = 2x0 >= 2x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = x0 >= x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = x0 >= x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = x0 >= x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(!6220!6220(_x0, _x1))]] [[U13(mark(_x0))]] = x0 >= x0 = [[mark(U13(_x0))]] [[U25(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U25(_x0, _x1))]] [[U26(mark(_x0))]] = x0 >= x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U43(_x0, _x1, _x2))]] [[U46(mark(_x0))]] = x0 >= x0 = [[mark(U46(_x0))]] [[U53(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U53(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[mark(U54(_x0, _x1, _x2))]] [[U56(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U56(_x0))]] [[U63(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U63(_x0))]] [[U73(mark(_x0), _x1)]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = x0 >= x0 = [[mark(U74(_x0))]] [[U81(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U81(_x0, _x1))]] [[U82(mark(_x0), _x1)]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[mark(U82(_x0, _x1))]] [[U83(mark(_x0))]] = x0 >= x0 = [[mark(U83(_x0))]] [[U92(mark(_x0))]] = x0 >= x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(nil)]] = 0 >= 0 = [[ok(nil)]] [[proper(U11(_x0, _x1))]] = x0 + 2x1 >= x0 + 2x1 = [[U11(proper(_x0), proper(_x1))]] [[proper(tt)]] = 0 >= 0 = [[ok(tt)]] [[proper(U12(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = x0 >= x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = x0 >= x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = x0 >= x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = x0 >= x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = x0 >= x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = x0 >= x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = x0 >= x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = x0 >= x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = 2x0 >= 2x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = 2x0 >= 2x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 2 + 3x0 >= 2 + 3x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = x0 >= x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = x0 >= x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = x0 >= x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = x0 >= x0 = [[U92(proper(_x0))]] [[proper(a)]] = 0 >= 0 = [[ok(a)]] [[proper(e)]] = 0 >= 0 = [[ok(e)]] [[proper(i)]] = 0 >= 0 = [[ok(i)]] [[proper(o)]] = 0 >= 0 = [[ok(o)]] [[proper(u)]] = 0 >= 0 = [[ok(u)]] [[!6220!6220(ok(_x0), ok(_x1))]] = x1 + 3x0 >= x1 + 3x0 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = x0 + 2x1 >= x0 + 2x1 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = x0 >= x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = x0 >= x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = x0 >= x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = x0 + 2x1 + 2x2 >= x0 + 2x1 + 2x2 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = x0 >= x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = x0 >= x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = x0 >= x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = x0 >= x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = 1 + x1 + x2 + 2x0 >= 1 + x1 + x2 + 2x0 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = x0 >= x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = 1 + x1 + 2x0 >= 1 + x1 + 2x0 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = 2 + 3x0 >= 2 + 3x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = x0 >= x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = 1 + x0 + x1 >= 1 + x0 + x1 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = x0 >= x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = x0 >= x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = x0 >= x0 = [[ok(U92(_x0))]] [[top(mark(_x0))]] = 2x0 >= 2x0 = [[top(proper(_x0))]] [[top(ok(_x0))]] = 2x0 >= 2x0 = [[top(active(_x0))]] We can thus remove the following rules: active(isPal(X)) => mark(U81(isPalListKind(X), X)) active(isPal(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(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(isNeList(!6220!6220(X, Y))) >? mark(U51(isPalListKind(X), X, Y)) active(isNePal(!6220!6220(X, !6220!6220(Y, X)))) >? mark(U71(isQid(X), X, Y)) active(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U13(mark(X)) >? mark(U13(X)) U25(mark(X), Y) >? mark(U25(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U46(mark(X)) >? mark(U46(X)) U53(mark(X), Y, Z) >? mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U56(mark(X)) >? mark(U56(X)) U63(mark(X)) >? mark(U63(X)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U81(mark(X), Y) >? mark(U81(X, Y)) U82(mark(X), Y) >? mark(U82(X, Y)) U83(mark(X)) >? mark(U83(X)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(mark(X)) >? top(proper(X)) top(ok(X)) >? top(active(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 3y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y1 + y2 U22 = \y0y1y2.y1 + y2 + 2y0 U23 = \y0y1y2.y0 + y1 + y2 U24 = \y0y1y2.y0 + y1 + y2 U25 = \y0y1.y1 + 2y0 U26 = \y0.2y0 U31 = \y0y1.y1 + 2y0 U32 = \y0y1.y1 + 2y0 U33 = \y0.2y0 U41 = \y0y1y2.y0 + y1 + 2y2 U42 = \y0y1y2.y0 + y1 + 2y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y2 + 2y0 + 2y1 U45 = \y0y1.y0 + y1 U46 = \y0.2y0 U51 = \y0y1y2.y0 + y2 + 2y1 U52 = \y0y1y2.y1 + y2 + 2y0 U53 = \y0y1y2.y0 + y1 + 2y2 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.2y0 U61 = \y0y1.y1 + 2y0 U62 = \y0y1.2y0 + 2y1 U63 = \y0.2y0 U71 = \y0y1y2.y2 + 2y0 + 2y1 U72 = \y0y1.y1 + 2y0 U73 = \y0y1.y1 + 2y0 U74 = \y0.y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y1 + 2y0 U83 = \y0.2y0 U91 = \y0y1.2y0 + 2y1 U92 = \y0.y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.1 + 2y0 isNePal = \y0.2y0 isPal = \y0.y0 isPalListKind = \y0.2y0 isQid = \y0.2y0 mark = \y0.y0 nil = 1 o = 0 ok = \y0.y0 proper = \y0.y0 top = \y0.y0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = x2 + 3x1 + 9x0 >= x2 + 3x0 + 3x1 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(isNeList(!6220!6220(_x0, _x1)))]] = 1 + 2x1 + 6x0 > x1 + 4x0 = [[mark(U51(isPalListKind(_x0), _x0, _x1))]] [[active(isNePal(!6220!6220(_x0, !6220!6220(_x1, _x0))))]] = 6x1 + 8x0 >= x1 + 6x0 = [[mark(U71(isQid(_x0), _x0, _x1))]] [[active(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = x0 >= x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = 2x0 >= 2x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = 2x0 >= 2x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = 2x0 >= 2x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = 2x0 >= 2x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = 2x0 >= 2x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = x0 >= x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = 2x0 >= 2x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = x0 >= x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = x1 + 3x0 >= x1 + 3x0 = [[mark(!6220!6220(_x0, _x1))]] [[U13(mark(_x0))]] = x0 >= x0 = [[mark(U13(_x0))]] [[U25(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U25(_x0, _x1))]] [[U26(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[mark(U43(_x0, _x1, _x2))]] [[U46(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U46(_x0))]] [[U53(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[mark(U53(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[mark(U54(_x0, _x1, _x2))]] [[U56(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U56(_x0))]] [[U63(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U63(_x0))]] [[U73(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = x0 >= x0 = [[mark(U74(_x0))]] [[U81(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U81(_x0, _x1))]] [[U82(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U82(_x0, _x1))]] [[U83(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U83(_x0))]] [[U92(mark(_x0))]] = x0 >= x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = x1 + 3x0 >= x1 + 3x0 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(nil)]] = 1 >= 1 = [[ok(nil)]] [[proper(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U11(proper(_x0), proper(_x1))]] [[proper(tt)]] = 0 >= 0 = [[ok(tt)]] [[proper(U12(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = 2x0 >= 2x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = x0 >= x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = x0 >= x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = 2x0 >= 2x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = 2x0 >= 2x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = 2x0 >= 2x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = 2x0 >= 2x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = 2x0 >= 2x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = 2x0 >= 2x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = x0 >= x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = x0 >= x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 2x0 >= 2x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = 2x0 >= 2x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = x0 >= x0 = [[U92(proper(_x0))]] [[proper(a)]] = 0 >= 0 = [[ok(a)]] [[proper(e)]] = 0 >= 0 = [[ok(e)]] [[proper(i)]] = 0 >= 0 = [[ok(i)]] [[proper(o)]] = 0 >= 0 = [[ok(o)]] [[proper(u)]] = 0 >= 0 = [[ok(u)]] [[!6220!6220(ok(_x0), ok(_x1))]] = x1 + 3x0 >= x1 + 3x0 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = x0 >= x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = x0 >= x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x2 + 2x1 >= x0 + x2 + 2x1 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = x0 >= x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = x0 >= x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = x0 >= x0 = [[ok(U92(_x0))]] [[top(mark(_x0))]] = x0 >= x0 = [[top(proper(_x0))]] [[top(ok(_x0))]] = x0 >= x0 = [[top(active(_x0))]] We can thus remove the following rules: active(isNeList(!6220!6220(X, Y))) => mark(U51(isPalListKind(X), X, Y)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): active(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(isNePal(!6220!6220(X, !6220!6220(Y, X)))) >? mark(U71(isQid(X), X, Y)) active(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U13(mark(X)) >? mark(U13(X)) U25(mark(X), Y) >? mark(U25(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U46(mark(X)) >? mark(U46(X)) U53(mark(X), Y, Z) >? mark(U53(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U56(mark(X)) >? mark(U56(X)) U63(mark(X)) >? mark(U63(X)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U81(mark(X), Y) >? mark(U81(X, Y)) U82(mark(X), Y) >? mark(U82(X, Y)) U83(mark(X)) >? mark(U83(X)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(mark(X)) >? top(proper(X)) top(ok(X)) >? top(active(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.2 + y1 + 2y0 U11 = \y0y1.y0 + y1 U12 = \y0y1.y1 + 2y0 U13 = \y0.2y0 U21 = \y0y1y2.y1 + y2 + 2y0 U22 = \y0y1y2.1 + y0 + y1 + y2 U23 = \y0y1y2.y1 + y2 + 2y0 U24 = \y0y1y2.y1 + 2y0 + 2y2 U25 = \y0y1.y1 + 2y0 U26 = \y0.y0 U31 = \y0y1.y0 + y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y1 + 2y0 + 2y2 U42 = \y0y1y2.y1 + y2 + 2y0 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + y1 + y2 U45 = \y0y1.y1 + 2y0 U46 = \y0.2y0 U51 = \y0y1y2.y0 + y1 + 2y2 U52 = \y0y1y2.y1 + y2 + 2y0 U53 = \y0y1y2.y1 + y2 + 2y0 U54 = \y0y1y2.y0 + y1 + y2 U55 = \y0y1.y0 + y1 U56 = \y0.2y0 U61 = \y0y1.y1 + 2y0 U62 = \y0y1.y0 + y1 U63 = \y0.2y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.y0 + y1 U73 = \y0y1.y0 + y1 U74 = \y0.y0 U81 = \y0y1.y1 + 2y0 U82 = \y0y1.y0 + y1 U83 = \y0.2y0 U91 = \y0y1.y1 + 2y0 U92 = \y0.y0 a = 0 active = \y0.y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.y0 isPal = \y0.2y0 isPalListKind = \y0.2y0 isQid = \y0.2y0 mark = \y0.2 + y0 nil = 0 o = 0 ok = \y0.y0 proper = \y0.y0 top = \y0.y0 tt = 0 u = 0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = 6 + x2 + 2x1 + 4x0 >= 6 + x2 + 2x0 + 2x1 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(isNePal(!6220!6220(_x0, !6220!6220(_x1, _x0))))]] = 4 + 2x1 + 3x0 > 2 + x1 + 3x0 = [[mark(U71(isQid(_x0), _x0, _x1))]] [[active(!6220!6220(_x0, _x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = 2x0 >= 2x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = x0 >= x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = x0 >= x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = 2x0 >= 2x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = 2x0 >= 2x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = 2x0 >= 2x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = x0 >= x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = 2x0 >= 2x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = x0 >= x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = 4 + x1 + 2x0 >= 4 + x1 + 2x0 = [[mark(!6220!6220(_x0, _x1))]] [[U13(mark(_x0))]] = 4 + 2x0 > 2 + 2x0 = [[mark(U13(_x0))]] [[U25(mark(_x0), _x1)]] = 4 + x1 + 2x0 > 2 + x1 + 2x0 = [[mark(U25(_x0, _x1))]] [[U26(mark(_x0))]] = 2 + x0 >= 2 + x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[mark(U43(_x0, _x1, _x2))]] [[U46(mark(_x0))]] = 4 + 2x0 > 2 + 2x0 = [[mark(U46(_x0))]] [[U53(mark(_x0), _x1, _x2)]] = 4 + x1 + x2 + 2x0 > 2 + x1 + x2 + 2x0 = [[mark(U53(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = 2 + x0 + x1 + x2 >= 2 + x0 + x1 + x2 = [[mark(U54(_x0, _x1, _x2))]] [[U56(mark(_x0))]] = 4 + 2x0 > 2 + 2x0 = [[mark(U56(_x0))]] [[U63(mark(_x0))]] = 4 + 2x0 > 2 + 2x0 = [[mark(U63(_x0))]] [[U73(mark(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = 2 + x0 >= 2 + x0 = [[mark(U74(_x0))]] [[U81(mark(_x0), _x1)]] = 4 + x1 + 2x0 > 2 + x1 + 2x0 = [[mark(U81(_x0, _x1))]] [[U82(mark(_x0), _x1)]] = 2 + x0 + x1 >= 2 + x0 + x1 = [[mark(U82(_x0, _x1))]] [[U83(mark(_x0))]] = 4 + 2x0 > 2 + 2x0 = [[mark(U83(_x0))]] [[U92(mark(_x0))]] = 2 + x0 >= 2 + x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(nil)]] = 0 >= 0 = [[ok(nil)]] [[proper(U11(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U11(proper(_x0), proper(_x1))]] [[proper(tt)]] = 0 >= 0 = [[ok(tt)]] [[proper(U12(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = 2x0 >= 2x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = 2x0 >= 2x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = 2x0 >= 2x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = x0 >= x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = x0 >= x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = x0 >= x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = 2x0 >= 2x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = 2x0 >= 2x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = 2x0 >= 2x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = 2x0 >= 2x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 2x0 >= 2x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = x0 >= x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = x0 + x1 >= x0 + x1 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 2x0 >= 2x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = x0 >= x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = x1 + 2x0 >= x1 + 2x0 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = x0 >= x0 = [[U92(proper(_x0))]] [[proper(a)]] = 0 >= 0 = [[ok(a)]] [[proper(e)]] = 0 >= 0 = [[ok(e)]] [[proper(i)]] = 0 >= 0 = [[ok(i)]] [[proper(o)]] = 0 >= 0 = [[ok(o)]] [[proper(u)]] = 0 >= 0 = [[ok(u)]] [[!6220!6220(ok(_x0), ok(_x1))]] = 2 + x1 + 2x0 >= 2 + x1 + 2x0 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = 1 + x0 + x1 + x2 >= 1 + x0 + x1 + x2 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = x0 >= x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = x0 >= x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = x0 >= x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = x1 + 2x0 + 2x2 >= x1 + 2x0 + 2x2 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = x1 + x2 + 2x0 >= x1 + x2 + 2x0 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = x0 >= x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = x0 + x1 >= x0 + x1 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = x0 >= x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = x0 >= x0 = [[ok(U92(_x0))]] [[top(mark(_x0))]] = 2 + x0 > x0 = [[top(proper(_x0))]] [[top(ok(_x0))]] = x0 >= x0 = [[top(active(_x0))]] We can thus remove the following rules: active(isNePal(!6220!6220(X, !6220!6220(Y, X)))) => mark(U71(isQid(X), X, Y)) U13(mark(X)) => mark(U13(X)) U25(mark(X), Y) => mark(U25(X, Y)) U46(mark(X)) => mark(U46(X)) U53(mark(X), Y, Z) => mark(U53(X, Y, Z)) U56(mark(X)) => mark(U56(X)) U63(mark(X)) => mark(U63(X)) U81(mark(X), Y) => mark(U81(X, Y)) U83(mark(X)) => mark(U83(X)) top(mark(X)) => top(proper(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, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U82(mark(X), Y) >? mark(U82(X, Y)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(tt) >? ok(tt) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) proper(u) >? ok(u) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(ok(X)) >? top(active(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y1 + 2y0 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.y0 + y2 + 2y1 U22 = \y0y1y2.y0 + y2 + 2y1 U23 = \y0y1y2.y2 + 2y0 + 2y1 U24 = \y0y1y2.y0 + 2y1 + 2y2 U25 = \y0y1.y0 + y1 U26 = \y0.2y0 U31 = \y0y1.y0 + 2y1 U32 = \y0y1.y0 + y1 U33 = \y0.y0 U41 = \y0y1y2.y0 + y1 + 2y2 U42 = \y0y1y2.y1 + y2 + 2y0 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y0 + 2y1 + 2y2 U45 = \y0y1.y0 + y1 U46 = \y0.2y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y1 + y2 + 2y0 U54 = \y0y1y2.y2 + 2y0 + 2y1 U55 = \y0y1.y0 + y1 U56 = \y0.2y0 U61 = \y0y1.y1 + 2y0 U62 = \y0y1.y1 + 2y0 U63 = \y0.2y0 U71 = \y0y1y2.y0 + y1 + y2 U72 = \y0y1.2y0 + 2y1 U73 = \y0y1.y0 + y1 U74 = \y0.2y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.y0 U91 = \y0y1.2y0 + 2y1 U92 = \y0.y0 a = 0 active = \y0.2y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.2y0 isNePal = \y0.2y0 isPal = \y0.2y0 isPalListKind = \y0.2y0 isQid = \y0.y0 mark = \y0.y0 nil = 0 o = 0 ok = \y0.2y0 proper = \y0.3y0 top = \y0.y0 tt = 2 u = 3 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = 2x2 + 4x1 + 8x0 >= x2 + 2x0 + 2x1 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(!6220!6220(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = 2x1 + 4x0 >= 2x0 + 2x1 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = 2x0 >= 2x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= x2 + 2x0 + 2x1 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= x2 + 2x0 + 2x1 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = 2x2 + 4x0 + 4x1 >= x2 + 2x1 + 4x0 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = 4x0 >= 4x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = 2x0 >= 2x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x1 + x2 + 4x0 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = 4x0 >= 4x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x1 + x2 + 4x0 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = 2x2 + 4x0 + 4x1 >= x2 + 2x1 + 4x0 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = 4x0 >= 4x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = 4x0 >= 4x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = 4x0 >= 4x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = 2x0 >= 2x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = 2x0 >= 2x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[mark(!6220!6220(_x0, _x1))]] [[U26(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[mark(U43(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = x2 + 2x0 + 2x1 >= x2 + 2x0 + 2x1 = [[mark(U54(_x0, _x1, _x2))]] [[U73(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U74(_x0))]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U82(_x0, _x1))]] [[U92(mark(_x0))]] = x0 >= x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(nil)]] = 0 >= 0 = [[ok(nil)]] [[proper(U11(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U11(proper(_x0), proper(_x1))]] [[proper(tt)]] = 6 > 4 = [[ok(tt)]] [[proper(U12(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = 6x0 >= 6x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = 3x0 >= 3x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = 6x0 >= 6x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = 3x0 + 3x2 + 6x1 >= 3x0 + 3x2 + 6x1 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = 3x0 + 3x2 + 6x1 >= 3x0 + 3x2 + 6x1 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = 3x2 + 6x0 + 6x1 >= 3x2 + 6x0 + 6x1 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = 3x0 + 6x1 + 6x2 >= 3x0 + 6x1 + 6x2 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = 3x0 >= 3x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = 6x0 >= 6x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = 3x0 + 6x1 >= 3x0 + 6x1 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = 3x0 >= 3x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = 3x0 >= 3x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = 3x0 + 3x1 + 6x2 >= 3x0 + 3x1 + 6x2 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = 3x1 + 3x2 + 6x0 >= 3x1 + 3x2 + 6x0 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = 3x0 + 6x1 + 6x2 >= 3x0 + 6x1 + 6x2 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = 6x0 >= 6x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = 3x1 + 3x2 + 6x0 >= 3x1 + 3x2 + 6x0 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = 3x2 + 6x0 + 6x1 >= 3x2 + 6x0 + 6x1 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = 6x0 >= 6x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = 6x0 >= 6x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = 6x0 + 6x1 >= 6x0 + 6x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 6x0 >= 6x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = 6x0 >= 6x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 3x0 >= 3x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = 6x0 >= 6x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = 6x0 + 6x1 >= 6x0 + 6x1 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = 3x0 >= 3x0 = [[U92(proper(_x0))]] [[proper(a)]] = 0 >= 0 = [[ok(a)]] [[proper(e)]] = 0 >= 0 = [[ok(e)]] [[proper(i)]] = 0 >= 0 = [[ok(i)]] [[proper(o)]] = 0 >= 0 = [[ok(o)]] [[proper(u)]] = 9 > 6 = [[ok(u)]] [[!6220!6220(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = 4x0 >= 4x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = 4x0 >= 4x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x2 + 4x1 >= 2x0 + 2x2 + 4x1 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x2 + 4x1 >= 2x0 + 2x2 + 4x1 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = 2x2 + 4x0 + 4x1 >= 2x2 + 4x0 + 4x1 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 4x1 + 4x2 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = 2x0 + 4x1 >= 2x0 + 4x1 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 4x2 >= 2x0 + 2x1 + 4x2 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = 2x1 + 2x2 + 4x0 >= 2x1 + 2x2 + 4x0 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 4x1 + 4x2 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = 2x1 + 2x2 + 4x0 >= 2x1 + 2x2 + 4x0 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = 2x2 + 4x0 + 4x1 >= 2x2 + 4x0 + 4x1 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = 4x0 + 4x1 >= 4x0 + 4x1 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = 4x0 >= 4x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = 4x0 >= 4x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = 4x0 + 4x1 >= 4x0 + 4x1 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U92(_x0))]] [[top(ok(_x0))]] = 2x0 >= 2x0 = [[top(active(_x0))]] We can thus remove the following rules: proper(tt) => ok(tt) proper(u) => ok(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]): active(!6220!6220(!6220!6220(X, Y), Z)) >? mark(!6220!6220(X, !6220!6220(Y, Z))) active(!6220!6220(X, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U82(mark(X), Y) >? mark(U82(X, Y)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(nil) >? ok(nil) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(ok(X)) >? top(active(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y1 + 2y0 U11 = \y0y1.y1 + 2y0 U12 = \y0y1.y0 + y1 U13 = \y0.y0 U21 = \y0y1y2.y1 + y2 + 2y0 U22 = \y0y1y2.y1 + 2y0 + 2y2 U23 = \y0y1y2.y0 + y2 + 2y1 U24 = \y0y1y2.y1 + y2 + 2y0 U25 = \y0y1.y1 + 2y0 U26 = \y0.2y0 U31 = \y0y1.y1 + 2y0 U32 = \y0y1.y1 + 2y0 U33 = \y0.2y0 U41 = \y0y1y2.y0 + y1 + y2 U42 = \y0y1y2.y0 + y1 + y2 U43 = \y0y1y2.y0 + y1 + y2 U44 = \y0y1y2.y1 + 2y0 + 2y2 U45 = \y0y1.2y0 + 2y1 U46 = \y0.2y0 U51 = \y0y1y2.y1 + y2 + 2y0 U52 = \y0y1y2.y0 + y1 + y2 U53 = \y0y1y2.y0 + y2 + 2y1 U54 = \y0y1y2.y0 + y1 + 2y2 U55 = \y0y1.y1 + 2y0 U56 = \y0.y0 U61 = \y0y1.y0 + y1 U62 = \y0y1.y1 + 2y0 U63 = \y0.y0 U71 = \y0y1y2.y1 + y2 + 2y0 U72 = \y0y1.y1 + 2y0 U73 = \y0y1.y1 + 2y0 U74 = \y0.2y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.y0 + y1 U83 = \y0.2y0 U91 = \y0y1.y0 + y1 U92 = \y0.2y0 a = 0 active = \y0.2y0 e = 0 i = 0 isList = \y0.y0 isNeList = \y0.y0 isNePal = \y0.2y0 isPal = \y0.2y0 isPalListKind = \y0.2y0 isQid = \y0.y0 mark = \y0.y0 nil = 1 o = 0 ok = \y0.2y0 proper = \y0.3y0 top = \y0.2y0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = 2x2 + 4x1 + 8x0 >= x2 + 2x0 + 2x1 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(!6220!6220(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = 2x1 + 4x0 >= 2x0 + 2x1 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = 2x0 >= 2x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x1 + x2 + 4x0 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = 2x1 + 4x0 + 4x2 >= x1 + 2x2 + 4x0 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= x2 + 2x0 + 2x1 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x1 + x2 + 4x0 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = 4x0 >= 4x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = 4x0 >= 4x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = 2x1 + 4x0 + 4x2 >= x1 + 2x2 + 4x0 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = 4x0 >= 4x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x1 + x2 + 4x0 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = 2x0 + 2x2 + 4x1 >= x2 + 2x0 + 2x1 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = 2x0 >= 2x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = 2x0 >= 2x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x1 + x2 + 4x0 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = 2x1 + 4x0 >= x1 + 4x0 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = 4x0 >= 4x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = 4x0 >= 4x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = 4x0 >= 4x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = x1 + 2x0 >= x1 + 2x0 = [[mark(!6220!6220(_x0, _x1))]] [[U26(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = x0 + x1 + x2 >= x0 + x1 + x2 = [[mark(U43(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = x0 + x1 + 2x2 >= x0 + x1 + 2x2 = [[mark(U54(_x0, _x1, _x2))]] [[U73(mark(_x0), _x1)]] = x1 + 2x0 >= x1 + 2x0 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U74(_x0))]] [[U82(mark(_x0), _x1)]] = x0 + x1 >= x0 + x1 = [[mark(U82(_x0, _x1))]] [[U92(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(nil)]] = 3 > 2 = [[ok(nil)]] [[proper(U11(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U11(proper(_x0), proper(_x1))]] [[proper(U12(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = 6x0 >= 6x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = 3x0 >= 3x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = 3x0 >= 3x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = 3x1 + 3x2 + 6x0 >= 3x1 + 3x2 + 6x0 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = 3x1 + 6x0 + 6x2 >= 3x1 + 6x0 + 6x2 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = 3x0 + 3x2 + 6x1 >= 3x0 + 3x2 + 6x1 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = 3x1 + 3x2 + 6x0 >= 3x1 + 3x2 + 6x0 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = 3x0 >= 3x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = 6x0 >= 6x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = 6x0 >= 6x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = 3x0 >= 3x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = 3x1 + 6x0 + 6x2 >= 3x1 + 6x0 + 6x2 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = 6x0 + 6x1 >= 6x0 + 6x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = 6x0 >= 6x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = 3x1 + 3x2 + 6x0 >= 3x1 + 3x2 + 6x0 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = 3x0 + 3x2 + 6x1 >= 3x0 + 3x2 + 6x1 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = 3x0 + 3x1 + 6x2 >= 3x0 + 3x1 + 6x2 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = 3x0 >= 3x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = 3x0 >= 3x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = 3x1 + 3x2 + 6x0 >= 3x1 + 3x2 + 6x0 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = 3x1 + 6x0 >= 3x1 + 6x0 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 6x0 >= 6x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = 6x0 >= 6x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 6x0 >= 6x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = 6x0 >= 6x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = 6x0 >= 6x0 = [[U92(proper(_x0))]] [[proper(a)]] = 0 >= 0 = [[ok(a)]] [[proper(e)]] = 0 >= 0 = [[ok(e)]] [[proper(i)]] = 0 >= 0 = [[ok(i)]] [[proper(o)]] = 0 >= 0 = [[ok(o)]] [[!6220!6220(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = 4x0 >= 4x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = 2x1 + 2x2 + 4x0 >= 2x1 + 2x2 + 4x0 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = 2x1 + 4x0 + 4x2 >= 2x1 + 4x0 + 4x2 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x2 + 4x1 >= 2x0 + 2x2 + 4x1 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = 2x1 + 2x2 + 4x0 >= 2x1 + 2x2 + 4x0 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = 2x0 >= 2x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = 2x1 + 4x0 + 4x2 >= 2x1 + 4x0 + 4x2 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = 4x0 + 4x1 >= 4x0 + 4x1 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = 2x1 + 2x2 + 4x0 >= 2x1 + 2x2 + 4x0 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 2x2 >= 2x0 + 2x1 + 2x2 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x2 + 4x1 >= 2x0 + 2x2 + 4x1 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = 2x0 + 2x1 + 4x2 >= 2x0 + 2x1 + 4x2 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = 2x0 >= 2x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = 2x1 + 2x2 + 4x0 >= 2x1 + 2x2 + 4x0 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = 2x1 + 4x0 >= 2x1 + 4x0 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = 4x0 >= 4x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = 4x0 >= 4x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = 4x0 >= 4x0 = [[ok(U92(_x0))]] [[top(ok(_x0))]] = 4x0 >= 4x0 = [[top(active(_x0))]] We can thus remove the following rules: proper(nil) => ok(nil) 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, Y)) >? !6220!6220(active(X), Y) active(!6220!6220(X, Y)) >? !6220!6220(X, active(Y)) active(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U25(X, Y)) >? U25(active(X), Y) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U41(X, Y, Z)) >? U41(active(X), Y, Z) active(U42(X, Y, Z)) >? U42(active(X), Y, Z) active(U43(X, Y, Z)) >? U43(active(X), Y, Z) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U46(X)) >? U46(active(X)) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U61(X, Y)) >? U61(active(X), Y) active(U62(X, Y)) >? U62(active(X), Y) active(U63(X)) >? U63(active(X)) active(U71(X, Y, Z)) >? U71(active(X), Y, Z) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U82(X, Y)) >? U82(active(X), Y) active(U83(X)) >? U83(active(X)) active(U91(X, Y)) >? U91(active(X), Y) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U82(mark(X), Y) >? mark(U82(X, Y)) U92(mark(X)) >? mark(U92(X)) proper(!6220!6220(X, Y)) >? !6220!6220(proper(X), proper(Y)) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U25(X, Y)) >? U25(proper(X), proper(Y)) proper(isList(X)) >? isList(proper(X)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(isQid(X)) >? isQid(proper(X)) proper(U41(X, Y, Z)) >? U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) >? U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) >? U43(proper(X), proper(Y), proper(Z)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U46(X)) >? U46(proper(X)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U61(X, Y)) >? U61(proper(X), proper(Y)) proper(U62(X, Y)) >? U62(proper(X), proper(Y)) proper(U63(X)) >? U63(proper(X)) proper(U71(X, Y, Z)) >? U71(proper(X), proper(Y), proper(Z)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U82(X, Y)) >? U82(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U91(X, Y)) >? U91(proper(X), proper(Y)) proper(U92(X)) >? U92(proper(X)) proper(a) >? ok(a) proper(e) >? ok(e) proper(i) >? ok(i) proper(o) >? ok(o) !6220!6220(ok(X), ok(Y)) >? ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) >? ok(U11(X, Y)) U12(ok(X), ok(Y)) >? ok(U12(X, Y)) isPalListKind(ok(X)) >? ok(isPalListKind(X)) U13(ok(X)) >? ok(U13(X)) isNeList(ok(X)) >? ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) >? ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) >? ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) >? ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) >? ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) >? ok(U25(X, Y)) isList(ok(X)) >? ok(isList(X)) U26(ok(X)) >? ok(U26(X)) U31(ok(X), ok(Y)) >? ok(U31(X, Y)) U32(ok(X), ok(Y)) >? ok(U32(X, Y)) U33(ok(X)) >? ok(U33(X)) isQid(ok(X)) >? ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) >? ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) >? ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) >? ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) >? ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) >? ok(U45(X, Y)) U46(ok(X)) >? ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) >? ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) >? ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) >? ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) >? ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) >? ok(U55(X, Y)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U63(ok(X)) >? ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) >? ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) >? ok(U72(X, Y)) U73(ok(X), ok(Y)) >? ok(U73(X, Y)) isPal(ok(X)) >? ok(isPal(X)) U74(ok(X)) >? ok(U74(X)) U81(ok(X), ok(Y)) >? ok(U81(X, Y)) U82(ok(X), ok(Y)) >? ok(U82(X, Y)) U83(ok(X)) >? ok(U83(X)) isNePal(ok(X)) >? ok(isNePal(X)) U91(ok(X), ok(Y)) >? ok(U91(X, Y)) U92(ok(X)) >? ok(U92(X)) top(ok(X)) >? top(active(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.1 + y0 + 2y1 U11 = \y0y1.2y0 + 2y1 U12 = \y0y1.2y0 + 2y1 U13 = \y0.2y0 U21 = \y0y1y2.y0 + y1 + 2y2 U22 = \y0y1y2.y1 + y2 + 2y0 U23 = \y0y1y2.y1 + 2y0 + 2y2 U24 = \y0y1y2.y0 + 2y1 + 2y2 U25 = \y0y1.1 + 2y0 + 2y1 U26 = \y0.2y0 U31 = \y0y1.2y0 + 2y1 U32 = \y0y1.y1 + 3y0 U33 = \y0.y0 U41 = \y0y1y2.1 + y0 + y2 + 2y1 U42 = \y0y1y2.2 + y1 + 2y0 + 2y2 U43 = \y0y1y2.3 + 2y1 + 2y2 + 3y0 U44 = \y0y1y2.y0 + 2y1 + 2y2 U45 = \y0y1.2y0 + 2y1 U46 = \y0.1 + 3y0 U51 = \y0y1y2.y0 + y1 + y2 U52 = \y0y1y2.y1 + y2 + 2y0 U53 = \y0y1y2.y0 + y1 + y2 U54 = \y0y1y2.2y2 + 3y0 + 3y1 U55 = \y0y1.2y0 + 2y1 U56 = \y0.y0 U61 = \y0y1.2 + y1 + 2y0 U62 = \y0y1.1 + y0 + y1 U63 = \y0.2y0 U71 = \y0y1y2.1 + y0 + y1 + 2y2 U72 = \y0y1.y0 + 2y1 U73 = \y0y1.y0 + 2y1 U74 = \y0.2y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.1 + y1 + 3y0 U83 = \y0.2y0 U91 = \y0y1.1 + y0 + 2y1 U92 = \y0.y0 a = 2 active = \y0.2y0 e = 1 i = 3 isList = \y0.1 + 3y0 isNeList = \y0.2y0 isNePal = \y0.2y0 isPal = \y0.2y0 isPalListKind = \y0.2y0 isQid = \y0.1 + 3y0 mark = \y0.y0 o = 3 ok = \y0.1 + 2y0 proper = \y0.3y0 top = \y0.2y0 Using this interpretation, the requirements translate to: [[active(!6220!6220(!6220!6220(_x0, _x1), _x2))]] = 4 + 2x0 + 4x1 + 4x2 > 3 + x0 + 2x1 + 4x2 = [[mark(!6220!6220(_x0, !6220!6220(_x1, _x2)))]] [[active(!6220!6220(_x0, _x1))]] = 2 + 2x0 + 4x1 > 1 + 2x0 + 2x1 = [[!6220!6220(active(_x0), _x1)]] [[active(!6220!6220(_x0, _x1))]] = 2 + 2x0 + 4x1 > 1 + x0 + 4x1 = [[!6220!6220(_x0, active(_x1))]] [[active(U11(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = 4x0 >= 4x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = 2x0 + 2x1 + 4x2 >= x1 + 2x0 + 2x2 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x1 + x2 + 4x0 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = 2x1 + 4x0 + 4x2 >= x1 + 2x2 + 4x0 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[U24(active(_x0), _x1, _x2)]] [[active(U25(_x0, _x1))]] = 2 + 4x0 + 4x1 > 1 + 2x1 + 4x0 = [[U25(active(_x0), _x1)]] [[active(U26(_x0))]] = 4x0 >= 4x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = 2x1 + 6x0 >= x1 + 6x0 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = 2x0 >= 2x0 = [[U33(active(_x0))]] [[active(U41(_x0, _x1, _x2))]] = 2 + 2x0 + 2x2 + 4x1 > 1 + x2 + 2x0 + 2x1 = [[U41(active(_x0), _x1, _x2)]] [[active(U42(_x0, _x1, _x2))]] = 4 + 2x1 + 4x0 + 4x2 > 2 + x1 + 2x2 + 4x0 = [[U42(active(_x0), _x1, _x2)]] [[active(U43(_x0, _x1, _x2))]] = 6 + 4x1 + 4x2 + 6x0 > 3 + 2x1 + 2x2 + 6x0 = [[U43(active(_x0), _x1, _x2)]] [[active(U44(_x0, _x1, _x2))]] = 2x0 + 4x1 + 4x2 >= 2x0 + 2x1 + 2x2 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[U45(active(_x0), _x1)]] [[active(U46(_x0))]] = 2 + 6x0 > 1 + 6x0 = [[U46(active(_x0))]] [[active(U51(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = 2x1 + 2x2 + 4x0 >= x1 + x2 + 4x0 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = 2x0 + 2x1 + 2x2 >= x1 + x2 + 2x0 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = 4x2 + 6x0 + 6x1 >= 2x2 + 3x1 + 6x0 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = 4x0 + 4x1 >= 2x1 + 4x0 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = 2x0 >= 2x0 = [[U56(active(_x0))]] [[active(U61(_x0, _x1))]] = 4 + 2x1 + 4x0 > 2 + x1 + 4x0 = [[U61(active(_x0), _x1)]] [[active(U62(_x0, _x1))]] = 2 + 2x0 + 2x1 > 1 + x1 + 2x0 = [[U62(active(_x0), _x1)]] [[active(U63(_x0))]] = 4x0 >= 4x0 = [[U63(active(_x0))]] [[active(U71(_x0, _x1, _x2))]] = 2 + 2x0 + 2x1 + 4x2 > 1 + x1 + 2x0 + 2x2 = [[U71(active(_x0), _x1, _x2)]] [[active(U72(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = 2x0 + 4x1 >= 2x0 + 2x1 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = 4x0 >= 4x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = 2x0 + 2x1 >= x1 + 2x0 = [[U81(active(_x0), _x1)]] [[active(U82(_x0, _x1))]] = 2 + 2x1 + 6x0 > 1 + x1 + 6x0 = [[U82(active(_x0), _x1)]] [[active(U83(_x0))]] = 4x0 >= 4x0 = [[U83(active(_x0))]] [[active(U91(_x0, _x1))]] = 2 + 2x0 + 4x1 > 1 + 2x0 + 2x1 = [[U91(active(_x0), _x1)]] [[active(U92(_x0))]] = 2x0 >= 2x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = 1 + x0 + 2x1 >= 1 + x0 + 2x1 = [[mark(!6220!6220(_x0, _x1))]] [[U26(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = 2x0 + 2x1 >= 2x0 + 2x1 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = 3 + 2x1 + 2x2 + 3x0 >= 3 + 2x1 + 2x2 + 3x0 = [[mark(U43(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = 2x2 + 3x0 + 3x1 >= 2x2 + 3x0 + 3x1 = [[mark(U54(_x0, _x1, _x2))]] [[U73(mark(_x0), _x1)]] = x0 + 2x1 >= x0 + 2x1 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = 2x0 >= 2x0 = [[mark(U74(_x0))]] [[U82(mark(_x0), _x1)]] = 1 + x1 + 3x0 >= 1 + x1 + 3x0 = [[mark(U82(_x0, _x1))]] [[U92(mark(_x0))]] = x0 >= x0 = [[mark(U92(_x0))]] [[proper(!6220!6220(_x0, _x1))]] = 3 + 3x0 + 6x1 > 1 + 3x0 + 6x1 = [[!6220!6220(proper(_x0), proper(_x1))]] [[proper(U11(_x0, _x1))]] = 6x0 + 6x1 >= 6x0 + 6x1 = [[U11(proper(_x0), proper(_x1))]] [[proper(U12(_x0, _x1))]] = 6x0 + 6x1 >= 6x0 + 6x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = 6x0 >= 6x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = 6x0 >= 6x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = 6x0 >= 6x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = 3x0 + 3x1 + 6x2 >= 3x0 + 3x1 + 6x2 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = 3x1 + 3x2 + 6x0 >= 3x1 + 3x2 + 6x0 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = 3x1 + 6x0 + 6x2 >= 3x1 + 6x0 + 6x2 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = 3x0 + 6x1 + 6x2 >= 3x0 + 6x1 + 6x2 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U25(_x0, _x1))]] = 3 + 6x0 + 6x1 > 1 + 6x0 + 6x1 = [[U25(proper(_x0), proper(_x1))]] [[proper(isList(_x0))]] = 3 + 9x0 > 1 + 9x0 = [[isList(proper(_x0))]] [[proper(U26(_x0))]] = 6x0 >= 6x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = 6x0 + 6x1 >= 6x0 + 6x1 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = 3x1 + 9x0 >= 3x1 + 9x0 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = 3x0 >= 3x0 = [[U33(proper(_x0))]] [[proper(isQid(_x0))]] = 3 + 9x0 > 1 + 9x0 = [[isQid(proper(_x0))]] [[proper(U41(_x0, _x1, _x2))]] = 3 + 3x0 + 3x2 + 6x1 > 1 + 3x0 + 3x2 + 6x1 = [[U41(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U42(_x0, _x1, _x2))]] = 6 + 3x1 + 6x0 + 6x2 > 2 + 3x1 + 6x0 + 6x2 = [[U42(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U43(_x0, _x1, _x2))]] = 9 + 6x1 + 6x2 + 9x0 > 3 + 6x1 + 6x2 + 9x0 = [[U43(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U44(_x0, _x1, _x2))]] = 3x0 + 6x1 + 6x2 >= 3x0 + 6x1 + 6x2 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = 6x0 + 6x1 >= 6x0 + 6x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U46(_x0))]] = 3 + 9x0 > 1 + 9x0 = [[U46(proper(_x0))]] [[proper(U51(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = 3x1 + 3x2 + 6x0 >= 3x1 + 3x2 + 6x0 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = 3x0 + 3x1 + 3x2 >= 3x0 + 3x1 + 3x2 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = 6x2 + 9x0 + 9x1 >= 6x2 + 9x0 + 9x1 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = 6x0 + 6x1 >= 6x0 + 6x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = 3x0 >= 3x0 = [[U56(proper(_x0))]] [[proper(U61(_x0, _x1))]] = 6 + 3x1 + 6x0 > 2 + 3x1 + 6x0 = [[U61(proper(_x0), proper(_x1))]] [[proper(U62(_x0, _x1))]] = 3 + 3x0 + 3x1 > 1 + 3x0 + 3x1 = [[U62(proper(_x0), proper(_x1))]] [[proper(U63(_x0))]] = 6x0 >= 6x0 = [[U63(proper(_x0))]] [[proper(U71(_x0, _x1, _x2))]] = 3 + 3x0 + 3x1 + 6x2 > 1 + 3x0 + 3x1 + 6x2 = [[U71(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U72(_x0, _x1))]] = 3x0 + 6x1 >= 3x0 + 6x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = 3x0 + 6x1 >= 3x0 + 6x1 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 6x0 >= 6x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = 6x0 >= 6x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U82(_x0, _x1))]] = 3 + 3x1 + 9x0 > 1 + 3x1 + 9x0 = [[U82(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 6x0 >= 6x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = 6x0 >= 6x0 = [[isNePal(proper(_x0))]] [[proper(U91(_x0, _x1))]] = 3 + 3x0 + 6x1 > 1 + 3x0 + 6x1 = [[U91(proper(_x0), proper(_x1))]] [[proper(U92(_x0))]] = 3x0 >= 3x0 = [[U92(proper(_x0))]] [[proper(a)]] = 6 > 5 = [[ok(a)]] [[proper(e)]] = 3 >= 3 = [[ok(e)]] [[proper(i)]] = 9 > 7 = [[ok(i)]] [[proper(o)]] = 9 > 7 = [[ok(o)]] [[!6220!6220(ok(_x0), ok(_x1))]] = 4 + 2x0 + 4x1 > 3 + 2x0 + 4x1 = [[ok(!6220!6220(_x0, _x1))]] [[U11(ok(_x0), ok(_x1))]] = 4 + 4x0 + 4x1 > 1 + 4x0 + 4x1 = [[ok(U11(_x0, _x1))]] [[U12(ok(_x0), ok(_x1))]] = 4 + 4x0 + 4x1 > 1 + 4x0 + 4x1 = [[ok(U12(_x0, _x1))]] [[isPalListKind(ok(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[ok(isPalListKind(_x0))]] [[U13(ok(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[ok(U13(_x0))]] [[isNeList(ok(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[ok(isNeList(_x0))]] [[U21(ok(_x0), ok(_x1), ok(_x2))]] = 4 + 2x0 + 2x1 + 4x2 > 1 + 2x0 + 2x1 + 4x2 = [[ok(U21(_x0, _x1, _x2))]] [[U22(ok(_x0), ok(_x1), ok(_x2))]] = 4 + 2x1 + 2x2 + 4x0 > 1 + 2x1 + 2x2 + 4x0 = [[ok(U22(_x0, _x1, _x2))]] [[U23(ok(_x0), ok(_x1), ok(_x2))]] = 5 + 2x1 + 4x0 + 4x2 > 1 + 2x1 + 4x0 + 4x2 = [[ok(U23(_x0, _x1, _x2))]] [[U24(ok(_x0), ok(_x1), ok(_x2))]] = 5 + 2x0 + 4x1 + 4x2 > 1 + 2x0 + 4x1 + 4x2 = [[ok(U24(_x0, _x1, _x2))]] [[U25(ok(_x0), ok(_x1))]] = 5 + 4x0 + 4x1 > 3 + 4x0 + 4x1 = [[ok(U25(_x0, _x1))]] [[isList(ok(_x0))]] = 4 + 6x0 > 3 + 6x0 = [[ok(isList(_x0))]] [[U26(ok(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[ok(U26(_x0))]] [[U31(ok(_x0), ok(_x1))]] = 4 + 4x0 + 4x1 > 1 + 4x0 + 4x1 = [[ok(U31(_x0, _x1))]] [[U32(ok(_x0), ok(_x1))]] = 4 + 2x1 + 6x0 > 1 + 2x1 + 6x0 = [[ok(U32(_x0, _x1))]] [[U33(ok(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[ok(U33(_x0))]] [[isQid(ok(_x0))]] = 4 + 6x0 > 3 + 6x0 = [[ok(isQid(_x0))]] [[U41(ok(_x0), ok(_x1), ok(_x2))]] = 5 + 2x0 + 2x2 + 4x1 > 3 + 2x0 + 2x2 + 4x1 = [[ok(U41(_x0, _x1, _x2))]] [[U42(ok(_x0), ok(_x1), ok(_x2))]] = 7 + 2x1 + 4x0 + 4x2 > 5 + 2x1 + 4x0 + 4x2 = [[ok(U42(_x0, _x1, _x2))]] [[U43(ok(_x0), ok(_x1), ok(_x2))]] = 10 + 4x1 + 4x2 + 6x0 > 7 + 4x1 + 4x2 + 6x0 = [[ok(U43(_x0, _x1, _x2))]] [[U44(ok(_x0), ok(_x1), ok(_x2))]] = 5 + 2x0 + 4x1 + 4x2 > 1 + 2x0 + 4x1 + 4x2 = [[ok(U44(_x0, _x1, _x2))]] [[U45(ok(_x0), ok(_x1))]] = 4 + 4x0 + 4x1 > 1 + 4x0 + 4x1 = [[ok(U45(_x0, _x1))]] [[U46(ok(_x0))]] = 4 + 6x0 > 3 + 6x0 = [[ok(U46(_x0))]] [[U51(ok(_x0), ok(_x1), ok(_x2))]] = 3 + 2x0 + 2x1 + 2x2 > 1 + 2x0 + 2x1 + 2x2 = [[ok(U51(_x0, _x1, _x2))]] [[U52(ok(_x0), ok(_x1), ok(_x2))]] = 4 + 2x1 + 2x2 + 4x0 > 1 + 2x1 + 2x2 + 4x0 = [[ok(U52(_x0, _x1, _x2))]] [[U53(ok(_x0), ok(_x1), ok(_x2))]] = 3 + 2x0 + 2x1 + 2x2 > 1 + 2x0 + 2x1 + 2x2 = [[ok(U53(_x0, _x1, _x2))]] [[U54(ok(_x0), ok(_x1), ok(_x2))]] = 8 + 4x2 + 6x0 + 6x1 > 1 + 4x2 + 6x0 + 6x1 = [[ok(U54(_x0, _x1, _x2))]] [[U55(ok(_x0), ok(_x1))]] = 4 + 4x0 + 4x1 > 1 + 4x0 + 4x1 = [[ok(U55(_x0, _x1))]] [[U56(ok(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 5 + 2x1 + 4x0 >= 5 + 2x1 + 4x0 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3 + 2x0 + 2x1 >= 3 + 2x0 + 2x1 = [[ok(U62(_x0, _x1))]] [[U63(ok(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[ok(U63(_x0))]] [[U71(ok(_x0), ok(_x1), ok(_x2))]] = 5 + 2x0 + 2x1 + 4x2 > 3 + 2x0 + 2x1 + 4x2 = [[ok(U71(_x0, _x1, _x2))]] [[U72(ok(_x0), ok(_x1))]] = 3 + 2x0 + 4x1 > 1 + 2x0 + 4x1 = [[ok(U72(_x0, _x1))]] [[U73(ok(_x0), ok(_x1))]] = 3 + 2x0 + 4x1 > 1 + 2x0 + 4x1 = [[ok(U73(_x0, _x1))]] [[isPal(ok(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[ok(isPal(_x0))]] [[U74(ok(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[ok(U74(_x0))]] [[U81(ok(_x0), ok(_x1))]] = 2 + 2x0 + 2x1 > 1 + 2x0 + 2x1 = [[ok(U81(_x0, _x1))]] [[U82(ok(_x0), ok(_x1))]] = 5 + 2x1 + 6x0 > 3 + 2x1 + 6x0 = [[ok(U82(_x0, _x1))]] [[U83(ok(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[ok(U83(_x0))]] [[isNePal(ok(_x0))]] = 2 + 4x0 > 1 + 4x0 = [[ok(isNePal(_x0))]] [[U91(ok(_x0), ok(_x1))]] = 4 + 2x0 + 4x1 > 3 + 2x0 + 4x1 = [[ok(U91(_x0, _x1))]] [[U92(ok(_x0))]] = 1 + 2x0 >= 1 + 2x0 = [[ok(U92(_x0))]] [[top(ok(_x0))]] = 2 + 4x0 > 4x0 = [[top(active(_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, Y)) => !6220!6220(active(X), Y) active(!6220!6220(X, Y)) => !6220!6220(X, active(Y)) active(U25(X, Y)) => U25(active(X), Y) active(U41(X, Y, Z)) => U41(active(X), Y, Z) active(U42(X, Y, Z)) => U42(active(X), Y, Z) active(U43(X, Y, Z)) => U43(active(X), Y, Z) active(U46(X)) => U46(active(X)) active(U61(X, Y)) => U61(active(X), Y) active(U62(X, Y)) => U62(active(X), Y) active(U71(X, Y, Z)) => U71(active(X), Y, Z) active(U82(X, Y)) => U82(active(X), Y) active(U91(X, Y)) => U91(active(X), Y) proper(!6220!6220(X, Y)) => !6220!6220(proper(X), proper(Y)) proper(U25(X, Y)) => U25(proper(X), proper(Y)) proper(isList(X)) => isList(proper(X)) proper(isQid(X)) => isQid(proper(X)) proper(U41(X, Y, Z)) => U41(proper(X), proper(Y), proper(Z)) proper(U42(X, Y, Z)) => U42(proper(X), proper(Y), proper(Z)) proper(U43(X, Y, Z)) => U43(proper(X), proper(Y), proper(Z)) proper(U46(X)) => U46(proper(X)) proper(U61(X, Y)) => U61(proper(X), proper(Y)) proper(U62(X, Y)) => U62(proper(X), proper(Y)) proper(U71(X, Y, Z)) => U71(proper(X), proper(Y), proper(Z)) proper(U82(X, Y)) => U82(proper(X), proper(Y)) proper(U91(X, Y)) => U91(proper(X), proper(Y)) proper(a) => ok(a) proper(i) => ok(i) proper(o) => ok(o) !6220!6220(ok(X), ok(Y)) => ok(!6220!6220(X, Y)) U11(ok(X), ok(Y)) => ok(U11(X, Y)) U12(ok(X), ok(Y)) => ok(U12(X, Y)) isPalListKind(ok(X)) => ok(isPalListKind(X)) U13(ok(X)) => ok(U13(X)) isNeList(ok(X)) => ok(isNeList(X)) U21(ok(X), ok(Y), ok(Z)) => ok(U21(X, Y, Z)) U22(ok(X), ok(Y), ok(Z)) => ok(U22(X, Y, Z)) U23(ok(X), ok(Y), ok(Z)) => ok(U23(X, Y, Z)) U24(ok(X), ok(Y), ok(Z)) => ok(U24(X, Y, Z)) U25(ok(X), ok(Y)) => ok(U25(X, Y)) isList(ok(X)) => ok(isList(X)) U26(ok(X)) => ok(U26(X)) U31(ok(X), ok(Y)) => ok(U31(X, Y)) U32(ok(X), ok(Y)) => ok(U32(X, Y)) isQid(ok(X)) => ok(isQid(X)) U41(ok(X), ok(Y), ok(Z)) => ok(U41(X, Y, Z)) U42(ok(X), ok(Y), ok(Z)) => ok(U42(X, Y, Z)) U43(ok(X), ok(Y), ok(Z)) => ok(U43(X, Y, Z)) U44(ok(X), ok(Y), ok(Z)) => ok(U44(X, Y, Z)) U45(ok(X), ok(Y)) => ok(U45(X, Y)) U46(ok(X)) => ok(U46(X)) U51(ok(X), ok(Y), ok(Z)) => ok(U51(X, Y, Z)) U52(ok(X), ok(Y), ok(Z)) => ok(U52(X, Y, Z)) U53(ok(X), ok(Y), ok(Z)) => ok(U53(X, Y, Z)) U54(ok(X), ok(Y), ok(Z)) => ok(U54(X, Y, Z)) U55(ok(X), ok(Y)) => ok(U55(X, Y)) U63(ok(X)) => ok(U63(X)) U71(ok(X), ok(Y), ok(Z)) => ok(U71(X, Y, Z)) U72(ok(X), ok(Y)) => ok(U72(X, Y)) U73(ok(X), ok(Y)) => ok(U73(X, Y)) isPal(ok(X)) => ok(isPal(X)) U74(ok(X)) => ok(U74(X)) U81(ok(X), ok(Y)) => ok(U81(X, Y)) U82(ok(X), ok(Y)) => ok(U82(X, Y)) U83(ok(X)) => ok(U83(X)) isNePal(ok(X)) => ok(isNePal(X)) U91(ok(X), ok(Y)) => ok(U91(X, Y)) top(ok(X)) => top(active(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(U11(X, Y)) >? U11(active(X), Y) active(U12(X, Y)) >? U12(active(X), Y) active(U13(X)) >? U13(active(X)) active(U21(X, Y, Z)) >? U21(active(X), Y, Z) active(U22(X, Y, Z)) >? U22(active(X), Y, Z) active(U23(X, Y, Z)) >? U23(active(X), Y, Z) active(U24(X, Y, Z)) >? U24(active(X), Y, Z) active(U26(X)) >? U26(active(X)) active(U31(X, Y)) >? U31(active(X), Y) active(U32(X, Y)) >? U32(active(X), Y) active(U33(X)) >? U33(active(X)) active(U44(X, Y, Z)) >? U44(active(X), Y, Z) active(U45(X, Y)) >? U45(active(X), Y) active(U51(X, Y, Z)) >? U51(active(X), Y, Z) active(U52(X, Y, Z)) >? U52(active(X), Y, Z) active(U53(X, Y, Z)) >? U53(active(X), Y, Z) active(U54(X, Y, Z)) >? U54(active(X), Y, Z) active(U55(X, Y)) >? U55(active(X), Y) active(U56(X)) >? U56(active(X)) active(U63(X)) >? U63(active(X)) active(U72(X, Y)) >? U72(active(X), Y) active(U73(X, Y)) >? U73(active(X), Y) active(U74(X)) >? U74(active(X)) active(U81(X, Y)) >? U81(active(X), Y) active(U83(X)) >? U83(active(X)) active(U92(X)) >? U92(active(X)) !6220!6220(X, mark(Y)) >? mark(!6220!6220(X, Y)) U26(mark(X)) >? mark(U26(X)) U31(mark(X), Y) >? mark(U31(X, Y)) U43(mark(X), Y, Z) >? mark(U43(X, Y, Z)) U54(mark(X), Y, Z) >? mark(U54(X, Y, Z)) U73(mark(X), Y) >? mark(U73(X, Y)) U74(mark(X)) >? mark(U74(X)) U82(mark(X), Y) >? mark(U82(X, Y)) U92(mark(X)) >? mark(U92(X)) proper(U11(X, Y)) >? U11(proper(X), proper(Y)) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isPalListKind(X)) >? isPalListKind(proper(X)) proper(U13(X)) >? U13(proper(X)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U21(X, Y, Z)) >? U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) >? U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) >? U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) >? U24(proper(X), proper(Y), proper(Z)) proper(U26(X)) >? U26(proper(X)) proper(U31(X, Y)) >? U31(proper(X), proper(Y)) proper(U32(X, Y)) >? U32(proper(X), proper(Y)) proper(U33(X)) >? U33(proper(X)) proper(U44(X, Y, Z)) >? U44(proper(X), proper(Y), proper(Z)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U51(X, Y, Z)) >? U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) >? U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) >? U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) >? U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) >? U55(proper(X), proper(Y)) proper(U56(X)) >? U56(proper(X)) proper(U63(X)) >? U63(proper(X)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(U73(X, Y)) >? U73(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U74(X)) >? U74(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) proper(U92(X)) >? U92(proper(X)) proper(e) >? ok(e) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: !6220!6220 = \y0y1.y0 + 3y1 U11 = \y0y1.2 + y0 + y1 U12 = \y0y1.y0 + y1 U13 = \y0.1 + y0 U21 = \y0y1y2.2 + y0 + y1 + y2 U22 = \y0y1y2.2 + y0 + y1 + y2 U23 = \y0y1y2.2 + y0 + y1 + y2 U24 = \y0y1y2.3 + y0 + y1 + y2 U26 = \y0.3 + 2y0 U31 = \y0y1.3 + y1 + 2y0 U32 = \y0y1.2 + y0 + y1 U33 = \y0.3 + y0 U43 = \y0y1y2.y1 + y2 + 3y0 U44 = \y0y1y2.2 + y0 + y1 + y2 U45 = \y0y1.y0 + y1 U51 = \y0y1y2.3 + y0 + y1 + y2 U52 = \y0y1y2.1 + y0 + y1 + y2 U53 = \y0y1y2.3 + y0 + y1 + y2 U54 = \y0y1y2.3 + y1 + y2 + 2y0 U55 = \y0y1.1 + y0 + y1 U56 = \y0.3 + y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U63 = \y0.1 + y0 U72 = \y0y1.y0 + y1 U73 = \y0y1.3 + y1 + 2y0 U74 = \y0.3 + 2y0 U81 = \y0y1.y0 + y1 U82 = \y0y1.2y1 + 3y0 U83 = \y0.y0 U92 = \y0.3 + y0 active = \y0.3y0 e = 3 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.y0 isPalListKind = \y0.1 + y0 mark = \y0.1 + y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[active(U11(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + x1 + 3x0 = [[U11(active(_x0), _x1)]] [[active(U12(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U12(active(_x0), _x1)]] [[active(U13(_x0))]] = 3 + 3x0 > 1 + 3x0 = [[U13(active(_x0))]] [[active(U21(_x0, _x1, _x2))]] = 6 + 3x0 + 3x1 + 3x2 > 2 + x1 + x2 + 3x0 = [[U21(active(_x0), _x1, _x2)]] [[active(U22(_x0, _x1, _x2))]] = 6 + 3x0 + 3x1 + 3x2 > 2 + x1 + x2 + 3x0 = [[U22(active(_x0), _x1, _x2)]] [[active(U23(_x0, _x1, _x2))]] = 6 + 3x0 + 3x1 + 3x2 > 2 + x1 + x2 + 3x0 = [[U23(active(_x0), _x1, _x2)]] [[active(U24(_x0, _x1, _x2))]] = 9 + 3x0 + 3x1 + 3x2 > 3 + x1 + x2 + 3x0 = [[U24(active(_x0), _x1, _x2)]] [[active(U26(_x0))]] = 9 + 6x0 > 3 + 6x0 = [[U26(active(_x0))]] [[active(U31(_x0, _x1))]] = 9 + 3x1 + 6x0 > 3 + x1 + 6x0 = [[U31(active(_x0), _x1)]] [[active(U32(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + x1 + 3x0 = [[U32(active(_x0), _x1)]] [[active(U33(_x0))]] = 9 + 3x0 > 3 + 3x0 = [[U33(active(_x0))]] [[active(U44(_x0, _x1, _x2))]] = 6 + 3x0 + 3x1 + 3x2 > 2 + x1 + x2 + 3x0 = [[U44(active(_x0), _x1, _x2)]] [[active(U45(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U45(active(_x0), _x1)]] [[active(U51(_x0, _x1, _x2))]] = 9 + 3x0 + 3x1 + 3x2 > 3 + x1 + x2 + 3x0 = [[U51(active(_x0), _x1, _x2)]] [[active(U52(_x0, _x1, _x2))]] = 3 + 3x0 + 3x1 + 3x2 > 1 + x1 + x2 + 3x0 = [[U52(active(_x0), _x1, _x2)]] [[active(U53(_x0, _x1, _x2))]] = 9 + 3x0 + 3x1 + 3x2 > 3 + x1 + x2 + 3x0 = [[U53(active(_x0), _x1, _x2)]] [[active(U54(_x0, _x1, _x2))]] = 9 + 3x1 + 3x2 + 6x0 > 3 + x1 + x2 + 6x0 = [[U54(active(_x0), _x1, _x2)]] [[active(U55(_x0, _x1))]] = 3 + 3x0 + 3x1 > 1 + x1 + 3x0 = [[U55(active(_x0), _x1)]] [[active(U56(_x0))]] = 9 + 3x0 > 3 + 3x0 = [[U56(active(_x0))]] [[active(U63(_x0))]] = 3 + 3x0 > 1 + 3x0 = [[U63(active(_x0))]] [[active(U72(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U72(active(_x0), _x1)]] [[active(U73(_x0, _x1))]] = 9 + 3x1 + 6x0 > 3 + x1 + 6x0 = [[U73(active(_x0), _x1)]] [[active(U74(_x0))]] = 9 + 6x0 > 3 + 6x0 = [[U74(active(_x0))]] [[active(U81(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U81(active(_x0), _x1)]] [[active(U83(_x0))]] = 3x0 >= 3x0 = [[U83(active(_x0))]] [[active(U92(_x0))]] = 9 + 3x0 > 3 + 3x0 = [[U92(active(_x0))]] [[!6220!6220(_x0, mark(_x1))]] = 3 + x0 + 3x1 > 1 + x0 + 3x1 = [[mark(!6220!6220(_x0, _x1))]] [[U26(mark(_x0))]] = 5 + 2x0 > 4 + 2x0 = [[mark(U26(_x0))]] [[U31(mark(_x0), _x1)]] = 5 + x1 + 2x0 > 4 + x1 + 2x0 = [[mark(U31(_x0, _x1))]] [[U43(mark(_x0), _x1, _x2)]] = 3 + x1 + x2 + 3x0 > 1 + x1 + x2 + 3x0 = [[mark(U43(_x0, _x1, _x2))]] [[U54(mark(_x0), _x1, _x2)]] = 5 + x1 + x2 + 2x0 > 4 + x1 + x2 + 2x0 = [[mark(U54(_x0, _x1, _x2))]] [[U73(mark(_x0), _x1)]] = 5 + x1 + 2x0 > 4 + x1 + 2x0 = [[mark(U73(_x0, _x1))]] [[U74(mark(_x0))]] = 5 + 2x0 > 4 + 2x0 = [[mark(U74(_x0))]] [[U82(mark(_x0), _x1)]] = 3 + 2x1 + 3x0 > 1 + 2x1 + 3x0 = [[mark(U82(_x0, _x1))]] [[U92(mark(_x0))]] = 4 + x0 >= 4 + x0 = [[mark(U92(_x0))]] [[proper(U11(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + 3x0 + 3x1 = [[U11(proper(_x0), proper(_x1))]] [[proper(U12(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isPalListKind(_x0))]] = 3 + 3x0 > 1 + 3x0 = [[isPalListKind(proper(_x0))]] [[proper(U13(_x0))]] = 3 + 3x0 > 1 + 3x0 = [[U13(proper(_x0))]] [[proper(isNeList(_x0))]] = 3x0 >= 3x0 = [[isNeList(proper(_x0))]] [[proper(U21(_x0, _x1, _x2))]] = 6 + 3x0 + 3x1 + 3x2 > 2 + 3x0 + 3x1 + 3x2 = [[U21(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U22(_x0, _x1, _x2))]] = 6 + 3x0 + 3x1 + 3x2 > 2 + 3x0 + 3x1 + 3x2 = [[U22(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U23(_x0, _x1, _x2))]] = 6 + 3x0 + 3x1 + 3x2 > 2 + 3x0 + 3x1 + 3x2 = [[U23(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U24(_x0, _x1, _x2))]] = 9 + 3x0 + 3x1 + 3x2 > 3 + 3x0 + 3x1 + 3x2 = [[U24(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U26(_x0))]] = 9 + 6x0 > 3 + 6x0 = [[U26(proper(_x0))]] [[proper(U31(_x0, _x1))]] = 9 + 3x1 + 6x0 > 3 + 3x1 + 6x0 = [[U31(proper(_x0), proper(_x1))]] [[proper(U32(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + 3x0 + 3x1 = [[U32(proper(_x0), proper(_x1))]] [[proper(U33(_x0))]] = 9 + 3x0 > 3 + 3x0 = [[U33(proper(_x0))]] [[proper(U44(_x0, _x1, _x2))]] = 6 + 3x0 + 3x1 + 3x2 > 2 + 3x0 + 3x1 + 3x2 = [[U44(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U45(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U51(_x0, _x1, _x2))]] = 9 + 3x0 + 3x1 + 3x2 > 3 + 3x0 + 3x1 + 3x2 = [[U51(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U52(_x0, _x1, _x2))]] = 3 + 3x0 + 3x1 + 3x2 > 1 + 3x0 + 3x1 + 3x2 = [[U52(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U53(_x0, _x1, _x2))]] = 9 + 3x0 + 3x1 + 3x2 > 3 + 3x0 + 3x1 + 3x2 = [[U53(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U54(_x0, _x1, _x2))]] = 9 + 3x1 + 3x2 + 6x0 > 3 + 3x1 + 3x2 + 6x0 = [[U54(proper(_x0), proper(_x1), proper(_x2))]] [[proper(U55(_x0, _x1))]] = 3 + 3x0 + 3x1 > 1 + 3x0 + 3x1 = [[U55(proper(_x0), proper(_x1))]] [[proper(U56(_x0))]] = 9 + 3x0 > 3 + 3x0 = [[U56(proper(_x0))]] [[proper(U63(_x0))]] = 3 + 3x0 > 1 + 3x0 = [[U63(proper(_x0))]] [[proper(U72(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(U73(_x0, _x1))]] = 9 + 3x1 + 6x0 > 3 + 3x1 + 6x0 = [[U73(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 3x0 >= 3x0 = [[isPal(proper(_x0))]] [[proper(U74(_x0))]] = 9 + 6x0 > 3 + 6x0 = [[U74(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 3x0 >= 3x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = 3x0 >= 3x0 = [[isNePal(proper(_x0))]] [[proper(U92(_x0))]] = 9 + 3x0 > 3 + 3x0 = [[U92(proper(_x0))]] [[proper(e)]] = 9 > 3 = [[ok(e)]] [[U33(ok(_x0))]] = 3 + x0 >= 3 + x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3 + x0 >= 3 + x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3 + x0 >= 3 + x0 = [[ok(U92(_x0))]] We can thus remove the following rules: active(U11(X, Y)) => U11(active(X), Y) active(U13(X)) => U13(active(X)) active(U21(X, Y, Z)) => U21(active(X), Y, Z) active(U22(X, Y, Z)) => U22(active(X), Y, Z) active(U23(X, Y, Z)) => U23(active(X), Y, Z) active(U24(X, Y, Z)) => U24(active(X), Y, Z) active(U26(X)) => U26(active(X)) active(U31(X, Y)) => U31(active(X), Y) active(U32(X, Y)) => U32(active(X), Y) active(U33(X)) => U33(active(X)) active(U44(X, Y, Z)) => U44(active(X), Y, Z) active(U51(X, Y, Z)) => U51(active(X), Y, Z) active(U52(X, Y, Z)) => U52(active(X), Y, Z) active(U53(X, Y, Z)) => U53(active(X), Y, Z) active(U54(X, Y, Z)) => U54(active(X), Y, Z) active(U55(X, Y)) => U55(active(X), Y) active(U56(X)) => U56(active(X)) active(U63(X)) => U63(active(X)) active(U73(X, Y)) => U73(active(X), Y) active(U74(X)) => U74(active(X)) active(U92(X)) => U92(active(X)) !6220!6220(X, mark(Y)) => mark(!6220!6220(X, Y)) U26(mark(X)) => mark(U26(X)) U31(mark(X), Y) => mark(U31(X, Y)) U43(mark(X), Y, Z) => mark(U43(X, Y, Z)) U54(mark(X), Y, Z) => mark(U54(X, Y, Z)) U73(mark(X), Y) => mark(U73(X, Y)) U74(mark(X)) => mark(U74(X)) U82(mark(X), Y) => mark(U82(X, Y)) proper(U11(X, Y)) => U11(proper(X), proper(Y)) proper(isPalListKind(X)) => isPalListKind(proper(X)) proper(U13(X)) => U13(proper(X)) proper(U21(X, Y, Z)) => U21(proper(X), proper(Y), proper(Z)) proper(U22(X, Y, Z)) => U22(proper(X), proper(Y), proper(Z)) proper(U23(X, Y, Z)) => U23(proper(X), proper(Y), proper(Z)) proper(U24(X, Y, Z)) => U24(proper(X), proper(Y), proper(Z)) proper(U26(X)) => U26(proper(X)) proper(U31(X, Y)) => U31(proper(X), proper(Y)) proper(U32(X, Y)) => U32(proper(X), proper(Y)) proper(U33(X)) => U33(proper(X)) proper(U44(X, Y, Z)) => U44(proper(X), proper(Y), proper(Z)) proper(U51(X, Y, Z)) => U51(proper(X), proper(Y), proper(Z)) proper(U52(X, Y, Z)) => U52(proper(X), proper(Y), proper(Z)) proper(U53(X, Y, Z)) => U53(proper(X), proper(Y), proper(Z)) proper(U54(X, Y, Z)) => U54(proper(X), proper(Y), proper(Z)) proper(U55(X, Y)) => U55(proper(X), proper(Y)) proper(U56(X)) => U56(proper(X)) proper(U63(X)) => U63(proper(X)) proper(U73(X, Y)) => U73(proper(X), proper(Y)) proper(U74(X)) => U74(proper(X)) proper(U92(X)) => U92(proper(X)) proper(e) => ok(e) 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(U12(X, Y)) >? U12(active(X), Y) active(U45(X, Y)) >? U45(active(X), Y) active(U72(X, Y)) >? U72(active(X), Y) active(U81(X, Y)) >? U81(active(X), Y) active(U83(X)) >? U83(active(X)) U92(mark(X)) >? mark(U92(X)) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(U83(X)) >? U83(proper(X)) proper(isNePal(X)) >? isNePal(proper(X)) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U12 = \y0y1.y0 + y1 U33 = \y0.3y0 U45 = \y0y1.y0 + y1 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U72 = \y0y1.y0 + y1 U81 = \y0y1.y0 + y1 U83 = \y0.2 + y0 U92 = \y0.3y0 active = \y0.3y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.y0 mark = \y0.y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[active(U12(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U12(active(_x0), _x1)]] [[active(U45(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U45(active(_x0), _x1)]] [[active(U72(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U72(active(_x0), _x1)]] [[active(U81(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U81(active(_x0), _x1)]] [[active(U83(_x0))]] = 6 + 3x0 > 2 + 3x0 = [[U83(active(_x0))]] [[U92(mark(_x0))]] = 3x0 >= 3x0 = [[mark(U92(_x0))]] [[proper(U12(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isNeList(_x0))]] = 3x0 >= 3x0 = [[isNeList(proper(_x0))]] [[proper(U45(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U72(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 3x0 >= 3x0 = [[isPal(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(U83(_x0))]] = 6 + 3x0 > 2 + 3x0 = [[U83(proper(_x0))]] [[proper(isNePal(_x0))]] = 3x0 >= 3x0 = [[isNePal(proper(_x0))]] [[U33(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: active(U83(X)) => U83(active(X)) proper(U83(X)) => U83(proper(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(U12(X, Y)) >? U12(active(X), Y) active(U45(X, Y)) >? U45(active(X), Y) active(U72(X, Y)) >? U72(active(X), Y) active(U81(X, Y)) >? U81(active(X), Y) U92(mark(X)) >? mark(U92(X)) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(isNePal(X)) >? isNePal(proper(X)) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U12 = \y0y1.y0 + y1 U33 = \y0.3y0 U45 = \y0y1.y0 + y1 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U72 = \y0y1.y0 + y1 U81 = \y0y1.y0 + y1 U92 = \y0.3y0 active = \y0.3y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.y0 mark = \y0.2 + y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[active(U12(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U12(active(_x0), _x1)]] [[active(U45(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U45(active(_x0), _x1)]] [[active(U72(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U72(active(_x0), _x1)]] [[active(U81(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U81(active(_x0), _x1)]] [[U92(mark(_x0))]] = 6 + 3x0 > 2 + 3x0 = [[mark(U92(_x0))]] [[proper(U12(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isNeList(_x0))]] = 3x0 >= 3x0 = [[isNeList(proper(_x0))]] [[proper(U45(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U72(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 3x0 >= 3x0 = [[isPal(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(isNePal(_x0))]] = 3x0 >= 3x0 = [[isNePal(proper(_x0))]] [[U33(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: U92(mark(X)) => mark(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(U12(X, Y)) >? U12(active(X), Y) active(U45(X, Y)) >? U45(active(X), Y) active(U72(X, Y)) >? U72(active(X), Y) active(U81(X, Y)) >? U81(active(X), Y) proper(U12(X, Y)) >? U12(proper(X), proper(Y)) proper(isNeList(X)) >? isNeList(proper(X)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(isNePal(X)) >? isNePal(proper(X)) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U12 = \y0y1.2 + y0 + y1 U33 = \y0.3y0 U45 = \y0y1.y0 + y1 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U72 = \y0y1.y0 + y1 U81 = \y0y1.y0 + y1 U92 = \y0.3y0 active = \y0.3y0 isNeList = \y0.y0 isNePal = \y0.y0 isPal = \y0.y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[active(U12(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + x1 + 3x0 = [[U12(active(_x0), _x1)]] [[active(U45(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U45(active(_x0), _x1)]] [[active(U72(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U72(active(_x0), _x1)]] [[active(U81(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U81(active(_x0), _x1)]] [[proper(U12(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + 3x0 + 3x1 = [[U12(proper(_x0), proper(_x1))]] [[proper(isNeList(_x0))]] = 3x0 >= 3x0 = [[isNeList(proper(_x0))]] [[proper(U45(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U72(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 3x0 >= 3x0 = [[isPal(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(isNePal(_x0))]] = 3x0 >= 3x0 = [[isNePal(proper(_x0))]] [[U33(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: active(U12(X, Y)) => U12(active(X), Y) proper(U12(X, Y)) => U12(proper(X), proper(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(U45(X, Y)) >? U45(active(X), Y) active(U72(X, Y)) >? U72(active(X), Y) active(U81(X, Y)) >? U81(active(X), Y) proper(isNeList(X)) >? isNeList(proper(X)) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(isNePal(X)) >? isNePal(proper(X)) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U33 = \y0.3y0 U45 = \y0y1.y0 + y1 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U72 = \y0y1.y0 + y1 U81 = \y0y1.y0 + y1 U92 = \y0.3y0 active = \y0.3y0 isNeList = \y0.2 + y0 isNePal = \y0.y0 isPal = \y0.y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[active(U45(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U45(active(_x0), _x1)]] [[active(U72(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U72(active(_x0), _x1)]] [[active(U81(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U81(active(_x0), _x1)]] [[proper(isNeList(_x0))]] = 6 + 3x0 > 2 + 3x0 = [[isNeList(proper(_x0))]] [[proper(U45(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U72(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 3x0 >= 3x0 = [[isPal(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(isNePal(_x0))]] = 3x0 >= 3x0 = [[isNePal(proper(_x0))]] [[U33(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: proper(isNeList(X)) => isNeList(proper(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(U45(X, Y)) >? U45(active(X), Y) active(U72(X, Y)) >? U72(active(X), Y) active(U81(X, Y)) >? U81(active(X), Y) proper(U45(X, Y)) >? U45(proper(X), proper(Y)) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(isNePal(X)) >? isNePal(proper(X)) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U33 = \y0.3y0 U45 = \y0y1.2 + y0 + y1 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U72 = \y0y1.y0 + y1 U81 = \y0y1.y0 + y1 U92 = \y0.3y0 active = \y0.3y0 isNePal = \y0.y0 isPal = \y0.y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[active(U45(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + x1 + 3x0 = [[U45(active(_x0), _x1)]] [[active(U72(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U72(active(_x0), _x1)]] [[active(U81(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U81(active(_x0), _x1)]] [[proper(U45(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + 3x0 + 3x1 = [[U45(proper(_x0), proper(_x1))]] [[proper(U72(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 3x0 >= 3x0 = [[isPal(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(isNePal(_x0))]] = 3x0 >= 3x0 = [[isNePal(proper(_x0))]] [[U33(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: active(U45(X, Y)) => U45(active(X), Y) proper(U45(X, Y)) => U45(proper(X), proper(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(U72(X, Y)) >? U72(active(X), Y) active(U81(X, Y)) >? U81(active(X), Y) proper(U72(X, Y)) >? U72(proper(X), proper(Y)) proper(isPal(X)) >? isPal(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(isNePal(X)) >? isNePal(proper(X)) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U33 = \y0.3y0 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U72 = \y0y1.2 + y0 + y1 U81 = \y0y1.y0 + y1 U92 = \y0.3y0 active = \y0.3y0 isNePal = \y0.y0 isPal = \y0.y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[active(U72(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + x1 + 3x0 = [[U72(active(_x0), _x1)]] [[active(U81(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U81(active(_x0), _x1)]] [[proper(U72(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + 3x0 + 3x1 = [[U72(proper(_x0), proper(_x1))]] [[proper(isPal(_x0))]] = 3x0 >= 3x0 = [[isPal(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(isNePal(_x0))]] = 3x0 >= 3x0 = [[isNePal(proper(_x0))]] [[U33(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: active(U72(X, Y)) => U72(active(X), Y) proper(U72(X, Y)) => U72(proper(X), proper(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(U81(X, Y)) >? U81(active(X), Y) proper(isPal(X)) >? isPal(proper(X)) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(isNePal(X)) >? isNePal(proper(X)) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U33 = \y0.3y0 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U81 = \y0y1.y0 + y1 U92 = \y0.3y0 active = \y0.3y0 isNePal = \y0.y0 isPal = \y0.2 + y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[active(U81(_x0, _x1))]] = 3x0 + 3x1 >= x1 + 3x0 = [[U81(active(_x0), _x1)]] [[proper(isPal(_x0))]] = 6 + 3x0 > 2 + 3x0 = [[isPal(proper(_x0))]] [[proper(U81(_x0, _x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(isNePal(_x0))]] = 3x0 >= 3x0 = [[isNePal(proper(_x0))]] [[U33(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: proper(isPal(X)) => isPal(proper(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(U81(X, Y)) >? U81(active(X), Y) proper(U81(X, Y)) >? U81(proper(X), proper(Y)) proper(isNePal(X)) >? isNePal(proper(X)) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U33 = \y0.3y0 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U81 = \y0y1.2 + y0 + y1 U92 = \y0.3y0 active = \y0.3y0 isNePal = \y0.y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[active(U81(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + x1 + 3x0 = [[U81(active(_x0), _x1)]] [[proper(U81(_x0, _x1))]] = 6 + 3x0 + 3x1 > 2 + 3x0 + 3x1 = [[U81(proper(_x0), proper(_x1))]] [[proper(isNePal(_x0))]] = 3x0 >= 3x0 = [[isNePal(proper(_x0))]] [[U33(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: active(U81(X, Y)) => U81(active(X), Y) proper(U81(X, Y)) => U81(proper(X), proper(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]): proper(isNePal(X)) >? isNePal(proper(X)) U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U33 = \y0.3y0 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U92 = \y0.3y0 isNePal = \y0.2 + y0 ok = \y0.y0 proper = \y0.3y0 Using this interpretation, the requirements translate to: [[proper(isNePal(_x0))]] = 6 + 3x0 > 2 + 3x0 = [[isNePal(proper(_x0))]] [[U33(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 3x0 + 3x1 >= 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 3x0 >= 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: proper(isNePal(X)) => isNePal(proper(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]): U33(ok(X)) >? ok(U33(X)) U56(ok(X)) >? ok(U56(X)) U61(ok(X), ok(Y)) >? ok(U61(X, Y)) U62(ok(X), ok(Y)) >? ok(U62(X, Y)) U92(ok(X)) >? ok(U92(X)) We orient these requirements with a polynomial interpretation in the natural numbers. The following interpretation satisfies the requirements: U33 = \y0.3y0 U56 = \y0.3y0 U61 = \y0y1.3y0 + 3y1 U62 = \y0y1.3y0 + 3y1 U92 = \y0.3y0 ok = \y0.2 + y0 Using this interpretation, the requirements translate to: [[U33(ok(_x0))]] = 6 + 3x0 > 2 + 3x0 = [[ok(U33(_x0))]] [[U56(ok(_x0))]] = 6 + 3x0 > 2 + 3x0 = [[ok(U56(_x0))]] [[U61(ok(_x0), ok(_x1))]] = 12 + 3x0 + 3x1 > 2 + 3x0 + 3x1 = [[ok(U61(_x0, _x1))]] [[U62(ok(_x0), ok(_x1))]] = 12 + 3x0 + 3x1 > 2 + 3x0 + 3x1 = [[ok(U62(_x0, _x1))]] [[U92(ok(_x0))]] = 6 + 3x0 > 2 + 3x0 = [[ok(U92(_x0))]] We can thus remove the following rules: U33(ok(X)) => ok(U33(X)) U56(ok(X)) => ok(U56(X)) U61(ok(X), ok(Y)) => ok(U61(X, Y)) U62(ok(X), ok(Y)) => ok(U62(X, Y)) U92(ok(X)) => ok(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.