Certification Problem

Input (TPDB TRS_Innermost/Transformed_CSR_innermost_04/PALINDROME_nokinds_noand_iGM)

The rewrite relation of the following TRS is considered.

There are 101 ruless (increase limit for explicit display).

The evaluation strategy is innermost.

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by AProVE @ termCOMP 2023)

1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[__(x1, x2)] = 1 + 2 · x1 + 1 · x2
[mark(x1)] = 1 · x1
[nil] = 0
[U11(x1)] = 1 · x1
[tt] = 0
[U21(x1, x2)] = 1 · x1 + 2 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 2 · x1
[U31(x1)] = 1 · x1
[U41(x1, x2)] = 2 + 1 · x1 + 2 · x2
[U42(x1)] = 1 + 1 · x1
[isNeList(x1)] = 2 · x1
[U51(x1, x2)] = 1 · x1 + 2 · x2
[U52(x1)] = 1 · x1
[U61(x1)] = 1 · x1
[U71(x1, x2)] = 1 · x1 + 1 · x2
[U72(x1)] = 1 · x1
[isPal(x1)] = 1 · x1
[U81(x1)] = 1 · x1
[isQid(x1)] = 1 · x1
[isNePal(x1)] = 1 · x1
[a] = 0
[e] = 0
[i] = 0
[o] = 0
[u] = 0
all of the following rules can be deleted.
active(__(__(X,Y),Z)) mark(__(X,__(Y,Z))) (1)
active(__(X,nil)) mark(X) (2)
active(__(nil,X)) mark(X) (3)
active(U41(tt,V2)) mark(U42(isNeList(V2))) (8)
active(U42(tt)) mark(tt) (9)
active(isList(__(V1,V2))) mark(U21(isList(V1),V2)) (18)
active(isNeList(__(V1,V2))) mark(U51(isNeList(V1),V2)) (21)
active(isNePal(__(I,__(P,I)))) mark(U71(isQid(I),P)) (23)

1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[U11(x1)] = 1 · x1
[tt] = 0
[mark(x1)] = 1 · x1
[U21(x1, x2)] = 2 + 1 · x1 + 2 · x2
[U22(x1)] = 2 + 2 · x1
[isList(x1)] = 1 · x1
[U31(x1)] = 1 · x1
[U51(x1, x2)] = 1 · x1 + 1 · x2
[U52(x1)] = 1 · x1
[U61(x1)] = 1 · x1
[U71(x1, x2)] = 1 · x1 + 2 · x2
[U72(x1)] = 1 · x1
[isPal(x1)] = 2 · x1
[U81(x1)] = 2 · x1
[isNeList(x1)] = 1 · x1
[nil] = 0
[isQid(x1)] = 1 · x1
[__(x1, x2)] = 1 · x1 + 1 · x2
[U41(x1, x2)] = 1 · x1 + 1 · x2
[isNePal(x1)] = 1 · x1
[a] = 0
[e] = 0
[i] = 0
[o] = 0
[u] = 0
[U42(x1)] = 1 · x1
all of the following rules can be deleted.
active(U22(tt)) mark(tt) (6)

1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[U11(x1)] = 1 · x1
[tt] = 0
[mark(x1)] = 1 · x1
[U21(x1, x2)] = 1 · x1 + 1 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 1 · x1
[U31(x1)] = 1 · x1
[U51(x1, x2)] = 2 · x1 + 2 · x2
[U52(x1)] = 1 · x1
[U61(x1)] = 1 · x1
[U71(x1, x2)] = 1 · x1 + 2 · x2
[U72(x1)] = 2 · x1
[isPal(x1)] = 1 · x1
[U81(x1)] = 1 · x1
[isNeList(x1)] = 1 · x1
[nil] = 0
[isQid(x1)] = 1 · x1
[__(x1, x2)] = 1 · x1 + 1 · x2
[U41(x1, x2)] = 1 · x1 + 1 · x2
[isNePal(x1)] = 1 · x1
[a] = 0
[e] = 2
[i] = 0
[o] = 0
[u] = 0
[U42(x1)] = 1 · x1
all of the following rules can be deleted.
active(isQid(e)) mark(tt) (27)

1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[U11(x1)] = 1 · x1
[tt] = 0
[mark(x1)] = 1 · x1
[U21(x1, x2)] = 1 · x1 + 2 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 2 · x1
[U31(x1)] = 2 · x1
[U51(x1, x2)] = 2 + 1 · x1 + 2 · x2
[U52(x1)] = 1 · x1
[U61(x1)] = 1 · x1
[U71(x1, x2)] = 2 + 1 · x1 + 1 · x2
[U72(x1)] = 1 · x1
[isPal(x1)] = 1 · x1
[U81(x1)] = 1 · x1
[isNeList(x1)] = 2 · x1
[nil] = 0
[isQid(x1)] = 1 · x1
[__(x1, x2)] = 1 · x1 + 1 · x2
[U41(x1, x2)] = 1 · x1 + 1 · x2
[isNePal(x1)] = 1 · x1
[a] = 0
[i] = 0
[o] = 0
[u] = 0
[U42(x1)] = 1 · x1
[e] = 0
all of the following rules can be deleted.
active(U51(tt,V2)) mark(U52(isList(V2))) (10)
active(U71(tt,P)) mark(U72(isPal(P))) (13)

