Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex7_BLR02_iGM)

The rewrite relation of the following TRS is considered.

active(from(X)) mark(cons(X,from(s(X)))) (1)
active(head(cons(X,XS))) mark(X) (2)
active(2nd(cons(X,XS))) mark(head(XS)) (3)
active(take(0,XS)) mark(nil) (4)
active(take(s(N),cons(X,XS))) mark(cons(X,take(N,XS))) (5)
active(sel(0,cons(X,XS))) mark(X) (6)
active(sel(s(N),cons(X,XS))) mark(sel(N,XS)) (7)
mark(from(X)) active(from(mark(X))) (8)
mark(cons(X1,X2)) active(cons(mark(X1),X2)) (9)
mark(s(X)) active(s(mark(X))) (10)
mark(head(X)) active(head(mark(X))) (11)
mark(2nd(X)) active(2nd(mark(X))) (12)
mark(take(X1,X2)) active(take(mark(X1),mark(X2))) (13)
mark(0) active(0) (14)
mark(nil) active(nil) (15)
mark(sel(X1,X2)) active(sel(mark(X1),mark(X2))) (16)
from(mark(X)) from(X) (17)
from(active(X)) from(X) (18)
cons(mark(X1),X2) cons(X1,X2) (19)
cons(X1,mark(X2)) cons(X1,X2) (20)
cons(active(X1),X2) cons(X1,X2) (21)
cons(X1,active(X2)) cons(X1,X2) (22)
s(mark(X)) s(X) (23)
s(active(X)) s(X) (24)
head(mark(X)) head(X) (25)
head(active(X)) head(X) (26)
2nd(mark(X)) 2nd(X) (27)
2nd(active(X)) 2nd(X) (28)
take(mark(X1),X2) take(X1,X2) (29)
take(X1,mark(X2)) take(X1,X2) (30)
take(active(X1),X2) take(X1,X2) (31)
take(X1,active(X2)) take(X1,X2) (32)
sel(mark(X1),X2) sel(X1,X2) (33)
sel(X1,mark(X2)) sel(X1,X2) (34)
sel(active(X1),X2) sel(X1,X2) (35)
sel(X1,active(X2)) sel(X1,X2) (36)

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

1.1 Dependency Graph Processor

The dependency pairs are split into 8 components.