Certification Problem

Input (TPDB SRS_Standard/Zantema_04/z082)

The rewrite relation of the following TRS is considered.

a(c(a(x1))) c(a(c(x1))) (1)
a(a(b(x1))) a(d(b(x1))) (2)
a(b(x1)) b(a(a(x1))) (3)
d(d(x1)) a(d(b(x1))) (4)
b(b(x1)) b(c(x1)) (5)
a(d(c(x1))) c(a(x1)) (6)
b(c(x1)) a(a(a(x1))) (7)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by AProVE @ termCOMP 2023)

1 Closure Under Flat Contexts

Using the flat contexts

{a(), c(), b(), d()}

We obtain the transformed TRS
a(a(b(x1))) a(d(b(x1))) (2)
b(b(x1)) b(c(x1)) (5)
a(a(c(a(x1)))) a(c(a(c(x1)))) (8)
c(a(c(a(x1)))) c(c(a(c(x1)))) (9)
b(a(c(a(x1)))) b(c(a(c(x1)))) (10)
d(a(c(a(x1)))) d(c(a(c(x1)))) (11)
a(a(b(x1))) a(b(a(a(x1)))) (12)
c(a(b(x1))) c(b(a(a(x1)))) (13)
b(a(b(x1))) b(b(a(a(x1)))) (14)
d(a(b(x1))) d(b(a(a(x1)))) (15)
a(d(d(x1))) a(a(d(b(x1)))) (16)
c(d(d(x1))) c(a(d(b(x1)))) (17)
b(d(d(x1))) b(a(d(b(x1)))) (18)
d(d(d(x1))) d(a(d(b(x1)))) (19)
a(a(d(c(x1)))) a(c(a(x1))) (20)
c(a(d(c(x1)))) c(c(a(x1))) (21)
b(a(d(c(x1)))) b(c(a(x1))) (22)
d(a(d(c(x1)))) d(c(a(x1))) (23)
a(b(c(x1))) a(a(a(a(x1)))) (24)
c(b(c(x1))) c(a(a(a(x1)))) (25)
b(b(c(x1))) b(a(a(a(x1)))) (26)
d(b(c(x1))) d(a(a(a(x1)))) (27)

1.1 Semantic Labeling

Root-labeling is applied.