1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[U11(x1)] = 1 · x1
[tt] = 0
[mark(x1)] = 1 · x1
[U21(x1, x2)] = 1 · x1 + 2 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 2 · x1
[U31(x1)] = 1 · x1
[U52(x1)] = 2 · x1
[U61(x1)] = 1 · x1
[U72(x1)] = 1 · x1
[U81(x1)] = 1 · x1
[isNeList(x1)] = 2 · x1
[nil] = 0
[isQid(x1)] = 2 · x1
[__(x1, x2)] = 1 · x1 + 1 · x2
[U41(x1, x2)] = 1 · x1 + 1 · x2
[isNePal(x1)] = 2 · x1
[isPal(x1)] = 2 + 2 · x1
[a] = 0
[i] = 1
[o] = 0
[u] = 0
[U42(x1)] = 2 · x1
[U51(x1, x2)] = 1 · x1 + 2 · x2
[U71(x1, x2)] = 2 · x1 + 2 · x2
[e] = 0
all of the following rules can be deleted.
active(isPal(V)) mark(U81(isNePal(V))) (24)
active(isPal(nil)) mark(tt) (25)
active(isQid(i)) mark(tt) (28)

1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[U11(x1)] = 1 · x1
[tt] = 0
[mark(x1)] = 1 · x1
[U21(x1, x2)] = 1 · x1 + 2 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 1 · x1
[U31(x1)] = 1 · x1
[U52(x1)] = 2 · x1
[U61(x1)] = 1 · x1
[U72(x1)] = 1 + 1 · x1
[U81(x1)] = 1 · x1
[isNeList(x1)] = 1 · x1
[nil] = 0
[isQid(x1)] = 1 · x1
[__(x1, x2)] = 1 · x1 + 1 · x2
[U41(x1, x2)] = 1 · x1 + 1 · x2
[isNePal(x1)] = 2 · x1
[a] = 0
[o] = 0
[u] = 0
[U42(x1)] = 1 · x1
[U51(x1, x2)] = 2 · x1 + 1 · x2
[U71(x1, x2)] = 1 · x1 + 2 · x2
[isPal(x1)] = 2 · x1
[e] = 0
[i] = 0
all of the following rules can be deleted.
active(U72(tt)) mark(tt) (14)

1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[U11(x1)] = 2 · x1
[tt] = 0
[mark(x1)] = 1 · x1
[U21(x1, x2)] = 1 · x1 + 2 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 2 · x1
[U31(x1)] = 1 · x1
[U52(x1)] = 1 · x1
[U61(x1)] = 2 · x1
[U81(x1)] = 1 · x1
[isNeList(x1)] = 1 · x1
[nil] = 0
[isQid(x1)] = 1 · x1
[__(x1, x2)] = 2 · x1 + 1 · x2
[U41(x1, x2)] = 1 · x1 + 1 · x2
[isNePal(x1)] = 2 · x1
[a] = 0
[o] = 0
[u] = 2
[U42(x1)] = 1 · x1
[U51(x1, x2)] = 1 · x1 + 1 · x2
[U71(x1, x2)] = 2 · x1 + 2 · x2
[U72(x1)] = 1 · x1
[isPal(x1)] = 2 · x1
[e] = 0
[i] = 0
all of the following rules can be deleted.
active(isQid(u)) mark(tt) (30)

1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[U11(x1)] = 1 · x1
[tt] = 0
[mark(x1)] = 1 · x1
[U21(x1, x2)] = 1 · x1 + 2 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 2 · x1
[U31(x1)] = 1 · x1
[U52(x1)] = 1 · x1
[U61(x1)] = 1 · x1
[U81(x1)] = 1 · x1
[isNeList(x1)] = 2 · x1
[nil] = 0
[isQid(x1)] = 2 · x1
[__(x1, x2)] = 2 · x1 + 1 · x2
[U41(x1, x2)] = 1 · x1 + 1 · x2
[isNePal(x1)] = 2 · x1
[a] = 0
[o] = 1
[U42(x1)] = 1 · x1
[U51(x1, x2)] = 2 · x1 + 1 · x2
[U71(x1, x2)] = 1 · x1 + 2 · x2
[U72(x1)] = 1 · x1
[isPal(x1)] = 2 · x1
[e] = 0
[i] = 0
[u] = 0
all of the following rules can be deleted.
active(isQid(o)) mark(tt) (29)

