Certification Problem

Input (TPDB TRS_Standard/SK90/4.26)

The rewrite relation of the following TRS is considered.

rev(nil) nil (1)
rev(rev(x)) x (2)
rev(++(x,y)) ++(rev(y),rev(x)) (3)
++(nil,y) y (4)
++(x,nil) x (5)
++(.(x,y),z) .(x,++(y,z)) (6)
++(x,++(y,z)) ++(++(x,y),z) (7)
make(x) .(x,nil) (8)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by ttt2 @ termCOMP 2023)

1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[make(x1)] =
1 1 0
0 0 0
0 0 0
· x1 +
1 0 0
0 0 0
1 0 0
[rev(x1)] =
1 0 0
0 0 1
0 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[.(x1, x2)] =
1 0 0
0 0 0
0 0 0
· x1 +
1 0 0
0 0 0
0 0 0
· x2 +
0 0 0
0 0 0
1 0 0
[nil] =
1 0 0
0 0 0
0 0 0
[++(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
1 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
++(nil,y) y (4)
++(x,nil) x (5)

1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[make(x1)] =
1 0 1
0 0 1
0 0 1
· x1 +
0 0 0
0 0 0
0 0 0
[rev(x1)] =
1 1 0
1 1 0
0 0 1
· x1 +
0 0 0
0 0 0
0 0 0
[.(x1, x2)] =
1 0 1
0 0 1
0 0 0
· x1 +
1 0 0
0 0 1
0 0 0
· x2 +
0 0 0
0 0 0
0 0 0
[nil] =
0 0 0
1 0 0
0 0 0
[++(x1, x2)] =
1 0 0
0 1 0
0 0 0
· x1 +
1 0 0
0 1 0
0 0 0
· x2 +
1 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
rev(nil) nil (1)

1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[make(x1)] =
1 1 0
1 0 1
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[rev(x1)] =
1 1 1
0 1 1
0 0 1
· x1 +
1 0 0
0 0 0
0 0 0
[.(x1, x2)] =
1 1 0
0 0 0
0 0 0
· x1 +
1 0 0
0 0 0
0 0 0
· x2 +
0 0 0
0 0 0
0 0 0
[nil] =
0 0 0
0 0 0
0 0 0
[++(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
0 0 0
0 0 0
1 0 0
all of the following rules can be deleted.
rev(rev(x)) x (2)

1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[make(x1)] = 1 · x1 + 4
[rev(x1)] = 2 · x1 + 0
[.(x1, x2)] = 1 · x1 + 1 · x2 + 2
[nil] = 0
[++(x1, x2)] = 1 · x1 + 1 · x2 + 0
all of the following rules can be deleted.
make(x) .(x,nil) (8)

1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[rev(x1)] =
1 1 1
0 1 0
0 0 1
· x1 +
0 0 0
0 0 0
0 0 0
[.(x1, x2)] =
1 1 0
1 0 0
0 0 0
· x1 +
1 0 0
0 0 0
0 0 0
· x2 +
0 0 0
0 0 0
0 0 0
[++(x1, x2)] =
1 0 0
0 1 1
0 0 0
· x1 +
1 0 0
0 1 1
0 0 0
· x2 +
0 0 0
0 0 0
1 0 0
all of the following rules can be deleted.
rev(++(x,y)) ++(rev(y),rev(x)) (3)

1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[.(x1, x2)] =
1 0 0
0 0 0
0 0 0
· x1 +
1 0 0
0 0 0
0 0 0
· x2 +
1 0 0
0 0 0
0 0 0
[++(x1, x2)] =
1 0 0
0 1 0
0 0 0
· x1 +
1 1 0
0 1 0
0 0 0
· x2 +
0 0 0
1 0 0
0 0 0
all of the following rules can be deleted.
++(x,++(y,z)) ++(++(x,y),z) (7)

1.1.1.1.1.1.1 Rule Removal

Using the Knuth Bendix order with w0 = 1 and the following precedence and weight functions
prec(.) = 0 weight(.) = 0
prec(++) = 1 weight(++) = 0
all of the following rules can be deleted.
++(.(x,y),z) .(x,++(y,z)) (6)

1.1.1.1.1.1.1.1 R is empty

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