Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/ExIntrod_GM01_iGM)

The rewrite relation of the following TRS is considered.

active(incr(nil)) mark(nil) (1)
active(incr(cons(X,L))) mark(cons(s(X),incr(L))) (2)
active(adx(nil)) mark(nil) (3)
active(adx(cons(X,L))) mark(incr(cons(X,adx(L)))) (4)
active(nats) mark(adx(zeros)) (5)
active(zeros) mark(cons(0,zeros)) (6)
active(head(cons(X,L))) mark(X) (7)
active(tail(cons(X,L))) mark(L) (8)
mark(incr(X)) active(incr(mark(X))) (9)
mark(nil) active(nil) (10)
mark(cons(X1,X2)) active(cons(mark(X1),X2)) (11)
mark(s(X)) active(s(mark(X))) (12)
mark(adx(X)) active(adx(mark(X))) (13)
mark(nats) active(nats) (14)
mark(zeros) active(zeros) (15)
mark(0) active(0) (16)
mark(head(X)) active(head(mark(X))) (17)
mark(tail(X)) active(tail(mark(X))) (18)
incr(mark(X)) incr(X) (19)
incr(active(X)) incr(X) (20)
cons(mark(X1),X2) cons(X1,X2) (21)
cons(X1,mark(X2)) cons(X1,X2) (22)
cons(active(X1),X2) cons(X1,X2) (23)
cons(X1,active(X2)) cons(X1,X2) (24)
s(mark(X)) s(X) (25)
s(active(X)) s(X) (26)
adx(mark(X)) adx(X) (27)
adx(active(X)) adx(X) (28)
head(mark(X)) head(X) (29)
head(active(X)) head(X) (30)
tail(mark(X)) tail(X) (31)
tail(active(X)) tail(X) (32)

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.
active#(incr(cons(X,L))) cons#(s(X),incr(L)) (33)
active#(incr(nil)) mark#(nil) (34)
active#(nats) mark#(adx(zeros)) (35)
mark#(head(X)) head#(mark(X)) (36)
active#(adx(cons(X,L))) mark#(incr(cons(X,adx(L)))) (37)
active#(adx(nil)) mark#(nil) (38)
mark#(0) active#(0) (39)
tail#(active(X)) tail#(X) (40)
active#(adx(cons(X,L))) incr#(cons(X,adx(L))) (41)
active#(adx(cons(X,L))) cons#(X,adx(L)) (42)
incr#(mark(X)) incr#(X) (43)
active#(zeros) mark#(cons(0,zeros)) (44)
cons#(mark(X1),X2) cons#(X1,X2) (45)
mark#(tail(X)) tail#(mark(X)) (46)
mark#(incr(X)) mark#(X) (47)
mark#(adx(X)) adx#(mark(X)) (48)
mark#(incr(X)) active#(incr(mark(X))) (49)
head#(active(X)) head#(X) (50)
mark#(nats) active#(nats) (51)
mark#(zeros) active#(zeros) (52)
mark#(incr(X)) incr#(mark(X)) (53)
adx#(active(X)) adx#(X) (54)
mark#(cons(X1,X2)) active#(cons(mark(X1),X2)) (55)
active#(nats) adx#(zeros) (56)
mark#(tail(X)) mark#(X) (57)
active#(adx(cons(X,L))) adx#(L) (58)
s#(mark(X)) s#(X) (59)
mark#(s(X)) s#(mark(X)) (60)
active#(zeros) cons#(0,zeros) (61)
s#(active(X)) s#(X) (62)
mark#(adx(X)) mark#(X) (63)
adx#(mark(X)) adx#(X) (64)
head#(mark(X)) head#(X) (65)
active#(tail(cons(X,L))) mark#(L) (66)
mark#(nil) active#(nil) (67)
tail#(mark(X)) tail#(X) (68)
mark#(head(X)) active#(head(mark(X))) (69)
active#(head(cons(X,L))) mark#(X) (70)
cons#(X1,active(X2)) cons#(X1,X2) (71)
cons#(X1,mark(X2)) cons#(X1,X2) (72)
mark#(s(X)) active#(s(mark(X))) (73)
incr#(active(X)) incr#(X) (74)
mark#(head(X)) mark#(X) (75)
mark#(s(X)) mark#(X) (76)
mark#(cons(X1,X2)) mark#(X1) (77)
active#(incr(cons(X,L))) s#(X) (78)
active#(incr(cons(X,L))) mark#(cons(s(X),incr(L))) (79)
mark#(adx(X)) active#(adx(mark(X))) (80)
mark#(cons(X1,X2)) cons#(mark(X1),X2) (81)
active#(incr(cons(X,L))) incr#(L) (82)
mark#(tail(X)) active#(tail(mark(X))) (83)
cons#(active(X1),X2) cons#(X1,X2) (84)

1.1 Dependency Graph Processor

The dependency pairs are split into 7 components.