1.1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[U11(x1)] = 1 · x1
[tt] = 1
[mark(x1)] = 1 · x1
[U21(x1, x2)] = 2 + 2 · x1 + 2 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 2 + 2 · x1
[U31(x1)] = 2 · x1
[U52(x1)] = 2 + 1 · x1
[U61(x1)] = 1 · x1
[U81(x1)] = 1 + 1 · x1
[isNeList(x1)] = 2 · x1
[nil] = 0
[isQid(x1)] = 1 · x1
[__(x1, x2)] = 2 + 1 · x1 + 1 · x2
[U41(x1, x2)] = 1 · x1 + 2 · x2
[isNePal(x1)] = 2 · x1
[a] = 2
[U42(x1)] = 2 · x1
[U51(x1, x2)] = 1 · x1 + 2 · x2
[U71(x1, x2)] = 2 · x1 + 2 · x2
[U72(x1)] = 1 · x1
[isPal(x1)] = 2 · x1
[e] = 0
[i] = 0
[o] = 0
[u] = 0
all of the following rules can be deleted.
active(U21(tt,V2)) mark(U22(isList(V2))) (5)
active(U31(tt)) mark(tt) (7)
active(U52(tt)) mark(tt) (11)
active(U81(tt)) mark(tt) (15)
active(isList(V)) mark(U11(isNeList(V))) (16)
active(isList(nil)) mark(tt) (17)
active(isNeList(__(V1,V2))) mark(U41(isList(V1),V2)) (20)
active(isQid(a)) mark(tt) (26)

1.1.1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[U11(x1)] = 1 + 1 · x1
[tt] = 0
[mark(x1)] = 2 · x1
[U61(x1)] = 1 · x1
[isNeList(x1)] = 1 + 2 · x1
[U31(x1)] = 1 · x1
[isQid(x1)] = 1 · x1
[isNePal(x1)] = 2 · x1
[__(x1, x2)] = 1 + 2 · x1 + 2 · x2
[nil] = 0
[U21(x1, x2)] = 1 + 1 · x1 + 2 · x2
[U22(x1)] = 1 + 2 · x1
[isList(x1)] = 1 + 2 · x1
[U41(x1, x2)] = 1 + 1 · x1 + 1 · x2
[U42(x1)] = 1 + 1 · x1
[U51(x1, x2)] = 1 + 2 · x1 + 1 · x2
[U52(x1)] = 2 · x1
[U71(x1, x2)] = 1 + 1 · x1 + 2 · x2
[U72(x1)] = 1 + 1 · x1
[isPal(x1)] = 1 + 2 · x1
[U81(x1)] = 1 + 2 · x1
[a] = 0
[e] = 0
[i] = 0
[o] = 0
[u] = 1
all of the following rules can be deleted.
active(U11(tt)) mark(tt) (4)
active(isNeList(V)) mark(U31(isQid(V))) (19)
mark(__(X1,X2)) active(__(mark(X1),mark(X2))) (31)
mark(U11(X)) active(U11(mark(X))) (33)
mark(U21(X1,X2)) active(U21(mark(X1),X2)) (35)
mark(U22(X)) active(U22(mark(X))) (36)
mark(isList(X)) active(isList(X)) (37)
mark(U41(X1,X2)) active(U41(mark(X1),X2)) (39)
mark(U42(X)) active(U42(mark(X))) (40)
mark(isNeList(X)) active(isNeList(X)) (41)
mark(U51(X1,X2)) active(U51(mark(X1),X2)) (42)
mark(U71(X1,X2)) active(U71(mark(X1),X2)) (45)
mark(U72(X)) active(U72(mark(X))) (46)
mark(isPal(X)) active(isPal(X)) (47)
mark(U81(X)) active(U81(mark(X))) (48)
mark(u) active(u) (55)

