Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex3_3_25_Bor03_C)

The rewrite relation of the following TRS is considered.

active(app(nil,YS)) mark(YS) (1)
active(app(cons(X,XS),YS)) mark(cons(X,app(XS,YS))) (2)
active(from(X)) mark(cons(X,from(s(X)))) (3)
active(zWadr(nil,YS)) mark(nil) (4)
active(zWadr(XS,nil)) mark(nil) (5)
active(zWadr(cons(X,XS),cons(Y,YS))) mark(cons(app(Y,cons(X,nil)),zWadr(XS,YS))) (6)
active(prefix(L)) mark(cons(nil,zWadr(L,prefix(L)))) (7)
active(app(X1,X2)) app(active(X1),X2) (8)
active(app(X1,X2)) app(X1,active(X2)) (9)
active(cons(X1,X2)) cons(active(X1),X2) (10)
active(from(X)) from(active(X)) (11)
active(s(X)) s(active(X)) (12)
active(zWadr(X1,X2)) zWadr(active(X1),X2) (13)
active(zWadr(X1,X2)) zWadr(X1,active(X2)) (14)
active(prefix(X)) prefix(active(X)) (15)
app(mark(X1),X2) mark(app(X1,X2)) (16)
app(X1,mark(X2)) mark(app(X1,X2)) (17)
cons(mark(X1),X2) mark(cons(X1,X2)) (18)
from(mark(X)) mark(from(X)) (19)
s(mark(X)) mark(s(X)) (20)
zWadr(mark(X1),X2) mark(zWadr(X1,X2)) (21)
zWadr(X1,mark(X2)) mark(zWadr(X1,X2)) (22)
prefix(mark(X)) mark(prefix(X)) (23)
proper(app(X1,X2)) app(proper(X1),proper(X2)) (24)
proper(nil) ok(nil) (25)
proper(cons(X1,X2)) cons(proper(X1),proper(X2)) (26)
proper(from(X)) from(proper(X)) (27)
proper(s(X)) s(proper(X)) (28)
proper(zWadr(X1,X2)) zWadr(proper(X1),proper(X2)) (29)
proper(prefix(X)) prefix(proper(X)) (30)
app(ok(X1),ok(X2)) ok(app(X1,X2)) (31)
cons(ok(X1),ok(X2)) ok(cons(X1,X2)) (32)
from(ok(X)) ok(from(X)) (33)
s(ok(X)) ok(s(X)) (34)
zWadr(ok(X1),ok(X2)) ok(zWadr(X1,X2)) (35)
prefix(ok(X)) ok(prefix(X)) (36)
top(mark(X)) top(proper(X)) (37)
top(ok(X)) top(active(X)) (38)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by ttt2 @ termCOMP 2023)

1 Dependency Pair Transformation

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

1.1 Dependency Graph Processor

The dependency pairs are split into 9 components.