Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex8_BLR02_C)

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

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

1.1 Dependency Graph Processor

The dependency pairs are split into 9 components.