1.1.1.1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 + 1 · x1
[U61(x1)] = 1 + 1 · x1
[tt] = 0
[mark(x1)] = 1 + 2 · x1
[isNePal(x1)] = 2 + 2 · x1
[isQid(x1)] = 1 · x1
[nil] = 2
[U31(x1)] = 2 + 2 · x1
[U52(x1)] = 1 + 1 · x1
[a] = 0
[e] = 1
[i] = 1
[o] = 1
[__(x1, x2)] = 1 · x1 + 1 · x2
[U11(x1)] = 1 · x1
[U21(x1, x2)] = 1 · x1 + 1 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 1 · x1
[U41(x1, x2)] = 1 · x1 + 1 · x2
[U42(x1)] = 1 · x1
[isNeList(x1)] = 1 · x1
[U51(x1, x2)] = 1 · x1 + 1 · x2
[U71(x1, x2)] = 1 · x1 + 1 · x2
[U72(x1)] = 1 · x1
[isPal(x1)] = 1 · x1
[U81(x1)] = 1 · x1
all of the following rules can be deleted.
active(U61(tt)) mark(tt) (12)
mark(nil) active(nil) (32)
mark(isNePal(X)) active(isNePal(X)) (50)
mark(e) active(e) (52)
mark(i) active(i) (53)
mark(o) active(o) (54)
__(mark(X1),X2) __(X1,X2) (56)
__(X1,mark(X2)) __(X1,X2) (57)
__(active(X1),X2) __(X1,X2) (58)
__(X1,active(X2)) __(X1,X2) (59)
U11(mark(X)) U11(X) (60)
U11(active(X)) U11(X) (61)
U21(mark(X1),X2) U21(X1,X2) (62)
U21(X1,mark(X2)) U21(X1,X2) (63)
U21(active(X1),X2) U21(X1,X2) (64)
U21(X1,active(X2)) U21(X1,X2) (65)
U22(mark(X)) U22(X) (66)
U22(active(X)) U22(X) (67)
isList(mark(X)) isList(X) (68)
isList(active(X)) isList(X) (69)
U31(mark(X)) U31(X) (70)
U31(active(X)) U31(X) (71)
U41(mark(X1),X2) U41(X1,X2) (72)
U41(X1,mark(X2)) U41(X1,X2) (73)
U41(active(X1),X2) U41(X1,X2) (74)
U41(X1,active(X2)) U41(X1,X2) (75)
U42(mark(X)) U42(X) (76)
U42(active(X)) U42(X) (77)
isNeList(mark(X)) isNeList(X) (78)
isNeList(active(X)) isNeList(X) (79)
U51(mark(X1),X2) U51(X1,X2) (80)
U51(X1,mark(X2)) U51(X1,X2) (81)
U51(active(X1),X2) U51(X1,X2) (82)
U51(X1,active(X2)) U51(X1,X2) (83)
U52(mark(X)) U52(X) (84)
U52(active(X)) U52(X) (85)
U61(mark(X)) U61(X) (86)
U61(active(X)) U61(X) (87)
U71(mark(X1),X2) U71(X1,X2) (88)
U71(X1,mark(X2)) U71(X1,X2) (89)
U71(active(X1),X2) U71(X1,X2) (90)
U71(X1,active(X2)) U71(X1,X2) (91)
U72(mark(X)) U72(X) (92)
U72(active(X)) U72(X) (93)
isPal(mark(X)) isPal(X) (94)
isPal(active(X)) isPal(X) (95)
U81(mark(X)) U81(X) (96)
U81(active(X)) U81(X) (97)
isQid(mark(X)) isQid(X) (98)
isQid(active(X)) isQid(X) (99)
isNePal(mark(X)) isNePal(X) (100)
isNePal(active(X)) isNePal(X) (101)

1.1.1.1.1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[active(x1)] = 1 · x1
[isNePal(x1)] = 2 · x1
[mark(x1)] = 2 · x1
[U61(x1)] = 1 · x1
[isQid(x1)] = 1 · x1
[tt] = 0
[U31(x1)] = 1 + 1 · x1
[U52(x1)] = 1 · x1
[a] = 0
all of the following rules can be deleted.
mark(U31(X)) active(U31(mark(X))) (38)

1.1.1.1.1.1.1.1.1.1.1.1.1 Rule Removal

Using the
prec(isNePal) = 4 stat(isNePal) = lex
prec(mark) = 3 stat(mark) = lex
prec(isQid) = 0 stat(isQid) = lex
prec(tt) = 1 stat(tt) = lex
prec(a) = 2 stat(a) = lex

π(active) = 1
π(isNePal) = [1]
π(mark) = [1]
π(U61) = 1
π(isQid) = [1]
π(tt) = []
π(U52) = 1
π(a) = []

all of the following rules can be deleted.
active(isNePal(V)) mark(U61(isQid(V))) (22)
mark(tt) active(tt) (34)
mark(isQid(X)) active(isQid(X)) (49)
mark(a) active(a) (51)

1.1.1.1.1.1.1.1.1.1.1.1.1.1 Rule Removal

Using the
prec(mark) = 1 stat(mark) = lex
prec(U52) = 0 stat(U52) = lex

π(mark) = [1]
π(U52) = [1]
π(active) = 1
π(U61) = 1

all of the following rules can be deleted.
mark(U52(X)) active(U52(mark(X))) (43)

1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 Rule Removal

Using the
prec(mark) = 1 stat(mark) = lex
prec(U61) = 0 stat(U61) = lex

π(mark) = [1]
π(U61) = [1]
π(active) = 1

all of the following rules can be deleted.
mark(U61(X)) active(U61(mark(X))) (44)

1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 R is empty

There are no rules in the TRS. Hence, it is terminating.