Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex2_Luc03b_iGM)

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)
mark(fst(X1,X2)) active(fst(mark(X1),mark(X2))) (8)
mark(0) active(0) (9)
mark(nil) active(nil) (10)
mark(s(X)) active(s(X)) (11)
mark(cons(X1,X2)) active(cons(mark(X1),X2)) (12)
mark(from(X)) active(from(mark(X))) (13)
mark(add(X1,X2)) active(add(mark(X1),mark(X2))) (14)
mark(len(X)) active(len(mark(X))) (15)
fst(mark(X1),X2) fst(X1,X2) (16)
fst(X1,mark(X2)) fst(X1,X2) (17)
fst(active(X1),X2) fst(X1,X2) (18)
fst(X1,active(X2)) fst(X1,X2) (19)
s(mark(X)) s(X) (20)
s(active(X)) s(X) (21)
cons(mark(X1),X2) cons(X1,X2) (22)
cons(X1,mark(X2)) cons(X1,X2) (23)
cons(active(X1),X2) cons(X1,X2) (24)
cons(X1,active(X2)) cons(X1,X2) (25)
from(mark(X)) from(X) (26)
from(active(X)) from(X) (27)
add(mark(X1),X2) add(X1,X2) (28)
add(X1,mark(X2)) add(X1,X2) (29)
add(active(X1),X2) add(X1,X2) (30)
add(X1,active(X2)) add(X1,X2) (31)
len(mark(X)) len(X) (32)
len(active(X)) len(X) (33)

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

1.1 Dependency Graph Processor

The dependency pairs are split into 7 components.