We obtain the labeled TRS
aa(ab(ba(x1))) ad(db(ba(x1))) (28)
aa(ab(bb(x1))) ad(db(bb(x1))) (29)
aa(ab(bd(x1))) ad(db(bd(x1))) (30)
aa(ab(bc(x1))) ad(db(bc(x1))) (31)
bb(ba(x1)) bc(ca(x1)) (32)
bb(bb(x1)) bc(cb(x1)) (33)
bb(bd(x1)) bc(cd(x1)) (34)
bb(bc(x1)) bc(cc(x1)) (35)
aa(ac(ca(aa(x1)))) ac(ca(ac(ca(x1)))) (36)
aa(ac(ca(ab(x1)))) ac(ca(ac(cb(x1)))) (37)
aa(ac(ca(ad(x1)))) ac(ca(ac(cd(x1)))) (38)
aa(ac(ca(ac(x1)))) ac(ca(ac(cc(x1)))) (39)
ca(ac(ca(aa(x1)))) cc(ca(ac(ca(x1)))) (40)
ca(ac(ca(ab(x1)))) cc(ca(ac(cb(x1)))) (41)
ca(ac(ca(ad(x1)))) cc(ca(ac(cd(x1)))) (42)
ca(ac(ca(ac(x1)))) cc(ca(ac(cc(x1)))) (43)
ba(ac(ca(aa(x1)))) bc(ca(ac(ca(x1)))) (44)
ba(ac(ca(ab(x1)))) bc(ca(ac(cb(x1)))) (45)
ba(ac(ca(ad(x1)))) bc(ca(ac(cd(x1)))) (46)
ba(ac(ca(ac(x1)))) bc(ca(ac(cc(x1)))) (47)
da(ac(ca(aa(x1)))) dc(ca(ac(ca(x1)))) (48)
da(ac(ca(ab(x1)))) dc(ca(ac(cb(x1)))) (49)
da(ac(ca(ad(x1)))) dc(ca(ac(cd(x1)))) (50)
da(ac(ca(ac(x1)))) dc(ca(ac(cc(x1)))) (51)
aa(ab(ba(x1))) ab(ba(aa(aa(x1)))) (52)
aa(ab(bb(x1))) ab(ba(aa(ab(x1)))) (53)
aa(ab(bd(x1))) ab(ba(aa(ad(x1)))) (54)
aa(ab(bc(x1))) ab(ba(aa(ac(x1)))) (55)
ca(ab(ba(x1))) cb(ba(aa(aa(x1)))) (56)
ca(ab(bb(x1))) cb(ba(aa(ab(x1)))) (57)
ca(ab(bd(x1))) cb(ba(aa(ad(x1)))) (58)
ca(ab(bc(x1))) cb(ba(aa(ac(x1)))) (59)
ba(ab(ba(x1))) bb(ba(aa(aa(x1)))) (60)
ba(ab(bb(x1))) bb(ba(aa(ab(x1)))) (61)
ba(ab(bd(x1))) bb(ba(aa(ad(x1)))) (62)
ba(ab(bc(x1))) bb(ba(aa(ac(x1)))) (63)
da(ab(ba(x1))) db(ba(aa(aa(x1)))) (64)
da(ab(bb(x1))) db(ba(aa(ab(x1)))) (65)
da(ab(bd(x1))) db(ba(aa(ad(x1)))) (66)
da(ab(bc(x1))) db(ba(aa(ac(x1)))) (67)
ad(dd(da(x1))) aa(ad(db(ba(x1)))) (68)
ad(dd(db(x1))) aa(ad(db(bb(x1)))) (69)
ad(dd(dd(x1))) aa(ad(db(bd(x1)))) (70)
ad(dd(dc(x1))) aa(ad(db(bc(x1)))) (71)
cd(dd(da(x1))) ca(ad(db(ba(x1)))) (72)
cd(dd(db(x1))) ca(ad(db(bb(x1)))) (73)
cd(dd(dd(x1))) ca(ad(db(bd(x1)))) (74)
cd(dd(dc(x1))) ca(ad(db(bc(x1)))) (75)
bd(dd(da(x1))) ba(ad(db(ba(x1)))) (76)
bd(dd(db(x1))) ba(ad(db(bb(x1)))) (77)
bd(dd(dd(x1))) ba(ad(db(bd(x1)))) (78)
bd(dd(dc(x1))) ba(ad(db(bc(x1)))) (79)
dd(dd(da(x1))) da(ad(db(ba(x1)))) (80)
dd(dd(db(x1))) da(ad(db(bb(x1)))) (81)
dd(dd(dd(x1))) da(ad(db(bd(x1)))) (82)
dd(dd(dc(x1))) da(ad(db(bc(x1)))) (83)
aa(ad(dc(ca(x1)))) ac(ca(aa(x1))) (84)
aa(ad(dc(cb(x1)))) ac(ca(ab(x1))) (85)
aa(ad(dc(cd(x1)))) ac(ca(ad(x1))) (86)
aa(ad(dc(cc(x1)))) ac(ca(ac(x1))) (87)
ca(ad(dc(ca(x1)))) cc(ca(aa(x1))) (88)
ca(ad(dc(cb(x1)))) cc(ca(ab(x1))) (89)
ca(ad(dc(cd(x1)))) cc(ca(ad(x1))) (90)
ca(ad(dc(cc(x1)))) cc(ca(ac(x1))) (91)
ba(ad(dc(ca(x1)))) bc(ca(aa(x1))) (92)
ba(ad(dc(cb(x1)))) bc(ca(ab(x1))) (93)
ba(ad(dc(cd(x1)))) bc(ca(ad(x1))) (94)
ba(ad(dc(cc(x1)))) bc(ca(ac(x1))) (95)
da(ad(dc(ca(x1)))) dc(ca(aa(x1))) (96)
da(ad(dc(cb(x1)))) dc(ca(ab(x1))) (97)
da(ad(dc(cd(x1)))) dc(ca(ad(x1))) (98)
da(ad(dc(cc(x1)))) dc(ca(ac(x1))) (99)
ab(bc(ca(x1))) aa(aa(aa(aa(x1)))) (100)
ab(bc(cb(x1))) aa(aa(aa(ab(x1)))) (101)
ab(bc(cd(x1))) aa(aa(aa(ad(x1)))) (102)
ab(bc(cc(x1))) aa(aa(aa(ac(x1)))) (103)
cb(bc(ca(x1))) ca(aa(aa(aa(x1)))) (104)
cb(bc(cb(x1))) ca(aa(aa(ab(x1)))) (105)
cb(bc(cd(x1))) ca(aa(aa(ad(x1)))) (106)
cb(bc(cc(x1))) ca(aa(aa(ac(x1)))) (107)
bb(bc(ca(x1))) ba(aa(aa(aa(x1)))) (108)
bb(bc(cb(x1))) ba(aa(aa(ab(x1)))) (109)
bb(bc(cd(x1))) ba(aa(aa(ad(x1)))) (110)
bb(bc(cc(x1))) ba(aa(aa(ac(x1)))) (111)
db(bc(ca(x1))) da(aa(aa(aa(x1)))) (112)
db(bc(cb(x1))) da(aa(aa(ab(x1)))) (113)
db(bc(cd(x1))) da(aa(aa(ad(x1)))) (114)
db(bc(cc(x1))) da(aa(aa(ac(x1)))) (115)

