Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex3_2_Luc97_C)

The rewrite relation of the following TRS is considered.

active(dbl(0)) mark(0) (1)
active(dbl(s(X))) mark(s(s(dbl(X)))) (2)
active(dbls(nil)) mark(nil) (3)
active(dbls(cons(X,Y))) mark(cons(dbl(X),dbls(Y))) (4)
active(sel(0,cons(X,Y))) mark(X) (5)
active(sel(s(X),cons(Y,Z))) mark(sel(X,Z)) (6)
active(indx(nil,X)) mark(nil) (7)
active(indx(cons(X,Y),Z)) mark(cons(sel(X,Z),indx(Y,Z))) (8)
active(from(X)) mark(cons(X,from(s(X)))) (9)
active(dbl(X)) dbl(active(X)) (10)
active(dbls(X)) dbls(active(X)) (11)
active(sel(X1,X2)) sel(active(X1),X2) (12)
active(sel(X1,X2)) sel(X1,active(X2)) (13)
active(indx(X1,X2)) indx(active(X1),X2) (14)
dbl(mark(X)) mark(dbl(X)) (15)
dbls(mark(X)) mark(dbls(X)) (16)
sel(mark(X1),X2) mark(sel(X1,X2)) (17)
sel(X1,mark(X2)) mark(sel(X1,X2)) (18)
indx(mark(X1),X2) mark(indx(X1,X2)) (19)
proper(dbl(X)) dbl(proper(X)) (20)
proper(0) ok(0) (21)
proper(s(X)) s(proper(X)) (22)
proper(dbls(X)) dbls(proper(X)) (23)
proper(nil) ok(nil) (24)
proper(cons(X1,X2)) cons(proper(X1),proper(X2)) (25)
proper(sel(X1,X2)) sel(proper(X1),proper(X2)) (26)
proper(indx(X1,X2)) indx(proper(X1),proper(X2)) (27)
proper(from(X)) from(proper(X)) (28)
dbl(ok(X)) ok(dbl(X)) (29)
s(ok(X)) ok(s(X)) (30)
dbls(ok(X)) ok(dbls(X)) (31)
cons(ok(X1),ok(X2)) ok(cons(X1,X2)) (32)
sel(ok(X1),ok(X2)) ok(sel(X1,X2)) (33)
indx(ok(X1),ok(X2)) ok(indx(X1,X2)) (34)
from(ok(X)) ok(from(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 NaTT @ termCOMP 2023)

1 Dependency Pair Transformation

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

1.1 Dependency Graph Processor

The dependency pairs are split into 10 components.