Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex5_7_Luc97_C)

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)
active(dbl(X)) dbl(active(X)) (18)
active(dbls(X)) dbls(active(X)) (19)
active(sel(X1,X2)) sel(active(X1),X2) (20)
active(sel(X1,X2)) sel(X1,active(X2)) (21)
active(indx(X1,X2)) indx(active(X1),X2) (22)
active(dbl1(X)) dbl1(active(X)) (23)
active(s1(X)) s1(active(X)) (24)
active(sel1(X1,X2)) sel1(active(X1),X2) (25)
active(sel1(X1,X2)) sel1(X1,active(X2)) (26)
active(quote(X)) quote(active(X)) (27)
dbl(mark(X)) mark(dbl(X)) (28)
dbls(mark(X)) mark(dbls(X)) (29)
sel(mark(X1),X2) mark(sel(X1,X2)) (30)
sel(X1,mark(X2)) mark(sel(X1,X2)) (31)
indx(mark(X1),X2) mark(indx(X1,X2)) (32)
dbl1(mark(X)) mark(dbl1(X)) (33)
s1(mark(X)) mark(s1(X)) (34)
sel1(mark(X1),X2) mark(sel1(X1,X2)) (35)
sel1(X1,mark(X2)) mark(sel1(X1,X2)) (36)
quote(mark(X)) mark(quote(X)) (37)
proper(dbl(X)) dbl(proper(X)) (38)
proper(0) ok(0) (39)
proper(s(X)) s(proper(X)) (40)
proper(dbls(X)) dbls(proper(X)) (41)
proper(nil) ok(nil) (42)
proper(cons(X1,X2)) cons(proper(X1),proper(X2)) (43)
proper(sel(X1,X2)) sel(proper(X1),proper(X2)) (44)
proper(indx(X1,X2)) indx(proper(X1),proper(X2)) (45)
proper(from(X)) from(proper(X)) (46)
proper(dbl1(X)) dbl1(proper(X)) (47)
proper(01) ok(01) (48)
proper(s1(X)) s1(proper(X)) (49)
proper(sel1(X1,X2)) sel1(proper(X1),proper(X2)) (50)
proper(quote(X)) quote(proper(X)) (51)
dbl(ok(X)) ok(dbl(X)) (52)
s(ok(X)) ok(s(X)) (53)
dbls(ok(X)) ok(dbls(X)) (54)
cons(ok(X1),ok(X2)) ok(cons(X1,X2)) (55)
sel(ok(X1),ok(X2)) ok(sel(X1,X2)) (56)
indx(ok(X1),ok(X2)) ok(indx(X1,X2)) (57)
from(ok(X)) ok(from(X)) (58)
dbl1(ok(X)) ok(dbl1(X)) (59)
s1(ok(X)) ok(s1(X)) (60)
sel1(ok(X1),ok(X2)) ok(sel1(X1,X2)) (61)
quote(ok(X)) ok(quote(X)) (62)
top(mark(X)) top(proper(X)) (63)
top(ok(X)) top(active(X)) (64)

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

1.1 Dependency Graph Processor

The dependency pairs are split into 14 components.