Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex5_7_Luc97_iGM)

The rewrite relation of the following TRS is considered.

active(dbl(0)) mark(0) (1)
active(dbl(s(X))) mark(s(s(dbl(X)))) (2)
active(dbls(nil)) mark(nil) (3)
active(dbls(cons(X,Y))) mark(cons(dbl(X),dbls(Y))) (4)
active(sel(0,cons(X,Y))) mark(X) (5)
active(sel(s(X),cons(Y,Z))) mark(sel(X,Z)) (6)
active(indx(nil,X)) mark(nil) (7)
active(indx(cons(X,Y),Z)) mark(cons(sel(X,Z),indx(Y,Z))) (8)
active(from(X)) mark(cons(X,from(s(X)))) (9)
active(dbl1(0)) mark(01) (10)
active(dbl1(s(X))) mark(s1(s1(dbl1(X)))) (11)
active(sel1(0,cons(X,Y))) mark(X) (12)
active(sel1(s(X),cons(Y,Z))) mark(sel1(X,Z)) (13)
active(quote(0)) mark(01) (14)
active(quote(s(X))) mark(s1(quote(X))) (15)
active(quote(dbl(X))) mark(dbl1(X)) (16)
active(quote(sel(X,Y))) mark(sel1(X,Y)) (17)
mark(dbl(X)) active(dbl(mark(X))) (18)
mark(0) active(0) (19)
mark(s(X)) active(s(X)) (20)
mark(dbls(X)) active(dbls(mark(X))) (21)
mark(nil) active(nil) (22)
mark(cons(X1,X2)) active(cons(X1,X2)) (23)
mark(sel(X1,X2)) active(sel(mark(X1),mark(X2))) (24)
mark(indx(X1,X2)) active(indx(mark(X1),X2)) (25)
mark(from(X)) active(from(X)) (26)
mark(dbl1(X)) active(dbl1(mark(X))) (27)
mark(01) active(01) (28)
mark(s1(X)) active(s1(mark(X))) (29)
mark(sel1(X1,X2)) active(sel1(mark(X1),mark(X2))) (30)
mark(quote(X)) active(quote(mark(X))) (31)
dbl(mark(X)) dbl(X) (32)
dbl(active(X)) dbl(X) (33)
s(mark(X)) s(X) (34)
s(active(X)) s(X) (35)
dbls(mark(X)) dbls(X) (36)
dbls(active(X)) dbls(X) (37)
cons(mark(X1),X2) cons(X1,X2) (38)
cons(X1,mark(X2)) cons(X1,X2) (39)
cons(active(X1),X2) cons(X1,X2) (40)
cons(X1,active(X2)) cons(X1,X2) (41)
sel(mark(X1),X2) sel(X1,X2) (42)
sel(X1,mark(X2)) sel(X1,X2) (43)
sel(active(X1),X2) sel(X1,X2) (44)
sel(X1,active(X2)) sel(X1,X2) (45)
indx(mark(X1),X2) indx(X1,X2) (46)
indx(X1,mark(X2)) indx(X1,X2) (47)
indx(active(X1),X2) indx(X1,X2) (48)
indx(X1,active(X2)) indx(X1,X2) (49)
from(mark(X)) from(X) (50)
from(active(X)) from(X) (51)
dbl1(mark(X)) dbl1(X) (52)
dbl1(active(X)) dbl1(X) (53)
s1(mark(X)) s1(X) (54)
s1(active(X)) s1(X) (55)
sel1(mark(X1),X2) sel1(X1,X2) (56)
sel1(X1,mark(X2)) sel1(X1,X2) (57)
sel1(active(X1),X2) sel1(X1,X2) (58)
sel1(X1,active(X2)) sel1(X1,X2) (59)
quote(mark(X)) quote(X) (60)
quote(active(X)) quote(X) (61)

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#(dbl(s(X))) s#(s(dbl(X))) (62)
active#(indx(cons(X,Y),Z)) mark#(cons(sel(X,Z),indx(Y,Z))) (63)
active#(sel1(0,cons(X,Y))) mark#(X) (64)
active#(from(X)) cons#(X,from(s(X))) (65)
active#(dbl1(s(X))) dbl1#(X) (66)
active#(dbls(nil)) mark#(nil) (67)
mark#(nil) active#(nil) (68)
mark#(quote(X)) mark#(X) (69)
sel#(X1,active(X2)) sel#(X1,X2) (70)
active#(dbls(cons(X,Y))) dbl#(X) (71)
mark#(cons(X1,X2)) active#(cons(X1,X2)) (72)
mark#(sel(X1,X2)) active#(sel(mark(X1),mark(X2))) (73)
mark#(dbl(X)) dbl#(mark(X)) (74)
from#(mark(X)) from#(X) (75)
active#(quote(s(X))) s1#(quote(X)) (76)
active#(quote(sel(X,Y))) sel1#(X,Y) (77)
sel1#(mark(X1),X2) sel1#(X1,X2) (78)
dbl1#(mark(X)) dbl1#(X) (79)
quote#(mark(X)) quote#(X) (80)
active#(quote(0)) mark#(01) (81)
mark#(0) active#(0) (82)
dbl#(mark(X)) dbl#(X) (83)
mark#(s(X)) active#(s(X)) (84)
active#(dbl1(0)) mark#(01) (85)
mark#(sel(X1,X2)) sel#(mark(X1),mark(X2)) (86)
mark#(s1(X)) active#(s1(mark(X))) (87)
active#(indx(nil,X)) mark#(nil) (88)
mark#(indx(X1,X2)) active#(indx(mark(X1),X2)) (89)
s#(mark(X)) s#(X) (90)
mark#(sel(X1,X2)) mark#(X2) (91)
active#(quote(s(X))) mark#(s1(quote(X))) (92)
mark#(sel1(X1,X2)) mark#(X1) (93)
dbls#(active(X)) dbls#(X) (94)
s#(active(X)) s#(X) (95)
sel#(mark(X1),X2) sel#(X1,X2) (96)
mark#(dbl(X)) active#(dbl(mark(X))) (97)
mark#(indx(X1,X2)) mark#(X1) (98)
mark#(from(X)) active#(from(X)) (99)
active#(dbls(cons(X,Y))) cons#(dbl(X),dbls(Y)) (100)
cons#(active(X1),X2) cons#(X1,X2) (101)
mark#(dbl1(X)) mark#(X) (102)
s1#(active(X)) s1#(X) (103)
active#(quote(dbl(X))) mark#(dbl1(X)) (104)
mark#(dbls(X)) active#(dbls(mark(X))) (105)
mark#(quote(X)) quote#(mark(X)) (106)
active#(dbls(cons(X,Y))) dbls#(Y) (107)
mark#(dbl1(X)) dbl1#(mark(X)) (108)
cons#(X1,active(X2)) cons#(X1,X2) (109)
active#(from(X)) s#(X) (110)
mark#(dbls(X)) dbls#(mark(X)) (111)
mark#(indx(X1,X2)) indx#(mark(X1),X2) (112)
active#(indx(cons(X,Y),Z)) indx#(Y,Z) (113)
active#(quote(dbl(X))) dbl1#(X) (114)
indx#(X1,mark(X2)) indx#(X1,X2) (115)
dbl#(active(X)) dbl#(X) (116)
active#(from(X)) from#(s(X)) (117)
mark#(sel1(X1,X2)) mark#(X2) (118)
mark#(sel1(X1,X2)) active#(sel1(mark(X1),mark(X2))) (119)
from#(active(X)) from#(X) (120)
active#(sel(s(X),cons(Y,Z))) mark#(sel(X,Z)) (121)
active#(indx(cons(X,Y),Z)) sel#(X,Z) (122)
mark#(s1(X)) s1#(mark(X)) (123)
mark#(sel(X1,X2)) mark#(X1) (124)
indx#(mark(X1),X2) indx#(X1,X2) (125)
active#(quote(s(X))) quote#(X) (126)
active#(dbls(cons(X,Y))) mark#(cons(dbl(X),dbls(Y))) (127)
sel#(active(X1),X2) sel#(X1,X2) (128)
active#(dbl1(s(X))) s1#(s1(dbl1(X))) (129)
active#(quote(sel(X,Y))) mark#(sel1(X,Y)) (130)
sel#(X1,mark(X2)) sel#(X1,X2) (131)
mark#(quote(X)) active#(quote(mark(X))) (132)
mark#(01) active#(01) (133)
active#(from(X)) mark#(cons(X,from(s(X)))) (134)
sel1#(X1,active(X2)) sel1#(X1,X2) (135)
active#(dbl1(s(X))) s1#(dbl1(X)) (136)
active#(dbl(0)) mark#(0) (137)
active#(indx(cons(X,Y),Z)) cons#(sel(X,Z),indx(Y,Z)) (138)
active#(sel1(s(X),cons(Y,Z))) sel1#(X,Z) (139)
cons#(X1,mark(X2)) cons#(X1,X2) (140)
sel1#(active(X1),X2) sel1#(X1,X2) (141)
active#(dbl1(s(X))) mark#(s1(s1(dbl1(X)))) (142)
cons#(mark(X1),X2) cons#(X1,X2) (143)
active#(sel(0,cons(X,Y))) mark#(X) (144)
active#(sel1(s(X),cons(Y,Z))) mark#(sel1(X,Z)) (145)
mark#(dbl(X)) mark#(X) (146)
s1#(mark(X)) s1#(X) (147)
mark#(dbl1(X)) active#(dbl1(mark(X))) (148)
sel1#(X1,mark(X2)) sel1#(X1,X2) (149)
active#(sel(s(X),cons(Y,Z))) sel#(X,Z) (150)
indx#(active(X1),X2) indx#(X1,X2) (151)
active#(dbl(s(X))) s#(dbl(X)) (152)
dbls#(mark(X)) dbls#(X) (153)
active#(dbl(s(X))) mark#(s(s(dbl(X)))) (154)
indx#(X1,active(X2)) indx#(X1,X2) (155)
mark#(s1(X)) mark#(X) (156)
dbl1#(active(X)) dbl1#(X) (157)
active#(dbl(s(X))) dbl#(X) (158)
mark#(dbls(X)) mark#(X) (159)
mark#(sel1(X1,X2)) sel1#(mark(X1),mark(X2)) (160)
quote#(active(X)) quote#(X) (161)

1.1 Dependency Graph Processor

The dependency pairs are split into 12 components.