Certification Problem
Input (TPDB TRS_Standard/SK90/2.23)
The rewrite relation of the following TRS is considered.
fac(0) |
→ |
1 |
(1) |
fac(s(x)) |
→ |
*(s(x),fac(x)) |
(2) |
floop(0,y) |
→ |
y |
(3) |
floop(s(x),y) |
→ |
floop(x,*(s(x),y)) |
(4) |
*(x,0) |
→ |
0 |
(5) |
*(x,s(y)) |
→ |
+(*(x,y),x) |
(6) |
+(x,0) |
→ |
x |
(7) |
+(x,s(y)) |
→ |
s(+(x,y)) |
(8) |
1 |
→ |
s(0) |
(9) |
fac(0) |
→ |
s(0) |
(10) |
Property / Task
Prove or disprove termination.Answer / Result
Yes.Proof (by NaTT @ termCOMP 2023)
1 Dependency Pair Transformation
The following set of initial dependency pairs has been identified.
fac#(s(x)) |
→ |
fac#(x) |
(11) |
+#(x,s(y)) |
→ |
+#(x,y) |
(12) |
floop#(s(x),y) |
→ |
floop#(x,*(s(x),y)) |
(13) |
fac#(0) |
→ |
1# |
(14) |
*#(x,s(y)) |
→ |
+#(*(x,y),x) |
(15) |
fac#(s(x)) |
→ |
*#(s(x),fac(x)) |
(16) |
floop#(s(x),y) |
→ |
*#(s(x),y) |
(17) |
*#(x,s(y)) |
→ |
*#(x,y) |
(18) |
1.1 Dependency Graph Processor
The dependency pairs are split into 4
components.
-
The
1st
component contains the
pair
floop#(s(x),y) |
→ |
floop#(x,*(s(x),y)) |
(13) |
1.1.1 Reduction Pair Processor with Usable Rules
Using the Max-polynomial interpretation
[1] |
=
|
0 |
[s(x1)] |
=
|
x1 + 1 |
[fac#(x1)] |
=
|
0 |
[*#(x1, x2)] |
=
|
0 |
[0] |
=
|
17221 |
[fac(x1)] |
=
|
0 |
[floop#(x1, x2)] |
=
|
x1 + 0 |
[floop(x1, x2)] |
=
|
0 |
[+(x1, x2)] |
=
|
x1 + x2 + 2 |
[1#] |
=
|
0 |
[+#(x1, x2)] |
=
|
0 |
[*(x1, x2)] |
=
|
x1 + x2 + 44083 |
having no usable rules (w.r.t. the implicit argument filter of the
reduction pair),
the
pair
floop#(s(x),y) |
→ |
floop#(x,*(s(x),y)) |
(13) |
could be deleted.
1.1.1.1 Dependency Graph Processor
The dependency pairs are split into 0
components.
-
The
2nd
component contains the
pair
fac#(s(x)) |
→ |
fac#(x) |
(11) |
1.1.2 Reduction Pair Processor with Usable Rules
Using the Max-polynomial interpretation
[1] |
=
|
0 |
[s(x1)] |
=
|
x1 + 1 |
[fac#(x1)] |
=
|
x1 + 0 |
[*#(x1, x2)] |
=
|
0 |
[0] |
=
|
33954 |
[fac(x1)] |
=
|
0 |
[floop#(x1, x2)] |
=
|
0 |
[floop(x1, x2)] |
=
|
0 |
[+(x1, x2)] |
=
|
x1 + x2 + 2 |
[1#] |
=
|
0 |
[+#(x1, x2)] |
=
|
0 |
[*(x1, x2)] |
=
|
x1 + x2 + 44083 |
having no usable rules (w.r.t. the implicit argument filter of the
reduction pair),
the
pair
fac#(s(x)) |
→ |
fac#(x) |
(11) |
could be deleted.
1.1.2.1 Dependency Graph Processor
The dependency pairs are split into 0
components.
-
The
3rd
component contains the
pair
*#(x,s(y)) |
→ |
*#(x,y) |
(18) |
1.1.3 Reduction Pair Processor with Usable Rules
Using the Max-polynomial interpretation
[1] |
=
|
0 |
[s(x1)] |
=
|
x1 + 1 |
[fac#(x1)] |
=
|
0 |
[*#(x1, x2)] |
=
|
x2 + 0 |
[0] |
=
|
33954 |
[fac(x1)] |
=
|
0 |
[floop#(x1, x2)] |
=
|
0 |
[floop(x1, x2)] |
=
|
0 |
[+(x1, x2)] |
=
|
x1 + x2 + 2 |
[1#] |
=
|
0 |
[+#(x1, x2)] |
=
|
0 |
[*(x1, x2)] |
=
|
x1 + x2 + 44083 |
having no usable rules (w.r.t. the implicit argument filter of the
reduction pair),
the
pair
*#(x,s(y)) |
→ |
*#(x,y) |
(18) |
could be deleted.
1.1.3.1 Dependency Graph Processor
The dependency pairs are split into 0
components.
-
The
4th
component contains the
pair
+#(x,s(y)) |
→ |
+#(x,y) |
(12) |
1.1.4 Reduction Pair Processor with Usable Rules
Using the Max-polynomial interpretation
[1] |
=
|
0 |
[s(x1)] |
=
|
x1 + 1 |
[fac#(x1)] |
=
|
0 |
[*#(x1, x2)] |
=
|
0 |
[0] |
=
|
33954 |
[fac(x1)] |
=
|
0 |
[floop#(x1, x2)] |
=
|
0 |
[floop(x1, x2)] |
=
|
0 |
[+(x1, x2)] |
=
|
x1 + x2 + 2 |
[1#] |
=
|
0 |
[+#(x1, x2)] |
=
|
x2 + 0 |
[*(x1, x2)] |
=
|
x1 + x2 + 44083 |
having no usable rules (w.r.t. the implicit argument filter of the
reduction pair),
the
pair
+#(x,s(y)) |
→ |
+#(x,y) |
(12) |
could be deleted.
1.1.4.1 Dependency Graph Processor
The dependency pairs are split into 0
components.