Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex2_Luc03b_C)

The rewrite relation of the following TRS is considered.

active(fst(0,Z)) mark(nil) (1)
active(fst(s(X),cons(Y,Z))) mark(cons(Y,fst(X,Z))) (2)
active(from(X)) mark(cons(X,from(s(X)))) (3)
active(add(0,X)) mark(X) (4)
active(add(s(X),Y)) mark(s(add(X,Y))) (5)
active(len(nil)) mark(0) (6)
active(len(cons(X,Z))) mark(s(len(Z))) (7)
active(cons(X1,X2)) cons(active(X1),X2) (8)
active(fst(X1,X2)) fst(active(X1),X2) (9)
active(fst(X1,X2)) fst(X1,active(X2)) (10)
active(from(X)) from(active(X)) (11)
active(add(X1,X2)) add(active(X1),X2) (12)
active(add(X1,X2)) add(X1,active(X2)) (13)
active(len(X)) len(active(X)) (14)
cons(mark(X1),X2) mark(cons(X1,X2)) (15)
fst(mark(X1),X2) mark(fst(X1,X2)) (16)
fst(X1,mark(X2)) mark(fst(X1,X2)) (17)
from(mark(X)) mark(from(X)) (18)
add(mark(X1),X2) mark(add(X1,X2)) (19)
add(X1,mark(X2)) mark(add(X1,X2)) (20)
len(mark(X)) mark(len(X)) (21)
proper(0) ok(0) (22)
proper(s(X)) s(proper(X)) (23)
proper(nil) ok(nil) (24)
proper(cons(X1,X2)) cons(proper(X1),proper(X2)) (25)
proper(fst(X1,X2)) fst(proper(X1),proper(X2)) (26)
proper(from(X)) from(proper(X)) (27)
proper(add(X1,X2)) add(proper(X1),proper(X2)) (28)
proper(len(X)) len(proper(X)) (29)
s(ok(X)) ok(s(X)) (30)
cons(ok(X1),ok(X2)) ok(cons(X1,X2)) (31)
fst(ok(X1),ok(X2)) ok(fst(X1,X2)) (32)
from(ok(X)) ok(from(X)) (33)
add(ok(X1),ok(X2)) ok(add(X1,X2)) (34)
len(ok(X)) ok(len(X)) (35)
top(mark(X)) top(proper(X)) (36)
top(ok(X)) top(active(X)) (37)

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

1.1 Dependency Graph Processor

The dependency pairs are split into 9 components.