Certification Problem
Input (TPDB SRS_Standard/Zantema_04/z013)
The rewrite relation of the following TRS is considered.
g(c(x1)) |
→ |
g(f(c(x1))) |
(1) |
g(f(c(x1))) |
→ |
g(f(f(c(x1)))) |
(2) |
g(g(x1)) |
→ |
g(f(g(x1))) |
(3) |
f(f(g(x1))) |
→ |
g(f(x1)) |
(4) |
Property / Task
Prove or disprove termination.Answer / Result
Yes.Proof (by AProVE @ termCOMP 2023)
1 Closure Under Flat Contexts
Using the flat contexts
{g(☐), c(☐), f(☐)}
We obtain the transformed TRS
g(c(x1)) |
→ |
g(f(c(x1))) |
(1) |
g(f(c(x1))) |
→ |
g(f(f(c(x1)))) |
(2) |
g(g(x1)) |
→ |
g(f(g(x1))) |
(3) |
g(f(f(g(x1)))) |
→ |
g(g(f(x1))) |
(5) |
c(f(f(g(x1)))) |
→ |
c(g(f(x1))) |
(6) |
f(f(f(g(x1)))) |
→ |
f(g(f(x1))) |
(7) |
1.1 Semantic Labeling
Root-labeling is applied.
We obtain the labeled TRS
gc(cg(x1)) |
→ |
gf(fc(cg(x1))) |
(8) |
gc(cc(x1)) |
→ |
gf(fc(cc(x1))) |
(9) |
gc(cf(x1)) |
→ |
gf(fc(cf(x1))) |
(10) |
gf(fc(cg(x1))) |
→ |
gf(ff(fc(cg(x1)))) |
(11) |
gf(fc(cc(x1))) |
→ |
gf(ff(fc(cc(x1)))) |
(12) |
gf(fc(cf(x1))) |
→ |
gf(ff(fc(cf(x1)))) |
(13) |
gg(gg(x1)) |
→ |
gf(fg(gg(x1))) |
(14) |
gg(gc(x1)) |
→ |
gf(fg(gc(x1))) |
(15) |
gg(gf(x1)) |
→ |
gf(fg(gf(x1))) |
(16) |
gf(ff(fg(gg(x1)))) |
→ |
gg(gf(fg(x1))) |
(17) |
gf(ff(fg(gc(x1)))) |
→ |
gg(gf(fc(x1))) |
(18) |
gf(ff(fg(gf(x1)))) |
→ |
gg(gf(ff(x1))) |
(19) |
cf(ff(fg(gg(x1)))) |
→ |
cg(gf(fg(x1))) |
(20) |
cf(ff(fg(gc(x1)))) |
→ |
cg(gf(fc(x1))) |
(21) |
cf(ff(fg(gf(x1)))) |
→ |
cg(gf(ff(x1))) |
(22) |
ff(ff(fg(gg(x1)))) |
→ |
fg(gf(fg(x1))) |
(23) |
ff(ff(fg(gc(x1)))) |
→ |
fg(gf(fc(x1))) |
(24) |
ff(ff(fg(gf(x1)))) |
→ |
fg(gf(ff(x1))) |
(25) |
1.1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[gc(x1)] |
= |
1 · x1 + 1 |
[cg(x1)] |
= |
1 · x1
|
[gf(x1)] |
= |
1 · x1
|
[fc(x1)] |
= |
1 · x1
|
[cc(x1)] |
= |
1 · x1
|
[cf(x1)] |
= |
1 · x1 + 1 |
[ff(x1)] |
= |
1 · x1
|
[gg(x1)] |
= |
1 · x1
|
[fg(x1)] |
= |
1 · x1
|
all of the following rules can be deleted.
gc(cg(x1)) |
→ |
gf(fc(cg(x1))) |
(8) |
gc(cc(x1)) |
→ |
gf(fc(cc(x1))) |
(9) |
gc(cf(x1)) |
→ |
gf(fc(cf(x1))) |
(10) |
gf(ff(fg(gc(x1)))) |
→ |
gg(gf(fc(x1))) |
(18) |
cf(ff(fg(gg(x1)))) |
→ |
cg(gf(fg(x1))) |
(20) |
cf(ff(fg(gc(x1)))) |
→ |
cg(gf(fc(x1))) |
(21) |
cf(ff(fg(gf(x1)))) |
→ |
cg(gf(ff(x1))) |
(22) |
ff(ff(fg(gc(x1)))) |
→ |
fg(gf(fc(x1))) |
(24) |
1.1.1.1 Dependency Pair Transformation
The following set of initial dependency pairs has been identified.
gf#(fc(cg(x1))) |
→ |
gf#(ff(fc(cg(x1)))) |
(26) |
gf#(fc(cg(x1))) |
→ |
ff#(fc(cg(x1))) |
(27) |
gf#(fc(cc(x1))) |
→ |
gf#(ff(fc(cc(x1)))) |
(28) |
gf#(fc(cc(x1))) |
→ |
ff#(fc(cc(x1))) |
(29) |
gf#(fc(cf(x1))) |
→ |
gf#(ff(fc(cf(x1)))) |
(30) |
gf#(fc(cf(x1))) |
→ |
ff#(fc(cf(x1))) |
(31) |
gg#(gg(x1)) |
→ |
gf#(fg(gg(x1))) |
(32) |
gg#(gc(x1)) |
→ |
gf#(fg(gc(x1))) |
(33) |
gg#(gf(x1)) |
→ |
gf#(fg(gf(x1))) |
(34) |
gf#(ff(fg(gg(x1)))) |
→ |
gg#(gf(fg(x1))) |
(35) |
gf#(ff(fg(gg(x1)))) |
→ |
gf#(fg(x1)) |
(36) |
gf#(ff(fg(gf(x1)))) |
→ |
gg#(gf(ff(x1))) |
(37) |
gf#(ff(fg(gf(x1)))) |
→ |
gf#(ff(x1)) |
(38) |
gf#(ff(fg(gf(x1)))) |
→ |
ff#(x1) |
(39) |
ff#(ff(fg(gg(x1)))) |
→ |
gf#(fg(x1)) |
(40) |
ff#(ff(fg(gf(x1)))) |
→ |
gf#(ff(x1)) |
(41) |
ff#(ff(fg(gf(x1)))) |
→ |
ff#(x1) |
(42) |
1.1.1.1.1 Dependency Graph Processor
The dependency pairs are split into 1
component.