Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex7_BLR02_C)

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)
active(from(X)) from(active(X)) (8)
active(cons(X1,X2)) cons(active(X1),X2) (9)
active(s(X)) s(active(X)) (10)
active(head(X)) head(active(X)) (11)
active(2nd(X)) 2nd(active(X)) (12)
active(take(X1,X2)) take(active(X1),X2) (13)
active(take(X1,X2)) take(X1,active(X2)) (14)
active(sel(X1,X2)) sel(active(X1),X2) (15)
active(sel(X1,X2)) sel(X1,active(X2)) (16)
from(mark(X)) mark(from(X)) (17)
cons(mark(X1),X2) mark(cons(X1,X2)) (18)
s(mark(X)) mark(s(X)) (19)
head(mark(X)) mark(head(X)) (20)
2nd(mark(X)) mark(2nd(X)) (21)
take(mark(X1),X2) mark(take(X1,X2)) (22)
take(X1,mark(X2)) mark(take(X1,X2)) (23)
sel(mark(X1),X2) mark(sel(X1,X2)) (24)
sel(X1,mark(X2)) mark(sel(X1,X2)) (25)
proper(from(X)) from(proper(X)) (26)
proper(cons(X1,X2)) cons(proper(X1),proper(X2)) (27)
proper(s(X)) s(proper(X)) (28)
proper(head(X)) head(proper(X)) (29)
proper(2nd(X)) 2nd(proper(X)) (30)
proper(take(X1,X2)) take(proper(X1),proper(X2)) (31)
proper(0) ok(0) (32)
proper(nil) ok(nil) (33)
proper(sel(X1,X2)) sel(proper(X1),proper(X2)) (34)
from(ok(X)) ok(from(X)) (35)
cons(ok(X1),ok(X2)) ok(cons(X1,X2)) (36)
s(ok(X)) ok(s(X)) (37)
head(ok(X)) ok(head(X)) (38)
2nd(ok(X)) ok(2nd(X)) (39)
take(ok(X1),ok(X2)) ok(take(X1,X2)) (40)
sel(ok(X1),ok(X2)) ok(sel(X1,X2)) (41)
top(mark(X)) top(proper(X)) (42)
top(ok(X)) top(active(X)) (43)

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.
top#(ok(X)) active#(X) (44)
proper#(cons(X1,X2)) cons#(proper(X1),proper(X2)) (45)
sel#(X1,mark(X2)) sel#(X1,X2) (46)
active#(take(s(N),cons(X,XS))) cons#(X,take(N,XS)) (47)
from#(mark(X)) from#(X) (48)
proper#(sel(X1,X2)) proper#(X2) (49)
proper#(sel(X1,X2)) proper#(X1) (50)
proper#(s(X)) s#(proper(X)) (51)
s#(mark(X)) s#(X) (52)
active#(sel(X1,X2)) active#(X2) (53)
proper#(from(X)) from#(proper(X)) (54)
active#(from(X)) from#(active(X)) (55)
active#(sel(X1,X2)) active#(X1) (56)
proper#(s(X)) proper#(X) (57)
top#(mark(X)) top#(proper(X)) (58)
active#(from(X)) active#(X) (59)
active#(from(X)) cons#(X,from(s(X))) (60)
proper#(sel(X1,X2)) sel#(proper(X1),proper(X2)) (61)
2nd#(mark(X)) 2nd#(X) (62)
active#(take(X1,X2)) active#(X1) (63)
s#(ok(X)) s#(X) (64)
take#(ok(X1),ok(X2)) take#(X1,X2) (65)
active#(from(X)) s#(X) (66)
proper#(take(X1,X2)) proper#(X2) (67)
proper#(take(X1,X2)) proper#(X1) (68)
proper#(cons(X1,X2)) proper#(X2) (69)
active#(take(X1,X2)) take#(active(X1),X2) (70)
active#(sel(s(N),cons(X,XS))) sel#(N,XS) (71)
active#(from(X)) from#(s(X)) (72)
active#(cons(X1,X2)) cons#(active(X1),X2) (73)
cons#(mark(X1),X2) cons#(X1,X2) (74)
head#(mark(X)) head#(X) (75)
active#(sel(X1,X2)) sel#(X1,active(X2)) (76)
proper#(from(X)) proper#(X) (77)
active#(take(X1,X2)) take#(X1,active(X2)) (78)
active#(2nd(X)) 2nd#(active(X)) (79)
top#(mark(X)) proper#(X) (80)
take#(mark(X1),X2) take#(X1,X2) (81)
head#(ok(X)) head#(X) (82)
active#(s(X)) s#(active(X)) (83)
from#(ok(X)) from#(X) (84)
proper#(cons(X1,X2)) proper#(X1) (85)
proper#(2nd(X)) proper#(X) (86)
proper#(take(X1,X2)) take#(proper(X1),proper(X2)) (87)
active#(s(X)) active#(X) (88)
proper#(2nd(X)) 2nd#(proper(X)) (89)
active#(sel(X1,X2)) sel#(active(X1),X2) (90)
active#(head(X)) active#(X) (91)
2nd#(ok(X)) 2nd#(X) (92)
take#(X1,mark(X2)) take#(X1,X2) (93)
active#(take(X1,X2)) active#(X2) (94)
active#(take(s(N),cons(X,XS))) take#(N,XS) (95)
active#(2nd(X)) active#(X) (96)
active#(head(X)) head#(active(X)) (97)
proper#(head(X)) head#(proper(X)) (98)
top#(ok(X)) top#(active(X)) (99)
active#(2nd(cons(X,XS))) head#(XS) (100)
sel#(ok(X1),ok(X2)) sel#(X1,X2) (101)
active#(cons(X1,X2)) active#(X1) (102)
proper#(head(X)) proper#(X) (103)
cons#(ok(X1),ok(X2)) cons#(X1,X2) (104)
sel#(mark(X1),X2) sel#(X1,X2) (105)

1.1 Dependency Graph Processor

The dependency pairs are split into 10 components.