Certification Problem
Input (TPDB TRS_Standard/Transformed_CSR_04/PALINDROME_nosorts_noand_C)
The rewrite relation of the following TRS is considered.
active(__(__(X,Y),Z)) |
→ |
mark(__(X,__(Y,Z))) |
(1) |
active(__(X,nil)) |
→ |
mark(X) |
(2) |
active(__(nil,X)) |
→ |
mark(X) |
(3) |
active(U11(tt)) |
→ |
mark(U12(tt)) |
(4) |
active(U12(tt)) |
→ |
mark(tt) |
(5) |
active(isNePal(__(I,__(P,I)))) |
→ |
mark(U11(tt)) |
(6) |
active(__(X1,X2)) |
→ |
__(active(X1),X2) |
(7) |
active(__(X1,X2)) |
→ |
__(X1,active(X2)) |
(8) |
active(U11(X)) |
→ |
U11(active(X)) |
(9) |
active(U12(X)) |
→ |
U12(active(X)) |
(10) |
active(isNePal(X)) |
→ |
isNePal(active(X)) |
(11) |
__(mark(X1),X2) |
→ |
mark(__(X1,X2)) |
(12) |
__(X1,mark(X2)) |
→ |
mark(__(X1,X2)) |
(13) |
U11(mark(X)) |
→ |
mark(U11(X)) |
(14) |
U12(mark(X)) |
→ |
mark(U12(X)) |
(15) |
isNePal(mark(X)) |
→ |
mark(isNePal(X)) |
(16) |
proper(__(X1,X2)) |
→ |
__(proper(X1),proper(X2)) |
(17) |
proper(nil) |
→ |
ok(nil) |
(18) |
proper(U11(X)) |
→ |
U11(proper(X)) |
(19) |
proper(tt) |
→ |
ok(tt) |
(20) |
proper(U12(X)) |
→ |
U12(proper(X)) |
(21) |
proper(isNePal(X)) |
→ |
isNePal(proper(X)) |
(22) |
__(ok(X1),ok(X2)) |
→ |
ok(__(X1,X2)) |
(23) |
U11(ok(X)) |
→ |
ok(U11(X)) |
(24) |
U12(ok(X)) |
→ |
ok(U12(X)) |
(25) |
isNePal(ok(X)) |
→ |
ok(isNePal(X)) |
(26) |
top(mark(X)) |
→ |
top(proper(X)) |
(27) |
top(ok(X)) |
→ |
top(active(X)) |
(28) |
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)] |
= |
2 · x1 + 1 · x2
|
[mark(x1)] |
= |
1 · x1
|
[nil] |
= |
2 |
[U11(x1)] |
= |
2 · x1
|
[tt] |
= |
0 |
[U12(x1)] |
= |
2 · x1
|
[isNePal(x1)] |
= |
2 · x1
|
[proper(x1)] |
= |
1 · x1
|
[ok(x1)] |
= |
1 · x1
|
[top(x1)] |
= |
1 · x1
|
all of the following rules can be deleted.
active(__(X,nil)) |
→ |
mark(X) |
(2) |
active(__(nil,X)) |
→ |
mark(X) |
(3) |
1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[active(x1)] |
= |
1 · x1
|
[__(x1, x2)] |
= |
2 · x1 + 1 · x2
|
[mark(x1)] |
= |
1 · x1
|
[U11(x1)] |
= |
2 · x1
|
[tt] |
= |
0 |
[U12(x1)] |
= |
2 · x1
|
[isNePal(x1)] |
= |
1 + 2 · x1
|
[proper(x1)] |
= |
1 · x1
|
[nil] |
= |
0 |
[ok(x1)] |
= |
1 · x1
|
[top(x1)] |
= |
1 · x1
|
all of the following rules can be deleted.
active(isNePal(__(I,__(P,I)))) |
→ |
mark(U11(tt)) |
(6) |
1.1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[active(x1)] |
= |
1 · x1
|
[__(x1, x2)] |
= |
2 · x1 + 1 · x2
|
[mark(x1)] |
= |
1 · x1
|
[U11(x1)] |
= |
1 + 2 · x1
|
[tt] |
= |
0 |
[U12(x1)] |
= |
2 · x1
|
[isNePal(x1)] |
= |
2 · x1
|
[proper(x1)] |
= |
1 · x1
|
[nil] |
= |
0 |
[ok(x1)] |
= |
1 · x1
|
[top(x1)] |
= |
2 · x1
|
all of the following rules can be deleted.
active(U11(tt)) |
→ |
mark(U12(tt)) |
(4) |
1.1.1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[active(x1)] |
= |
1 · x1
|
[__(x1, x2)] |
= |
2 · x1 + 1 · x2
|
[mark(x1)] |
= |
1 · x1
|
[U12(x1)] |
= |
2 · x1
|
[tt] |
= |
2 |
[U11(x1)] |
= |
2 · x1
|
[isNePal(x1)] |
= |
1 · x1
|
[proper(x1)] |
= |
1 · x1
|
[nil] |
= |
0 |
[ok(x1)] |
= |
1 · x1
|
[top(x1)] |
= |
1 · x1
|
all of the following rules can be deleted.
active(U12(tt)) |
→ |
mark(tt) |
(5) |
1.1.1.1.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
|
[U11(x1)] |
= |
1 · x1
|
[U12(x1)] |
= |
1 · x1
|
[isNePal(x1)] |
= |
1 · x1
|
[proper(x1)] |
= |
1 · x1
|
[nil] |
= |
0 |
[ok(x1)] |
= |
1 · x1
|
[tt] |
= |
0 |
[top(x1)] |
= |
2 · x1
|
all of the following rules can be deleted.
active(__(__(X,Y),Z)) |
→ |
mark(__(X,__(Y,Z))) |
(1) |
1.1.1.1.1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[active(x1)] |
= |
1 · x1
|
[__(x1, x2)] |
= |
2 · x1 + 2 · x2
|
[U11(x1)] |
= |
2 · x1
|
[U12(x1)] |
= |
1 · x1
|
[isNePal(x1)] |
= |
2 · x1
|
[mark(x1)] |
= |
1 + 1 · x1
|
[proper(x1)] |
= |
1 · x1
|
[nil] |
= |
0 |
[ok(x1)] |
= |
1 · x1
|
[tt] |
= |
0 |
[top(x1)] |
= |
1 · x1
|
all of the following rules can be deleted.
__(mark(X1),X2) |
→ |
mark(__(X1,X2)) |
(12) |
__(X1,mark(X2)) |
→ |
mark(__(X1,X2)) |
(13) |
U11(mark(X)) |
→ |
mark(U11(X)) |
(14) |
isNePal(mark(X)) |
→ |
mark(isNePal(X)) |
(16) |
top(mark(X)) |
→ |
top(proper(X)) |
(27) |
1.1.1.1.1.1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[active(x1)] |
= |
1 + 2 · x1
|
[__(x1, x2)] |
= |
2 + 1 · x1 + 1 · x2
|
[U11(x1)] |
= |
1 · x1
|
[U12(x1)] |
= |
1 · x1
|
[isNePal(x1)] |
= |
1 · x1
|
[mark(x1)] |
= |
2 · x1
|
[proper(x1)] |
= |
2 + 2 · x1
|
[nil] |
= |
0 |
[ok(x1)] |
= |
2 + 2 · x1
|
[tt] |
= |
0 |
[top(x1)] |
= |
1 · x1
|
all of the following rules can be deleted.
active(__(X1,X2)) |
→ |
__(active(X1),X2) |
(7) |
active(__(X1,X2)) |
→ |
__(X1,active(X2)) |
(8) |
top(ok(X)) |
→ |
top(active(X)) |
(28) |
1.1.1.1.1.1.1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[active(x1)] |
= |
1 + 2 · x1
|
[U11(x1)] |
= |
2 + 2 · x1
|
[U12(x1)] |
= |
1 + 1 · x1
|
[isNePal(x1)] |
= |
2 + 2 · x1
|
[mark(x1)] |
= |
1 · x1
|
[proper(x1)] |
= |
2 · x1
|
[__(x1, x2)] |
= |
1 + 1 · x1 + 2 · x2
|
[nil] |
= |
2 |
[ok(x1)] |
= |
1 + 1 · x1
|
[tt] |
= |
2 |
all of the following rules can be deleted.
active(U11(X)) |
→ |
U11(active(X)) |
(9) |
active(U12(X)) |
→ |
U12(active(X)) |
(10) |
active(isNePal(X)) |
→ |
isNePal(active(X)) |
(11) |
proper(__(X1,X2)) |
→ |
__(proper(X1),proper(X2)) |
(17) |
proper(nil) |
→ |
ok(nil) |
(18) |
proper(U11(X)) |
→ |
U11(proper(X)) |
(19) |
proper(tt) |
→ |
ok(tt) |
(20) |
proper(U12(X)) |
→ |
U12(proper(X)) |
(21) |
proper(isNePal(X)) |
→ |
isNePal(proper(X)) |
(22) |
__(ok(X1),ok(X2)) |
→ |
ok(__(X1,X2)) |
(23) |
U11(ok(X)) |
→ |
ok(U11(X)) |
(24) |
isNePal(ok(X)) |
→ |
ok(isNePal(X)) |
(26) |
1.1.1.1.1.1.1.1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[U12(x1)] |
= |
2 + 2 · x1
|
[mark(x1)] |
= |
2 + 1 · x1
|
[ok(x1)] |
= |
2 + 1 · x1
|
all of the following rules can be deleted.
U12(mark(X)) |
→ |
mark(U12(X)) |
(15) |
U12(ok(X)) |
→ |
ok(U12(X)) |
(25) |
1.1.1.1.1.1.1.1.1.1 R is empty
There are no rules in the TRS. Hence, it is terminating.