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 AProVE @ termCOMP 2023)

1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
active#(app(cons(X,XS),YS)) cons#(X,app(XS,YS)) (39)
active#(app(cons(X,XS),YS)) app#(XS,YS) (40)
active#(from(X)) cons#(X,from(s(X))) (41)
active#(from(X)) from#(s(X)) (42)
active#(from(X)) s#(X) (43)
active#(zWadr(cons(X,XS),cons(Y,YS))) cons#(app(Y,cons(X,nil)),zWadr(XS,YS)) (44)
active#(zWadr(cons(X,XS),cons(Y,YS))) app#(Y,cons(X,nil)) (45)
active#(zWadr(cons(X,XS),cons(Y,YS))) cons#(X,nil) (46)
active#(zWadr(cons(X,XS),cons(Y,YS))) zWadr#(XS,YS) (47)
active#(prefix(L)) cons#(nil,zWadr(L,prefix(L))) (48)
active#(prefix(L)) zWadr#(L,prefix(L)) (49)
active#(app(X1,X2)) app#(active(X1),X2) (50)
active#(app(X1,X2)) active#(X1) (51)
active#(app(X1,X2)) app#(X1,active(X2)) (52)
active#(app(X1,X2)) active#(X2) (53)
active#(cons(X1,X2)) cons#(active(X1),X2) (54)
active#(cons(X1,X2)) active#(X1) (55)
active#(from(X)) from#(active(X)) (56)
active#(from(X)) active#(X) (57)
active#(s(X)) s#(active(X)) (58)
active#(s(X)) active#(X) (59)
active#(zWadr(X1,X2)) zWadr#(active(X1),X2) (60)
active#(zWadr(X1,X2)) active#(X1) (61)
active#(zWadr(X1,X2)) zWadr#(X1,active(X2)) (62)
active#(zWadr(X1,X2)) active#(X2) (63)
active#(prefix(X)) prefix#(active(X)) (64)
active#(prefix(X)) 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)) app#(proper(X1),proper(X2)) (74)
proper#(app(X1,X2)) proper#(X1) (75)
proper#(app(X1,X2)) proper#(X2) (76)
proper#(cons(X1,X2)) cons#(proper(X1),proper(X2)) (77)
proper#(cons(X1,X2)) proper#(X1) (78)
proper#(cons(X1,X2)) proper#(X2) (79)
proper#(from(X)) from#(proper(X)) (80)
proper#(from(X)) proper#(X) (81)
proper#(s(X)) s#(proper(X)) (82)
proper#(s(X)) proper#(X) (83)
proper#(zWadr(X1,X2)) zWadr#(proper(X1),proper(X2)) (84)
proper#(zWadr(X1,X2)) proper#(X1) (85)
proper#(zWadr(X1,X2)) proper#(X2) (86)
proper#(prefix(X)) prefix#(proper(X)) (87)
proper#(prefix(X)) 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)) top#(proper(X)) (95)
top#(mark(X)) proper#(X) (96)
top#(ok(X)) top#(active(X)) (97)
top#(ok(X)) active#(X) (98)

1.1 Dependency Graph Processor

The dependency pairs are split into 9 components.