Certification Problem
Input (TPDB TRS_Standard/Transformed_CSR_04/Ex14_AEGL02_GM)
The rewrite relation of the following TRS is considered.
a__from(X) |
→ |
cons(mark(X),from(s(X))) |
(1) |
a__length(nil) |
→ |
0 |
(2) |
a__length(cons(X,Y)) |
→ |
s(a__length1(Y)) |
(3) |
a__length1(X) |
→ |
a__length(X) |
(4) |
mark(from(X)) |
→ |
a__from(mark(X)) |
(5) |
mark(length(X)) |
→ |
a__length(X) |
(6) |
mark(length1(X)) |
→ |
a__length1(X) |
(7) |
mark(cons(X1,X2)) |
→ |
cons(mark(X1),X2) |
(8) |
mark(s(X)) |
→ |
s(mark(X)) |
(9) |
mark(nil) |
→ |
nil |
(10) |
mark(0) |
→ |
0 |
(11) |
a__from(X) |
→ |
from(X) |
(12) |
a__length(X) |
→ |
length(X) |
(13) |
a__length1(X) |
→ |
length1(X) |
(14) |
Property / Task
Prove or disprove termination.Answer / Result
Yes.Proof (by ttt2 @ termCOMP 2023)
1 Rule Removal
Using the
Weighted Path Order with the following precedence and status
prec(length1) |
= |
0 |
|
status(length1) |
= |
[1] |
|
list-extension(length1) |
= |
Lex |
prec(length) |
= |
0 |
|
status(length) |
= |
[1] |
|
list-extension(length) |
= |
Lex |
prec(a__length1) |
= |
3 |
|
status(a__length1) |
= |
[1] |
|
list-extension(a__length1) |
= |
Lex |
prec(0) |
= |
0 |
|
status(0) |
= |
[] |
|
list-extension(0) |
= |
Lex |
prec(a__length) |
= |
2 |
|
status(a__length) |
= |
[1] |
|
list-extension(a__length) |
= |
Lex |
prec(nil) |
= |
0 |
|
status(nil) |
= |
[] |
|
list-extension(nil) |
= |
Lex |
prec(cons) |
= |
8 |
|
status(cons) |
= |
[2, 1] |
|
list-extension(cons) |
= |
Lex |
prec(from) |
= |
0 |
|
status(from) |
= |
[1] |
|
list-extension(from) |
= |
Lex |
prec(s) |
= |
0 |
|
status(s) |
= |
[1] |
|
list-extension(s) |
= |
Lex |
prec(mark) |
= |
10 |
|
status(mark) |
= |
[1] |
|
list-extension(mark) |
= |
Lex |
prec(a__from) |
= |
9 |
|
status(a__from) |
= |
[1] |
|
list-extension(a__from) |
= |
Lex |
and the following
Max-polynomial interpretation
[length1(x1)] |
=
|
max(0, 0 + 1 · x1) |
[length(x1)] |
=
|
max(0, 0 + 1 · x1) |
[a__length1(x1)] |
=
|
max(0, 0 + 1 · x1) |
[0] |
=
|
max(0) |
[a__length(x1)] |
=
|
max(0, 0 + 1 · x1) |
[nil] |
=
|
max(0) |
[cons(x1, x2)] |
=
|
max(4, 4 + 1 · x1, 0 + 1 · x2) |
[from(x1)] |
=
|
max(0, 4 + 1 · x1) |
[s(x1)] |
=
|
max(0, 0 + 1 · x1) |
[mark(x1)] |
=
|
max(0, 0 + 1 · x1) |
[a__from(x1)] |
=
|
max(0, 4 + 1 · x1) |
all of the following rules can be deleted.
a__from(X) |
→ |
cons(mark(X),from(s(X))) |
(1) |
a__length(nil) |
→ |
0 |
(2) |
a__length(cons(X,Y)) |
→ |
s(a__length1(Y)) |
(3) |
a__length1(X) |
→ |
a__length(X) |
(4) |
mark(from(X)) |
→ |
a__from(mark(X)) |
(5) |
mark(length(X)) |
→ |
a__length(X) |
(6) |
mark(length1(X)) |
→ |
a__length1(X) |
(7) |
mark(cons(X1,X2)) |
→ |
cons(mark(X1),X2) |
(8) |
mark(s(X)) |
→ |
s(mark(X)) |
(9) |
mark(nil) |
→ |
nil |
(10) |
mark(0) |
→ |
0 |
(11) |
a__from(X) |
→ |
from(X) |
(12) |
a__length(X) |
→ |
length(X) |
(13) |
a__length1(X) |
→ |
length1(X) |
(14) |
1.1 R is empty
There are no rules in the TRS. Hence, it is terminating.