Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex5_7_Luc97_FR)

The rewrite relation of the following TRS is considered.

dbl(0) 0 (1)
dbl(s(X)) s(n__s(n__dbl(activate(X)))) (2)
dbls(nil) nil (3)
dbls(cons(X,Y)) cons(n__dbl(activate(X)),n__dbls(activate(Y))) (4)
sel(0,cons(X,Y)) activate(X) (5)
sel(s(X),cons(Y,Z)) sel(activate(X),activate(Z)) (6)
indx(nil,X) nil (7)
indx(cons(X,Y),Z) cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) (8)
from(X) cons(activate(X),n__from(n__s(activate(X)))) (9)
dbl1(0) 01 (10)
dbl1(s(X)) s1(s1(dbl1(activate(X)))) (11)
sel1(0,cons(X,Y)) activate(X) (12)
sel1(s(X),cons(Y,Z)) sel1(activate(X),activate(Z)) (13)
quote(0) 01 (14)
quote(s(X)) s1(quote(activate(X))) (15)
quote(dbl(X)) dbl1(X) (16)
quote(sel(X,Y)) sel1(X,Y) (17)
s(X) n__s(X) (18)
dbl(X) n__dbl(X) (19)
dbls(X) n__dbls(X) (20)
sel(X1,X2) n__sel(X1,X2) (21)
indx(X1,X2) n__indx(X1,X2) (22)
from(X) n__from(X) (23)
activate(n__s(X)) s(X) (24)
activate(n__dbl(X)) dbl(activate(X)) (25)
activate(n__dbls(X)) dbls(activate(X)) (26)
activate(n__sel(X1,X2)) sel(activate(X1),activate(X2)) (27)
activate(n__indx(X1,X2)) indx(activate(X1),X2) (28)
activate(n__from(X)) from(X) (29)
activate(X) X (30)

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.
dbl#(s(X)) activate#(X) (31)
indx#(cons(X,Y),Z) activate#(Z) (32)
dbls#(cons(X,Y)) activate#(Y) (33)
sel#(s(X),cons(Y,Z)) activate#(Z) (34)
dbl1#(s(X)) activate#(X) (35)
sel1#(s(X),cons(Y,Z)) activate#(Z) (36)
from#(X) activate#(X) (37)
quote#(sel(X,Y)) sel1#(X,Y) (38)
activate#(n__sel(X1,X2)) activate#(X2) (39)
dbl1#(s(X)) dbl1#(activate(X)) (40)
indx#(cons(X,Y),Z) activate#(Z) (32)
activate#(n__s(X)) s#(X) (41)
indx#(cons(X,Y),Z) activate#(Y) (42)
activate#(n__dbls(X)) dbls#(activate(X)) (43)
activate#(n__indx(X1,X2)) activate#(X1) (44)
sel1#(s(X),cons(Y,Z)) sel1#(activate(X),activate(Z)) (45)
from#(X) activate#(X) (37)
quote#(s(X)) activate#(X) (46)
sel#(s(X),cons(Y,Z)) activate#(X) (47)
indx#(cons(X,Y),Z) activate#(X) (48)
activate#(n__sel(X1,X2)) activate#(X1) (49)
dbls#(cons(X,Y)) activate#(X) (50)
quote#(dbl(X)) dbl1#(X) (51)
activate#(n__dbl(X)) activate#(X) (52)
quote#(s(X)) quote#(activate(X)) (53)
activate#(n__indx(X1,X2)) indx#(activate(X1),X2) (54)
activate#(n__dbls(X)) activate#(X) (55)
activate#(n__sel(X1,X2)) sel#(activate(X1),activate(X2)) (56)
activate#(n__dbl(X)) dbl#(activate(X)) (57)
activate#(n__from(X)) from#(X) (58)
dbl#(s(X)) s#(n__s(n__dbl(activate(X)))) (59)
sel1#(s(X),cons(Y,Z)) activate#(X) (60)
sel1#(0,cons(X,Y)) activate#(X) (61)
sel#(s(X),cons(Y,Z)) sel#(activate(X),activate(Z)) (62)
sel#(0,cons(X,Y)) activate#(X) (63)

1.1 Dependency Graph Processor

The dependency pairs are split into 4 components.