Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex3_2_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)
mark(dbl(X)) active(dbl(mark(X))) (10)
mark(0) active(0) (11)
mark(s(X)) active(s(X)) (12)
mark(dbls(X)) active(dbls(mark(X))) (13)
mark(nil) active(nil) (14)
mark(cons(X1,X2)) active(cons(X1,X2)) (15)
mark(sel(X1,X2)) active(sel(mark(X1),mark(X2))) (16)
mark(indx(X1,X2)) active(indx(mark(X1),X2)) (17)
mark(from(X)) active(from(X)) (18)
dbl(mark(X)) dbl(X) (19)
dbl(active(X)) dbl(X) (20)
s(mark(X)) s(X) (21)
s(active(X)) s(X) (22)
dbls(mark(X)) dbls(X) (23)
dbls(active(X)) dbls(X) (24)
cons(mark(X1),X2) cons(X1,X2) (25)
cons(X1,mark(X2)) cons(X1,X2) (26)
cons(active(X1),X2) cons(X1,X2) (27)
cons(X1,active(X2)) cons(X1,X2) (28)
sel(mark(X1),X2) sel(X1,X2) (29)
sel(X1,mark(X2)) sel(X1,X2) (30)
sel(active(X1),X2) sel(X1,X2) (31)
sel(X1,active(X2)) sel(X1,X2) (32)
indx(mark(X1),X2) indx(X1,X2) (33)
indx(X1,mark(X2)) indx(X1,X2) (34)
indx(active(X1),X2) indx(X1,X2) (35)
indx(X1,active(X2)) indx(X1,X2) (36)
from(mark(X)) from(X) (37)
from(active(X)) from(X) (38)

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))) (39)
indx#(X1,active(X2)) indx#(X1,X2) (40)
mark#(dbl(X)) dbl#(mark(X)) (41)
indx#(X1,mark(X2)) indx#(X1,X2) (42)
mark#(sel(X1,X2)) sel#(mark(X1),mark(X2)) (43)
cons#(X1,mark(X2)) cons#(X1,X2) (44)
dbl#(mark(X)) dbl#(X) (45)
mark#(indx(X1,X2)) active#(indx(mark(X1),X2)) (46)
mark#(sel(X1,X2)) mark#(X1) (47)
active#(indx(cons(X,Y),Z)) sel#(X,Z) (48)
mark#(sel(X1,X2)) mark#(X2) (49)
active#(dbls(cons(X,Y))) dbl#(X) (50)
mark#(indx(X1,X2)) indx#(mark(X1),X2) (51)
indx#(active(X1),X2) indx#(X1,X2) (52)
active#(dbls(cons(X,Y))) dbls#(Y) (53)
mark#(cons(X1,X2)) active#(cons(X1,X2)) (54)
sel#(X1,active(X2)) sel#(X1,X2) (55)
active#(indx(cons(X,Y),Z)) mark#(cons(sel(X,Z),indx(Y,Z))) (56)
mark#(dbls(X)) mark#(X) (57)
active#(sel(s(X),cons(Y,Z))) mark#(sel(X,Z)) (58)
mark#(dbls(X)) active#(dbls(mark(X))) (59)
active#(dbls(cons(X,Y))) cons#(dbl(X),dbls(Y)) (60)
sel#(X1,mark(X2)) sel#(X1,X2) (61)
mark#(nil) active#(nil) (62)
mark#(sel(X1,X2)) active#(sel(mark(X1),mark(X2))) (63)
mark#(dbls(X)) dbls#(mark(X)) (64)
indx#(mark(X1),X2) indx#(X1,X2) (65)
active#(dbls(cons(X,Y))) mark#(cons(dbl(X),dbls(Y))) (66)
active#(from(X)) mark#(cons(X,from(s(X)))) (67)
mark#(dbl(X)) mark#(X) (68)
active#(indx(cons(X,Y),Z)) cons#(sel(X,Z),indx(Y,Z)) (69)
active#(dbls(nil)) mark#(nil) (70)
cons#(mark(X1),X2) cons#(X1,X2) (71)
dbls#(mark(X)) dbls#(X) (72)
from#(mark(X)) from#(X) (73)
mark#(indx(X1,X2)) mark#(X1) (74)
active#(sel(s(X),cons(Y,Z))) sel#(X,Z) (75)
cons#(X1,active(X2)) cons#(X1,X2) (76)
sel#(mark(X1),X2) sel#(X1,X2) (77)
s#(mark(X)) s#(X) (78)
mark#(dbl(X)) active#(dbl(mark(X))) (79)
sel#(active(X1),X2) sel#(X1,X2) (80)
s#(active(X)) s#(X) (81)
active#(indx(nil,X)) mark#(nil) (82)
mark#(from(X)) active#(from(X)) (83)
active#(from(X)) s#(X) (84)
active#(sel(0,cons(X,Y))) mark#(X) (85)
dbls#(active(X)) dbls#(X) (86)
dbl#(active(X)) dbl#(X) (87)
cons#(active(X1),X2) cons#(X1,X2) (88)
mark#(s(X)) active#(s(X)) (89)
active#(from(X)) from#(s(X)) (90)
active#(dbl(s(X))) s#(dbl(X)) (91)
active#(dbl(s(X))) mark#(s(s(dbl(X)))) (92)
active#(indx(cons(X,Y),Z)) indx#(Y,Z) (93)
from#(active(X)) from#(X) (94)
active#(from(X)) cons#(X,from(s(X))) (95)
active#(dbl(s(X))) dbl#(X) (96)
active#(dbl(0)) mark#(0) (97)
mark#(0) active#(0) (98)

1.1 Dependency Graph Processor

The dependency pairs are split into 8 components.