Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/PALINDROME_nokinds_noand_GM)

The rewrite relation of the following TRS is considered.

a____(__(X,Y),Z) a____(mark(X),a____(mark(Y),mark(Z))) (1)
a____(X,nil) mark(X) (2)
a____(nil,X) mark(X) (3)
a__U11(tt) tt (4)
a__U21(tt,V2) a__U22(a__isList(V2)) (5)
a__U22(tt) tt (6)
a__U31(tt) tt (7)
a__U41(tt,V2) a__U42(a__isNeList(V2)) (8)
a__U42(tt) tt (9)
a__U51(tt,V2) a__U52(a__isList(V2)) (10)
a__U52(tt) tt (11)
a__U61(tt) tt (12)
a__U71(tt,P) a__U72(a__isPal(P)) (13)
a__U72(tt) tt (14)
a__U81(tt) tt (15)
a__isList(V) a__U11(a__isNeList(V)) (16)
a__isList(nil) tt (17)
a__isList(__(V1,V2)) a__U21(a__isList(V1),V2) (18)
a__isNeList(V) a__U31(a__isQid(V)) (19)
a__isNeList(__(V1,V2)) a__U41(a__isList(V1),V2) (20)
a__isNeList(__(V1,V2)) a__U51(a__isNeList(V1),V2) (21)
a__isNePal(V) a__U61(a__isQid(V)) (22)
a__isNePal(__(I,__(P,I))) a__U71(a__isQid(I),P) (23)
a__isPal(V) a__U81(a__isNePal(V)) (24)
a__isPal(nil) tt (25)
a__isQid(a) tt (26)
a__isQid(e) tt (27)
a__isQid(i) tt (28)
a__isQid(o) tt (29)
a__isQid(u) tt (30)
mark(__(X1,X2)) a____(mark(X1),mark(X2)) (31)
mark(U11(X)) a__U11(mark(X)) (32)
mark(U21(X1,X2)) a__U21(mark(X1),X2) (33)
mark(U22(X)) a__U22(mark(X)) (34)
mark(isList(X)) a__isList(X) (35)
mark(U31(X)) a__U31(mark(X)) (36)
mark(U41(X1,X2)) a__U41(mark(X1),X2) (37)
mark(U42(X)) a__U42(mark(X)) (38)
mark(isNeList(X)) a__isNeList(X) (39)
mark(U51(X1,X2)) a__U51(mark(X1),X2) (40)
mark(U52(X)) a__U52(mark(X)) (41)
mark(U61(X)) a__U61(mark(X)) (42)
mark(U71(X1,X2)) a__U71(mark(X1),X2) (43)
mark(U72(X)) a__U72(mark(X)) (44)
mark(isPal(X)) a__isPal(X) (45)
mark(U81(X)) a__U81(mark(X)) (46)
mark(isQid(X)) a__isQid(X) (47)
mark(isNePal(X)) a__isNePal(X) (48)
mark(nil) nil (49)
mark(tt) tt (50)
mark(a) a (51)
mark(e) e (52)
mark(i) i (53)
mark(o) o (54)
mark(u) u (55)
a____(X1,X2) __(X1,X2) (56)
a__U11(X) U11(X) (57)
a__U21(X1,X2) U21(X1,X2) (58)
a__U22(X) U22(X) (59)
a__isList(X) isList(X) (60)
a__U31(X) U31(X) (61)
a__U41(X1,X2) U41(X1,X2) (62)
a__U42(X) U42(X) (63)
a__isNeList(X) isNeList(X) (64)
a__U51(X1,X2) U51(X1,X2) (65)
a__U52(X) U52(X) (66)
a__U61(X) U61(X) (67)
a__U71(X1,X2) U71(X1,X2) (68)
a__U72(X) U72(X) (69)
a__isPal(X) isPal(X) (70)
a__U81(X) U81(X) (71)
a__isQid(X) isQid(X) (72)
a__isNePal(X) isNePal(X) (73)

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
[a____(x1, x2)] = 1 + 2 · x1 + 1 · x2
[__(x1, x2)] = 1 + 2 · x1 + 1 · x2
[mark(x1)] = 1 · x1
[nil] = 0
[a__U11(x1)] = 1 · x1
[tt] = 0
[a__U21(x1, x2)] = 1 · x1 + 1 · x2
[a__U22(x1)] = 1 · x1
[a__isList(x1)] = 1 · x1
[a__U31(x1)] = 1 · x1
[a__U41(x1, x2)] = 2 · x1 + 1 · x2
[a__U42(x1)] = 1 · x1
[a__isNeList(x1)] = 1 · x1
[a__U51(x1, x2)] = 1 · x1 + 1 · x2
[a__U52(x1)] = 1 · x1
[a__U61(x1)] = 1 · x1
[a__U71(x1, x2)] = 1 · x1 + 2 · x2
[a__U72(x1)] = 1 · x1
[a__isPal(x1)] = 2 · x1
[a__U81(x1)] = 2 · x1
[a__isQid(x1)] = 1 · x1
[a__isNePal(x1)] = 1 · x1
[a] = 0
[e] = 0
[i] = 0
[o] = 0
[u] = 0
[U11(x1)] = 1 · x1
[U21(x1, x2)] = 1 · x1 + 1 · x2
[U22(x1)] = 1 · x1
[isList(x1)] = 1 · x1
[U31(x1)] = 1 · x1
[U41(x1, x2)] = 2 · x1 + 1 · x2
[U42(x1)] = 1 · x1
[isNeList(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
[isQid(x1)] = 1 · x1
[isNePal(x1)] = 1 · x1
all of the following rules can be deleted.
a____(__(X,Y),Z) a____(mark(X),a____(mark(Y),mark(Z))) (1)
a____(X,nil) mark(X) (2)
a____(nil,X) mark(X) (3)
a__isList(__(V1,V2)) a__U21(a__isList(V1),V2) (18)
a__isNeList(__(V1,V2)) a__U41(a__isList(V1),V2) (20)
a__isNeList(__(V1,V2)) a__U51(a__isNeList(V1),V2) (21)
a__isNePal(__(I,__(P,I))) a__U71(a__isQid(I),P) (23)

1.1 Rule Removal

Using the Knuth Bendix order with w0 = 1 and the following precedence and weight functions
prec(tt) = 25 weight(tt) = 4
prec(nil) = 0 weight(nil) = 1
prec(a) = 1 weight(a) = 3
prec(e) = 2 weight(e) = 3
prec(i) = 41 weight(i) = 3
prec(o) = 3 weight(o) = 3
prec(u) = 42 weight(u) = 3
prec(a__U11) = 36 weight(a__U11) = 1
prec(a__U22) = 22 weight(a__U22) = 1
prec(a__isList) = 40 weight(a__isList) = 3
prec(a__U31) = 19 weight(a__U31) = 1
prec(a__U42) = 12 weight(a__U42) = 2
prec(a__isNeList) = 21 weight(a__isNeList) = 2
prec(a__U52) = 37 weight(a__U52) = 1
prec(a__U61) = 30 weight(a__U61) = 1
prec(a__U72) = 29 weight(a__U72) = 1
prec(a__isPal) = 27 weight(a__isPal) = 3
prec(a__U81) = 14 weight(a__U81) = 1
prec(a__isQid) = 39 weight(a__isQid) = 1
prec(a__isNePal) = 34 weight(a__isNePal) = 2
prec(mark) = 43 weight(mark) = 0
prec(U11) = 35 weight(U11) = 1
prec(U22) = 15 weight(U22) = 1
prec(isList) = 6 weight(isList) = 3
prec(U31) = 7 weight(U31) = 1
prec(U42) = 8 weight(U42) = 2
prec(isNeList) = 20 weight(isNeList) = 2
prec(U52) = 10 weight(U52) = 1
prec(U61) = 23 weight(U61) = 1
prec(U72) = 28 weight(U72) = 1
prec(isPal) = 26 weight(isPal) = 3
prec(U81) = 13 weight(U81) = 1
prec(isQid) = 32 weight(isQid) = 1
prec(isNePal) = 33 weight(isNePal) = 2
prec(a__U21) = 24 weight(a__U21) = 0
prec(a__U41) = 17 weight(a__U41) = 0
prec(a__U51) = 38 weight(a__U51) = 0
prec(a__U71) = 31 weight(a__U71) = 0
prec(__) = 4 weight(__) = 0
prec(a____) = 5 weight(a____) = 0
prec(U21) = 18 weight(U21) = 0
prec(U41) = 16 weight(U41) = 0
prec(U51) = 9 weight(U51) = 0
prec(U71) = 11 weight(U71) = 0
all of the following rules can be deleted.
a__U11(tt) tt (4)
a__U21(tt,V2) a__U22(a__isList(V2)) (5)
a__U22(tt) tt (6)
a__U31(tt) tt (7)
a__U41(tt,V2) a__U42(a__isNeList(V2)) (8)
a__U42(tt) tt (9)
a__U51(tt,V2) a__U52(a__isList(V2)) (10)
a__U52(tt) tt (11)
a__U61(tt) tt (12)
a__U71(tt,P) a__U72(a__isPal(P)) (13)
a__U72(tt) tt (14)
a__U81(tt) tt (15)
a__isList(V) a__U11(a__isNeList(V)) (16)
a__isList(nil) tt (17)
a__isNeList(V) a__U31(a__isQid(V)) (19)
a__isNePal(V) a__U61(a__isQid(V)) (22)
a__isPal(V) a__U81(a__isNePal(V)) (24)
a__isPal(nil) tt (25)
a__isQid(a) tt (26)
a__isQid(e) tt (27)
a__isQid(i) tt (28)
a__isQid(o) tt (29)
a__isQid(u) tt (30)
mark(__(X1,X2)) a____(mark(X1),mark(X2)) (31)
mark(U11(X)) a__U11(mark(X)) (32)
mark(U21(X1,X2)) a__U21(mark(X1),X2) (33)
mark(U22(X)) a__U22(mark(X)) (34)
mark(isList(X)) a__isList(X) (35)
mark(U31(X)) a__U31(mark(X)) (36)
mark(U41(X1,X2)) a__U41(mark(X1),X2) (37)
mark(U42(X)) a__U42(mark(X)) (38)
mark(isNeList(X)) a__isNeList(X) (39)
mark(U51(X1,X2)) a__U51(mark(X1),X2) (40)
mark(U52(X)) a__U52(mark(X)) (41)
mark(U61(X)) a__U61(mark(X)) (42)
mark(U71(X1,X2)) a__U71(mark(X1),X2) (43)
mark(U72(X)) a__U72(mark(X)) (44)
mark(isPal(X)) a__isPal(X) (45)
mark(U81(X)) a__U81(mark(X)) (46)
mark(isQid(X)) a__isQid(X) (47)
mark(isNePal(X)) a__isNePal(X) (48)
mark(nil) nil (49)
mark(tt) tt (50)
mark(a) a (51)
mark(e) e (52)
mark(i) i (53)
mark(o) o (54)
mark(u) u (55)
a____(X1,X2) __(X1,X2) (56)
a__U11(X) U11(X) (57)
a__U21(X1,X2) U21(X1,X2) (58)
a__U22(X) U22(X) (59)
a__isList(X) isList(X) (60)
a__U31(X) U31(X) (61)
a__U41(X1,X2) U41(X1,X2) (62)
a__U42(X) U42(X) (63)
a__isNeList(X) isNeList(X) (64)
a__U51(X1,X2) U51(X1,X2) (65)
a__U52(X) U52(X) (66)
a__U61(X) U61(X) (67)
a__U71(X1,X2) U71(X1,X2) (68)
a__U72(X) U72(X) (69)
a__isPal(X) isPal(X) (70)
a__U81(X) U81(X) (71)
a__isQid(X) isQid(X) (72)
a__isNePal(X) isNePal(X) (73)

1.1.1 R is empty

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