Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex5_DLMMU04_iGM)

The rewrite relation of the following TRS is considered.

active(pairNs) mark(cons(0,incr(oddNs))) (1)
active(oddNs) mark(incr(pairNs)) (2)
active(incr(cons(X,XS))) mark(cons(s(X),incr(XS))) (3)
active(take(0,XS)) mark(nil) (4)
active(take(s(N),cons(X,XS))) mark(cons(X,take(N,XS))) (5)
active(zip(nil,XS)) mark(nil) (6)
active(zip(X,nil)) mark(nil) (7)
active(zip(cons(X,XS),cons(Y,YS))) mark(cons(pair(X,Y),zip(XS,YS))) (8)
active(tail(cons(X,XS))) mark(XS) (9)
active(repItems(nil)) mark(nil) (10)
active(repItems(cons(X,XS))) mark(cons(X,cons(X,repItems(XS)))) (11)
mark(pairNs) active(pairNs) (12)
mark(cons(X1,X2)) active(cons(mark(X1),X2)) (13)
mark(0) active(0) (14)
mark(incr(X)) active(incr(mark(X))) (15)
mark(oddNs) active(oddNs) (16)
mark(s(X)) active(s(mark(X))) (17)
mark(take(X1,X2)) active(take(mark(X1),mark(X2))) (18)
mark(nil) active(nil) (19)
mark(zip(X1,X2)) active(zip(mark(X1),mark(X2))) (20)
mark(pair(X1,X2)) active(pair(mark(X1),mark(X2))) (21)
mark(tail(X)) active(tail(mark(X))) (22)
mark(repItems(X)) active(repItems(mark(X))) (23)
cons(mark(X1),X2) cons(X1,X2) (24)
cons(X1,mark(X2)) cons(X1,X2) (25)
cons(active(X1),X2) cons(X1,X2) (26)
cons(X1,active(X2)) cons(X1,X2) (27)
incr(mark(X)) incr(X) (28)
incr(active(X)) incr(X) (29)
s(mark(X)) s(X) (30)
s(active(X)) s(X) (31)
take(mark(X1),X2) take(X1,X2) (32)
take(X1,mark(X2)) take(X1,X2) (33)
take(active(X1),X2) take(X1,X2) (34)
take(X1,active(X2)) take(X1,X2) (35)
zip(mark(X1),X2) zip(X1,X2) (36)
zip(X1,mark(X2)) zip(X1,X2) (37)
zip(active(X1),X2) zip(X1,X2) (38)
zip(X1,active(X2)) zip(X1,X2) (39)
pair(mark(X1),X2) pair(X1,X2) (40)
pair(X1,mark(X2)) pair(X1,X2) (41)
pair(active(X1),X2) pair(X1,X2) (42)
pair(X1,active(X2)) pair(X1,X2) (43)
tail(mark(X)) tail(X) (44)
tail(active(X)) tail(X) (45)
repItems(mark(X)) repItems(X) (46)
repItems(active(X)) repItems(X) (47)

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#(oddNs) incr#(pairNs) (48)
tail#(mark(X)) tail#(X) (49)
mark#(0) active#(0) (50)
mark#(zip(X1,X2)) mark#(X2) (51)
active#(pairNs) mark#(cons(0,incr(oddNs))) (52)
mark#(tail(X)) tail#(mark(X)) (53)
active#(take(s(N),cons(X,XS))) take#(N,XS) (54)
active#(take(s(N),cons(X,XS))) cons#(X,take(N,XS)) (55)
zip#(X1,active(X2)) zip#(X1,X2) (56)
mark#(incr(X)) active#(incr(mark(X))) (57)
mark#(tail(X)) mark#(X) (58)
take#(mark(X1),X2) take#(X1,X2) (59)
active#(zip(cons(X,XS),cons(Y,YS))) pair#(X,Y) (60)
take#(active(X1),X2) take#(X1,X2) (61)
mark#(incr(X)) mark#(X) (62)
mark#(incr(X)) incr#(mark(X)) (63)
mark#(pair(X1,X2)) pair#(mark(X1),mark(X2)) (64)
mark#(oddNs) active#(oddNs) (65)
active#(repItems(nil)) mark#(nil) (66)
repItems#(mark(X)) repItems#(X) (67)
mark#(pair(X1,X2)) mark#(X1) (68)
cons#(active(X1),X2) cons#(X1,X2) (69)
active#(pairNs) cons#(0,incr(oddNs)) (70)
active#(take(s(N),cons(X,XS))) mark#(cons(X,take(N,XS))) (71)
mark#(s(X)) s#(mark(X)) (72)
pair#(mark(X1),X2) pair#(X1,X2) (73)
zip#(X1,mark(X2)) zip#(X1,X2) (74)
zip#(active(X1),X2) zip#(X1,X2) (75)
mark#(pair(X1,X2)) active#(pair(mark(X1),mark(X2))) (76)
active#(take(0,XS)) mark#(nil) (77)
mark#(repItems(X)) repItems#(mark(X)) (78)
active#(zip(cons(X,XS),cons(Y,YS))) cons#(pair(X,Y),zip(XS,YS)) (79)
mark#(repItems(X)) active#(repItems(mark(X))) (80)
mark#(take(X1,X2)) take#(mark(X1),mark(X2)) (81)
mark#(tail(X)) active#(tail(mark(X))) (82)
active#(zip(cons(X,XS),cons(Y,YS))) mark#(cons(pair(X,Y),zip(XS,YS))) (83)
active#(zip(nil,XS)) mark#(nil) (84)
cons#(X1,mark(X2)) cons#(X1,X2) (85)
mark#(take(X1,X2)) mark#(X1) (86)
zip#(mark(X1),X2) zip#(X1,X2) (87)
mark#(cons(X1,X2)) active#(cons(mark(X1),X2)) (88)
active#(incr(cons(X,XS))) mark#(cons(s(X),incr(XS))) (89)
s#(mark(X)) s#(X) (90)
mark#(s(X)) mark#(X) (91)
cons#(X1,active(X2)) cons#(X1,X2) (92)
mark#(repItems(X)) mark#(X) (93)
active#(repItems(cons(X,XS))) cons#(X,repItems(XS)) (94)
pair#(active(X1),X2) pair#(X1,X2) (95)
take#(X1,mark(X2)) take#(X1,X2) (96)
repItems#(active(X)) repItems#(X) (97)
active#(incr(cons(X,XS))) s#(X) (98)
mark#(zip(X1,X2)) zip#(mark(X1),mark(X2)) (99)
active#(zip(cons(X,XS),cons(Y,YS))) zip#(XS,YS) (100)
take#(X1,active(X2)) take#(X1,X2) (101)
incr#(mark(X)) incr#(X) (102)
active#(incr(cons(X,XS))) incr#(XS) (103)
s#(active(X)) s#(X) (104)
cons#(mark(X1),X2) cons#(X1,X2) (105)
mark#(zip(X1,X2)) mark#(X1) (106)
mark#(pairNs) active#(pairNs) (107)
mark#(pair(X1,X2)) mark#(X2) (108)
active#(tail(cons(X,XS))) mark#(XS) (109)
mark#(zip(X1,X2)) active#(zip(mark(X1),mark(X2))) (110)
active#(repItems(cons(X,XS))) cons#(X,cons(X,repItems(XS))) (111)
active#(incr(cons(X,XS))) cons#(s(X),incr(XS)) (112)
tail#(active(X)) tail#(X) (113)
active#(pairNs) incr#(oddNs) (114)
active#(zip(X,nil)) mark#(nil) (115)
active#(repItems(cons(X,XS))) repItems#(XS) (116)
mark#(cons(X1,X2)) mark#(X1) (117)
pair#(X1,active(X2)) pair#(X1,X2) (118)
mark#(take(X1,X2)) active#(take(mark(X1),mark(X2))) (119)
active#(oddNs) mark#(incr(pairNs)) (120)
mark#(nil) active#(nil) (121)
pair#(X1,mark(X2)) pair#(X1,X2) (122)
mark#(cons(X1,X2)) cons#(mark(X1),X2) (123)
incr#(active(X)) incr#(X) (124)
mark#(take(X1,X2)) mark#(X2) (125)
mark#(s(X)) active#(s(mark(X))) (126)
active#(repItems(cons(X,XS))) mark#(cons(X,cons(X,repItems(XS)))) (127)

1.1 Dependency Graph Processor

The dependency pairs are split into 9 components.