Certification Problem
Input (TPDB TRS_Standard/SK90/4.24)
The rewrite relation of the following TRS is considered.
rev(nil) |
→ |
nil |
(1) |
rev(++(x,y)) |
→ |
++(rev1(x,y),rev2(x,y)) |
(2) |
rev1(x,nil) |
→ |
x |
(3) |
rev1(x,++(y,z)) |
→ |
rev1(y,z) |
(4) |
rev2(x,nil) |
→ |
nil |
(5) |
rev2(x,++(y,z)) |
→ |
rev(++(x,rev(rev2(y,z)))) |
(6) |
Property / Task
Prove or disprove termination.Answer / Result
Yes.Proof (by ttt2 @ termCOMP 2023)
1 Dependency Pair Transformation
The following set of initial dependency pairs has been identified.
rev#(++(x,y)) |
→ |
rev2#(x,y) |
(7) |
rev#(++(x,y)) |
→ |
rev1#(x,y) |
(8) |
rev1#(x,++(y,z)) |
→ |
rev1#(y,z) |
(9) |
rev2#(x,++(y,z)) |
→ |
rev2#(y,z) |
(10) |
rev2#(x,++(y,z)) |
→ |
rev#(rev2(y,z)) |
(11) |
rev2#(x,++(y,z)) |
→ |
rev#(++(x,rev(rev2(y,z)))) |
(12) |
1.1 Dependency Graph Processor
The dependency pairs are split into 2
components.
-
The
1st
component contains the
pair
rev2#(x,++(y,z)) |
→ |
rev2#(y,z) |
(10) |
rev2#(x,++(y,z)) |
→ |
rev#(rev2(y,z)) |
(11) |
rev#(++(x,y)) |
→ |
rev2#(x,y) |
(7) |
rev2#(x,++(y,z)) |
→ |
rev#(++(x,rev(rev2(y,z)))) |
(12) |
1.1.1 Subterm Criterion Processor
We use the projection to multisets
π(rev2#)
|
= |
{
2, 2
}
|
π(rev#)
|
= |
{
1, 1
}
|
π(rev2)
|
= |
{
2
}
|
π(++)
|
= |
{
2, 2
}
|
π(rev)
|
= |
{
1
}
|
to remove the pairs:
rev2#(x,++(y,z)) |
→ |
rev2#(y,z) |
(10) |
rev2#(x,++(y,z)) |
→ |
rev#(rev2(y,z)) |
(11) |
rev#(++(x,y)) |
→ |
rev2#(x,y) |
(7) |
1.1.1.1 Dependency Graph Processor
The dependency pairs are split into 0
components.
-
The
2nd
component contains the
pair
rev1#(x,++(y,z)) |
→ |
rev1#(y,z) |
(9) |
1.1.2 Size-Change Termination
Using size-change termination in combination with
the subterm criterion
one obtains the following initial size-change graphs.
rev1#(x,++(y,z)) |
→ |
rev1#(y,z) |
(9) |
|
2 |
> |
2 |
2 |
> |
1 |
As there is no critical graph in the transitive closure, there are no infinite chains.