1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[aa(x1)] = 1 · x1
[ab(x1)] = 1 · x1 + 3
[ba(x1)] = 1 · x1
[ad(x1)] = 1 · x1
[db(x1)] = 1 · x1 + 3
[bb(x1)] = 1 · x1 + 3
[bd(x1)] = 1 · x1 + 1
[bc(x1)] = 1 · x1
[ca(x1)] = 1 · x1
[cb(x1)] = 1 · x1 + 3
[cd(x1)] = 1 · x1
[cc(x1)] = 1 · x1
[ac(x1)] = 1 · x1
[da(x1)] = 1 · x1 + 2
[dc(x1)] = 1 · x1 + 1
[dd(x1)] = 1 · x1 + 4
all of the following rules can be deleted.
bb(ba(x1)) bc(ca(x1)) (32)
bb(bb(x1)) bc(cb(x1)) (33)
bb(bd(x1)) bc(cd(x1)) (34)
bb(bc(x1)) bc(cc(x1)) (35)
da(ac(ca(aa(x1)))) dc(ca(ac(ca(x1)))) (48)
da(ac(ca(ab(x1)))) dc(ca(ac(cb(x1)))) (49)
da(ac(ca(ad(x1)))) dc(ca(ac(cd(x1)))) (50)
da(ac(ca(ac(x1)))) dc(ca(ac(cc(x1)))) (51)
aa(ab(bd(x1))) ab(ba(aa(ad(x1)))) (54)
ca(ab(bd(x1))) cb(ba(aa(ad(x1)))) (58)
ba(ab(bd(x1))) bb(ba(aa(ad(x1)))) (62)
da(ab(ba(x1))) db(ba(aa(aa(x1)))) (64)
da(ab(bb(x1))) db(ba(aa(ab(x1)))) (65)
da(ab(bd(x1))) db(ba(aa(ad(x1)))) (66)
da(ab(bc(x1))) db(ba(aa(ac(x1)))) (67)
ad(dd(da(x1))) aa(ad(db(ba(x1)))) (68)
ad(dd(db(x1))) aa(ad(db(bb(x1)))) (69)
ad(dd(dd(x1))) aa(ad(db(bd(x1)))) (70)
ad(dd(dc(x1))) aa(ad(db(bc(x1)))) (71)
cd(dd(da(x1))) ca(ad(db(ba(x1)))) (72)
cd(dd(db(x1))) ca(ad(db(bb(x1)))) (73)
cd(dd(dd(x1))) ca(ad(db(bd(x1)))) (74)
cd(dd(dc(x1))) ca(ad(db(bc(x1)))) (75)
bd(dd(da(x1))) ba(ad(db(ba(x1)))) (76)
bd(dd(db(x1))) ba(ad(db(bb(x1)))) (77)
bd(dd(dd(x1))) ba(ad(db(bd(x1)))) (78)
bd(dd(dc(x1))) ba(ad(db(bc(x1)))) (79)
dd(dd(da(x1))) da(ad(db(ba(x1)))) (80)
dd(dd(db(x1))) da(ad(db(bb(x1)))) (81)
dd(dd(dd(x1))) da(ad(db(bd(x1)))) (82)
dd(dd(dc(x1))) da(ad(db(bc(x1)))) (83)
aa(ad(dc(ca(x1)))) ac(ca(aa(x1))) (84)
aa(ad(dc(cb(x1)))) ac(ca(ab(x1))) (85)
aa(ad(dc(cd(x1)))) ac(ca(ad(x1))) (86)
aa(ad(dc(cc(x1)))) ac(ca(ac(x1))) (87)
ca(ad(dc(ca(x1)))) cc(ca(aa(x1))) (88)
ca(ad(dc(cb(x1)))) cc(ca(ab(x1))) (89)
ca(ad(dc(cd(x1)))) cc(ca(ad(x1))) (90)
ca(ad(dc(cc(x1)))) cc(ca(ac(x1))) (91)
ba(ad(dc(ca(x1)))) bc(ca(aa(x1))) (92)
ba(ad(dc(cb(x1)))) bc(ca(ab(x1))) (93)
ba(ad(dc(cd(x1)))) bc(ca(ad(x1))) (94)
ba(ad(dc(cc(x1)))) bc(ca(ac(x1))) (95)
da(ad(dc(ca(x1)))) dc(ca(aa(x1))) (96)
da(ad(dc(cb(x1)))) dc(ca(ab(x1))) (97)
da(ad(dc(cd(x1)))) dc(ca(ad(x1))) (98)
da(ad(dc(cc(x1)))) dc(ca(ac(x1))) (99)
ab(bc(ca(x1))) aa(aa(aa(aa(x1)))) (100)
ab(bc(cb(x1))) aa(aa(aa(ab(x1)))) (101)
ab(bc(cd(x1))) aa(aa(aa(ad(x1)))) (102)
ab(bc(cc(x1))) aa(aa(aa(ac(x1)))) (103)
cb(bc(ca(x1))) ca(aa(aa(aa(x1)))) (104)
cb(bc(cb(x1))) ca(aa(aa(ab(x1)))) (105)
cb(bc(cd(x1))) ca(aa(aa(ad(x1)))) (106)
cb(bc(cc(x1))) ca(aa(aa(ac(x1)))) (107)
bb(bc(ca(x1))) ba(aa(aa(aa(x1)))) (108)
bb(bc(cb(x1))) ba(aa(aa(ab(x1)))) (109)
bb(bc(cd(x1))) ba(aa(aa(ad(x1)))) (110)
bb(bc(cc(x1))) ba(aa(aa(ac(x1)))) (111)
db(bc(ca(x1))) da(aa(aa(aa(x1)))) (112)
db(bc(cb(x1))) da(aa(aa(ab(x1)))) (113)
db(bc(cd(x1))) da(aa(aa(ad(x1)))) (114)
db(bc(cc(x1))) da(aa(aa(ac(x1)))) (115)

