Certification Problem
Input (TPDB TRS_Innermost/Transformed_CSR_innermost_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) |
The evaluation strategy is innermost.Property / Task
Prove or disprove termination.Answer / Result
Yes.Proof (by AProVE @ termCOMP 2023)
1 Rule Removal
Using the
Knuth Bendix order with w0 = 1 and the following precedence and weight functions
prec(nil) |
= |
31 |
|
weight(nil) |
= |
1 |
|
|
|
prec(tt) |
= |
42 |
|
weight(tt) |
= |
12 |
|
|
|
prec(a) |
= |
35 |
|
weight(a) |
= |
4 |
|
|
|
prec(e) |
= |
26 |
|
weight(e) |
= |
4 |
|
|
|
prec(i) |
= |
36 |
|
weight(i) |
= |
4 |
|
|
|
prec(o) |
= |
33 |
|
weight(o) |
= |
4 |
|
|
|
prec(u) |
= |
9 |
|
weight(u) |
= |
4 |
|
|
|
prec(mark) |
= |
43 |
|
weight(mark) |
= |
0 |
|
|
|
prec(a__U11) |
= |
29 |
|
weight(a__U11) |
= |
1 |
|
|
|
prec(a__U22) |
= |
14 |
|
weight(a__U22) |
= |
1 |
|
|
|
prec(a__isList) |
= |
1 |
|
weight(a__isList) |
= |
12 |
|
|
|
prec(a__U31) |
= |
32 |
|
weight(a__U31) |
= |
1 |
|
|
|
prec(a__U42) |
= |
23 |
|
weight(a__U42) |
= |
2 |
|
|
|
prec(a__isNeList) |
= |
34 |
|
weight(a__isNeList) |
= |
10 |
|
|
|
prec(a__U52) |
= |
7 |
|
weight(a__U52) |
= |
1 |
|
|
|
prec(a__U61) |
= |
17 |
|
weight(a__U61) |
= |
1 |
|
|
|
prec(a__U72) |
= |
13 |
|
weight(a__U72) |
= |
1 |
|
|
|
prec(a__isPal) |
= |
41 |
|
weight(a__isPal) |
= |
12 |
|
|
|
prec(a__U81) |
= |
39 |
|
weight(a__U81) |
= |
1 |
|
|
|
prec(a__isQid) |
= |
28 |
|
weight(a__isQid) |
= |
9 |
|
|
|
prec(a__isNePal) |
= |
4 |
|
weight(a__isNePal) |
= |
11 |
|
|
|
prec(U11) |
= |
25 |
|
weight(U11) |
= |
1 |
|
|
|
prec(U22) |
= |
12 |
|
weight(U22) |
= |
1 |
|
|
|
prec(isList) |
= |
0 |
|
weight(isList) |
= |
12 |
|
|
|
prec(U31) |
= |
30 |
|
weight(U31) |
= |
1 |
|
|
|
prec(U42) |
= |
22 |
|
weight(U42) |
= |
2 |
|
|
|
prec(isNeList) |
= |
18 |
|
weight(isNeList) |
= |
10 |
|
|
|
prec(U52) |
= |
6 |
|
weight(U52) |
= |
1 |
|
|
|
prec(U61) |
= |
5 |
|
weight(U61) |
= |
1 |
|
|
|
prec(U72) |
= |
11 |
|
weight(U72) |
= |
1 |
|
|
|
prec(isPal) |
= |
10 |
|
weight(isPal) |
= |
12 |
|
|
|
prec(U81) |
= |
37 |
|
weight(U81) |
= |
1 |
|
|
|
prec(isQid) |
= |
21 |
|
weight(isQid) |
= |
9 |
|
|
|
prec(isNePal) |
= |
3 |
|
weight(isNePal) |
= |
11 |
|
|
|
prec(__) |
= |
24 |
|
weight(__) |
= |
3 |
|
|
|
prec(a____) |
= |
27 |
|
weight(a____) |
= |
3 |
|
|
|
prec(a__U21) |
= |
15 |
|
weight(a__U21) |
= |
2 |
|
|
|
prec(a__U41) |
= |
38 |
|
weight(a__U41) |
= |
0 |
|
|
|
prec(a__U51) |
= |
19 |
|
weight(a__U51) |
= |
1 |
|
|
|
prec(a__U71) |
= |
40 |
|
weight(a__U71) |
= |
8 |
|
|
|
prec(U21) |
= |
8 |
|
weight(U21) |
= |
2 |
|
|
|
prec(U41) |
= |
2 |
|
weight(U41) |
= |
0 |
|
|
|
prec(U51) |
= |
16 |
|
weight(U51) |
= |
1 |
|
|
|
prec(U71) |
= |
20 |
|
weight(U71) |
= |
8 |
|
|
|
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__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) |
1.1 R is empty
There are no rules in the TRS. Hence, it is terminating.