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 AProVE @ termCOMP 2023)

1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
active#(fst(s(X),cons(Y,Z))) cons#(Y,fst(X,Z)) (38)
active#(fst(s(X),cons(Y,Z))) fst#(X,Z) (39)
active#(from(X)) cons#(X,from(s(X))) (40)
active#(from(X)) from#(s(X)) (41)
active#(from(X)) s#(X) (42)
active#(add(s(X),Y)) s#(add(X,Y)) (43)
active#(add(s(X),Y)) add#(X,Y) (44)
active#(len(cons(X,Z))) s#(len(Z)) (45)
active#(len(cons(X,Z))) len#(Z) (46)
active#(cons(X1,X2)) cons#(active(X1),X2) (47)
active#(cons(X1,X2)) active#(X1) (48)
active#(fst(X1,X2)) fst#(active(X1),X2) (49)
active#(fst(X1,X2)) active#(X1) (50)
active#(fst(X1,X2)) fst#(X1,active(X2)) (51)
active#(fst(X1,X2)) active#(X2) (52)
active#(from(X)) from#(active(X)) (53)
active#(from(X)) active#(X) (54)
active#(add(X1,X2)) add#(active(X1),X2) (55)
active#(add(X1,X2)) active#(X1) (56)
active#(add(X1,X2)) add#(X1,active(X2)) (57)
active#(add(X1,X2)) active#(X2) (58)
active#(len(X)) len#(active(X)) (59)
active#(len(X)) active#(X) (60)
cons#(mark(X1),X2) cons#(X1,X2) (61)
fst#(mark(X1),X2) fst#(X1,X2) (62)
fst#(X1,mark(X2)) fst#(X1,X2) (63)
from#(mark(X)) from#(X) (64)
add#(mark(X1),X2) add#(X1,X2) (65)
add#(X1,mark(X2)) add#(X1,X2) (66)
len#(mark(X)) len#(X) (67)
proper#(s(X)) s#(proper(X)) (68)
proper#(s(X)) proper#(X) (69)
proper#(cons(X1,X2)) cons#(proper(X1),proper(X2)) (70)
proper#(cons(X1,X2)) proper#(X1) (71)
proper#(cons(X1,X2)) proper#(X2) (72)
proper#(fst(X1,X2)) fst#(proper(X1),proper(X2)) (73)
proper#(fst(X1,X2)) proper#(X1) (74)
proper#(fst(X1,X2)) proper#(X2) (75)
proper#(from(X)) from#(proper(X)) (76)
proper#(from(X)) proper#(X) (77)
proper#(add(X1,X2)) add#(proper(X1),proper(X2)) (78)
proper#(add(X1,X2)) proper#(X1) (79)
proper#(add(X1,X2)) proper#(X2) (80)
proper#(len(X)) len#(proper(X)) (81)
proper#(len(X)) proper#(X) (82)
s#(ok(X)) s#(X) (83)
cons#(ok(X1),ok(X2)) cons#(X1,X2) (84)
fst#(ok(X1),ok(X2)) fst#(X1,X2) (85)
from#(ok(X)) from#(X) (86)
add#(ok(X1),ok(X2)) add#(X1,X2) (87)
len#(ok(X)) len#(X) (88)
top#(mark(X)) top#(proper(X)) (89)
top#(mark(X)) proper#(X) (90)
top#(ok(X)) top#(active(X)) (91)
top#(ok(X)) active#(X) (92)

1.1 Dependency Graph Processor

The dependency pairs are split into 9 components.