1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[aa(x1)] = 1 · x1
[ab(x1)] = 1 · x1 + 1
[ba(x1)] = 1 · x1
[ad(x1)] = 1 · x1 + 1
[db(x1)] = 1 · x1
[bb(x1)] = 1 · x1 + 1
[bd(x1)] = 1 · x1
[bc(x1)] = 1 · x1
[ac(x1)] = 1 · x1
[ca(x1)] = 1 · x1
[cb(x1)] = 1 · x1
[cd(x1)] = 1 · x1
[cc(x1)] = 1 · x1
all of the following rules can be deleted.
aa(ac(ca(ab(x1)))) ac(ca(ac(cb(x1)))) (37)
aa(ac(ca(ad(x1)))) ac(ca(ac(cd(x1)))) (38)
ca(ac(ca(ab(x1)))) cc(ca(ac(cb(x1)))) (41)
ca(ac(ca(ad(x1)))) cc(ca(ac(cd(x1)))) (42)
ba(ac(ca(ab(x1)))) bc(ca(ac(cb(x1)))) (45)
ba(ac(ca(ad(x1)))) bc(ca(ac(cd(x1)))) (46)
ca(ab(ba(x1))) cb(ba(aa(aa(x1)))) (56)
ca(ab(bb(x1))) cb(ba(aa(ab(x1)))) (57)
ca(ab(bc(x1))) cb(ba(aa(ac(x1)))) (59)

