Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex5_DLMMU04_C)

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)
active(cons(X1,X2)) cons(active(X1),X2) (12)
active(incr(X)) incr(active(X)) (13)
active(s(X)) s(active(X)) (14)
active(take(X1,X2)) take(active(X1),X2) (15)
active(take(X1,X2)) take(X1,active(X2)) (16)
active(zip(X1,X2)) zip(active(X1),X2) (17)
active(zip(X1,X2)) zip(X1,active(X2)) (18)
active(pair(X1,X2)) pair(active(X1),X2) (19)
active(pair(X1,X2)) pair(X1,active(X2)) (20)
active(tail(X)) tail(active(X)) (21)
active(repItems(X)) repItems(active(X)) (22)
cons(mark(X1),X2) mark(cons(X1,X2)) (23)
incr(mark(X)) mark(incr(X)) (24)
s(mark(X)) mark(s(X)) (25)
take(mark(X1),X2) mark(take(X1,X2)) (26)
take(X1,mark(X2)) mark(take(X1,X2)) (27)
zip(mark(X1),X2) mark(zip(X1,X2)) (28)
zip(X1,mark(X2)) mark(zip(X1,X2)) (29)
pair(mark(X1),X2) mark(pair(X1,X2)) (30)
pair(X1,mark(X2)) mark(pair(X1,X2)) (31)
tail(mark(X)) mark(tail(X)) (32)
repItems(mark(X)) mark(repItems(X)) (33)
proper(pairNs) ok(pairNs) (34)
proper(cons(X1,X2)) cons(proper(X1),proper(X2)) (35)
proper(0) ok(0) (36)
proper(incr(X)) incr(proper(X)) (37)
proper(oddNs) ok(oddNs) (38)
proper(s(X)) s(proper(X)) (39)
proper(take(X1,X2)) take(proper(X1),proper(X2)) (40)
proper(nil) ok(nil) (41)
proper(zip(X1,X2)) zip(proper(X1),proper(X2)) (42)
proper(pair(X1,X2)) pair(proper(X1),proper(X2)) (43)
proper(tail(X)) tail(proper(X)) (44)
proper(repItems(X)) repItems(proper(X)) (45)
cons(ok(X1),ok(X2)) ok(cons(X1,X2)) (46)
incr(ok(X)) ok(incr(X)) (47)
s(ok(X)) ok(s(X)) (48)
take(ok(X1),ok(X2)) ok(take(X1,X2)) (49)
zip(ok(X1),ok(X2)) ok(zip(X1,X2)) (50)
pair(ok(X1),ok(X2)) ok(pair(X1,X2)) (51)
tail(ok(X)) ok(tail(X)) (52)
repItems(ok(X)) ok(repItems(X)) (53)
top(mark(X)) top(proper(X)) (54)
top(ok(X)) top(active(X)) (55)

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

1.1 Dependency Graph Processor

The dependency pairs are split into 11 components.