Certification Problem
Input (TPDB TRS_Standard/Zantema_05/z07)
The rewrite relation of the following TRS is considered.
f(a,x) |
→ |
f(b,f(c,x)) |
(1) |
f(a,f(b,x)) |
→ |
f(b,f(a,x)) |
(2) |
f(d,f(c,x)) |
→ |
f(d,f(a,x)) |
(3) |
f(a,f(c,x)) |
→ |
f(c,f(a,x)) |
(4) |
Property / Task
Prove or disprove termination.Answer / Result
Yes.Proof (by AProVE @ termCOMP 2023)
1 Uncurrying
We uncurry the binary symbol
f
in combination with the following symbol map which also determines the applicative arities of these symbols.
a |
is mapped to |
a, |
a1(x1) |
b |
is mapped to |
b, |
b1(x1) |
c |
is mapped to |
c, |
c1(x1) |
d |
is mapped to |
d, |
d1(x1) |
There are no uncurry rules.
No rules have to be added for the eta-expansion.
Uncurrying the rules and adding the uncurrying rules yields the new set of rules
a1(x) |
→ |
b1(c1(x)) |
(9) |
a1(b1(x)) |
→ |
b1(a1(x)) |
(10) |
d1(c1(x)) |
→ |
d1(a1(x)) |
(11) |
a1(c1(x)) |
→ |
c1(a1(x)) |
(12) |
f(a,y1) |
→ |
a1(y1) |
(5) |
f(b,y1) |
→ |
b1(y1) |
(6) |
f(c,y1) |
→ |
c1(y1) |
(7) |
f(d,y1) |
→ |
d1(y1) |
(8) |
1.1 Rule Removal
Using the
prec(d1) |
= |
0 |
|
stat(d1) |
= |
mul
|
prec(f) |
= |
1 |
|
stat(f) |
= |
mul
|
prec(a) |
= |
2 |
|
stat(a) |
= |
mul
|
prec(b) |
= |
3 |
|
stat(b) |
= |
mul
|
prec(c) |
= |
4 |
|
stat(c) |
= |
mul
|
prec(d) |
= |
5 |
|
stat(d) |
= |
mul
|
π(a1) |
= |
1 |
π(b1) |
= |
1 |
π(c1) |
= |
1 |
π(d1) |
= |
[1] |
π(f) |
= |
[1,2] |
π(a) |
= |
[] |
π(b) |
= |
[] |
π(c) |
= |
[] |
π(d) |
= |
[] |
all of the following rules can be deleted.
f(a,y1) |
→ |
a1(y1) |
(5) |
f(b,y1) |
→ |
b1(y1) |
(6) |
f(c,y1) |
→ |
c1(y1) |
(7) |
f(d,y1) |
→ |
d1(y1) |
(8) |
1.1.1 Dependency Pair Transformation
The following set of initial dependency pairs has been identified.
a1#(b1(x)) |
→ |
a1#(x) |
(13) |
d1#(c1(x)) |
→ |
d1#(a1(x)) |
(14) |
d1#(c1(x)) |
→ |
a1#(x) |
(15) |
a1#(c1(x)) |
→ |
a1#(x) |
(16) |
1.1.1.1 Dependency Graph Processor
The dependency pairs are split into 2
components.
-
The
1st
component contains the
pair
d1#(c1(x)) |
→ |
d1#(a1(x)) |
(14) |
1.1.1.1.1 Monotonic Reduction Pair Processor with Usable Rules
Using the linear polynomial interpretation over the naturals
[a1(x1)] |
= |
1 · x1
|
[b1(x1)] |
= |
1 · x1
|
[c1(x1)] |
= |
1 · x1
|
[d1#(x1)] |
= |
1 · x1
|
together with the usable
rules
a1(x) |
→ |
b1(c1(x)) |
(9) |
a1(b1(x)) |
→ |
b1(a1(x)) |
(10) |
a1(c1(x)) |
→ |
c1(a1(x)) |
(12) |
(w.r.t. the implicit argument filter of the reduction pair),
the
rule
could be deleted.
1.1.1.1.1.1 Reduction Pair Processor
Using the
prec(d1#) |
= |
1 |
|
stat(d1#) |
= |
lex
|
prec(c1) |
= |
1 |
|
stat(c1) |
= |
lex
|
prec(b1) |
= |
0 |
|
stat(b1) |
= |
lex
|
π(d1#) |
= |
[1] |
π(c1) |
= |
[1] |
π(a1) |
= |
1 |
π(b1) |
= |
[] |
the
pair
d1#(c1(x)) |
→ |
d1#(a1(x)) |
(14) |
could be deleted.
1.1.1.1.1.1.1 P is empty
There are no pairs anymore.
-
The
2nd
component contains the
pair
a1#(c1(x)) |
→ |
a1#(x) |
(16) |
a1#(b1(x)) |
→ |
a1#(x) |
(13) |
1.1.1.1.2 Monotonic Reduction Pair Processor with Usable Rules
Using the linear polynomial interpretation over the naturals
[c1(x1)] |
= |
1 · x1
|
[b1(x1)] |
= |
1 · x1
|
[a1#(x1)] |
= |
1 · x1
|
having no usable rules (w.r.t. the implicit argument filter of the
reduction pair),
the
rule
could be deleted.
1.1.1.1.2.1 Size-Change Termination
Using size-change termination in combination with
the subterm criterion
one obtains the following initial size-change graphs.
a1#(c1(x)) |
→ |
a1#(x) |
(16) |
|
1 |
> |
1 |
a1#(b1(x)) |
→ |
a1#(x) |
(13) |
|
1 |
> |
1 |
As there is no critical graph in the transitive closure, there are no infinite chains.