Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex8_BLR02_iGM)

The rewrite relation of the following TRS is considered.

active(fib(N)) mark(sel(N,fib1(s(0),s(0)))) (1)
active(fib1(X,Y)) mark(cons(X,fib1(Y,add(X,Y)))) (2)
active(add(0,X)) mark(X) (3)
active(add(s(X),Y)) mark(s(add(X,Y))) (4)
active(sel(0,cons(X,XS))) mark(X) (5)
active(sel(s(N),cons(X,XS))) mark(sel(N,XS)) (6)
mark(fib(X)) active(fib(mark(X))) (7)
mark(sel(X1,X2)) active(sel(mark(X1),mark(X2))) (8)
mark(fib1(X1,X2)) active(fib1(mark(X1),mark(X2))) (9)
mark(s(X)) active(s(mark(X))) (10)
mark(0) active(0) (11)
mark(cons(X1,X2)) active(cons(mark(X1),X2)) (12)
mark(add(X1,X2)) active(add(mark(X1),mark(X2))) (13)
fib(mark(X)) fib(X) (14)
fib(active(X)) fib(X) (15)
sel(mark(X1),X2) sel(X1,X2) (16)
sel(X1,mark(X2)) sel(X1,X2) (17)
sel(active(X1),X2) sel(X1,X2) (18)
sel(X1,active(X2)) sel(X1,X2) (19)
fib1(mark(X1),X2) fib1(X1,X2) (20)
fib1(X1,mark(X2)) fib1(X1,X2) (21)
fib1(active(X1),X2) fib1(X1,X2) (22)
fib1(X1,active(X2)) fib1(X1,X2) (23)
s(mark(X)) s(X) (24)
s(active(X)) s(X) (25)
cons(mark(X1),X2) cons(X1,X2) (26)
cons(X1,mark(X2)) cons(X1,X2) (27)
cons(active(X1),X2) cons(X1,X2) (28)
cons(X1,active(X2)) cons(X1,X2) (29)
add(mark(X1),X2) add(X1,X2) (30)
add(X1,mark(X2)) add(X1,X2) (31)
add(active(X1),X2) add(X1,X2) (32)
add(X1,active(X2)) add(X1,X2) (33)

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

1.1 Dependency Graph Processor

The dependency pairs are split into 7 components.