1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[aa(x1)] = 1 · x1
[ab(x1)] = 1 · x1 + 1
[ba(x1)] = 1 · x1
[ad(x1)] = 1 · x1
[db(x1)] = 1 · x1
[bb(x1)] = 1 · x1 + 1
[bd(x1)] = 1 · x1
[bc(x1)] = 1 · x1
[ac(x1)] = 1 · x1
[ca(x1)] = 1 · x1
[cc(x1)] = 1 · x1
all of the following rules can be deleted.
aa(ab(ba(x1))) ad(db(ba(x1))) (28)
aa(ab(bb(x1))) ad(db(bb(x1))) (29)
aa(ab(bd(x1))) ad(db(bd(x1))) (30)
aa(ab(bc(x1))) ad(db(bc(x1))) (31)

1.1.1.1.1.1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
aa#(ac(ca(aa(x1)))) ca#(ac(ca(x1))) (116)
aa#(ac(ca(aa(x1)))) ca#(x1) (117)
aa#(ac(ca(ac(x1)))) ca#(ac(cc(x1))) (118)
ca#(ac(ca(aa(x1)))) ca#(ac(ca(x1))) (119)
ca#(ac(ca(aa(x1)))) ca#(x1) (120)
ca#(ac(ca(ac(x1)))) ca#(ac(cc(x1))) (121)
ba#(ac(ca(aa(x1)))) ca#(ac(ca(x1))) (122)
ba#(ac(ca(aa(x1)))) ca#(x1) (123)
ba#(ac(ca(ac(x1)))) ca#(ac(cc(x1))) (124)
aa#(ab(ba(x1))) ba#(aa(aa(x1))) (125)
aa#(ab(ba(x1))) aa#(aa(x1)) (126)
aa#(ab(ba(x1))) aa#(x1) (127)
aa#(ab(bb(x1))) ba#(aa(ab(x1))) (128)
aa#(ab(bb(x1))) aa#(ab(x1)) (129)
aa#(ab(bc(x1))) ba#(aa(ac(x1))) (130)
aa#(ab(bc(x1))) aa#(ac(x1)) (131)
ba#(ab(ba(x1))) ba#(aa(aa(x1))) (132)
ba#(ab(ba(x1))) aa#(aa(x1)) (133)
ba#(ab(ba(x1))) aa#(x1) (134)
ba#(ab(bb(x1))) ba#(aa(ab(x1))) (135)
ba#(ab(bb(x1))) aa#(ab(x1)) (136)
ba#(ab(bc(x1))) ba#(aa(ac(x1))) (137)
ba#(ab(bc(x1))) aa#(ac(x1)) (138)

1.1.1.1.1.1.1 Dependency Graph Processor

The dependency pairs are split into 2 components.