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) |
mark(app(X1,X2)) | → | active(app(mark(X1),mark(X2))) | (8) |
mark(nil) | → | active(nil) | (9) |
mark(cons(X1,X2)) | → | active(cons(mark(X1),X2)) | (10) |
mark(from(X)) | → | active(from(mark(X))) | (11) |
mark(s(X)) | → | active(s(mark(X))) | (12) |
mark(zWadr(X1,X2)) | → | active(zWadr(mark(X1),mark(X2))) | (13) |
mark(prefix(X)) | → | active(prefix(mark(X))) | (14) |
app(mark(X1),X2) | → | app(X1,X2) | (15) |
app(X1,mark(X2)) | → | app(X1,X2) | (16) |
app(active(X1),X2) | → | app(X1,X2) | (17) |
app(X1,active(X2)) | → | app(X1,X2) | (18) |
cons(mark(X1),X2) | → | cons(X1,X2) | (19) |
cons(X1,mark(X2)) | → | cons(X1,X2) | (20) |
cons(active(X1),X2) | → | cons(X1,X2) | (21) |
cons(X1,active(X2)) | → | cons(X1,X2) | (22) |
from(mark(X)) | → | from(X) | (23) |
from(active(X)) | → | from(X) | (24) |
s(mark(X)) | → | s(X) | (25) |
s(active(X)) | → | s(X) | (26) |
zWadr(mark(X1),X2) | → | zWadr(X1,X2) | (27) |
zWadr(X1,mark(X2)) | → | zWadr(X1,X2) | (28) |
zWadr(active(X1),X2) | → | zWadr(X1,X2) | (29) |
zWadr(X1,active(X2)) | → | zWadr(X1,X2) | (30) |
prefix(mark(X)) | → | prefix(X) | (31) |
prefix(active(X)) | → | prefix(X) | (32) |
active#(app(nil,YS)) | → | mark#(YS) | (33) |
active#(app(cons(X,XS),YS)) | → | mark#(cons(X,app(XS,YS))) | (34) |
active#(app(cons(X,XS),YS)) | → | cons#(X,app(XS,YS)) | (35) |
active#(app(cons(X,XS),YS)) | → | app#(XS,YS) | (36) |
active#(from(X)) | → | mark#(cons(X,from(s(X)))) | (37) |
active#(from(X)) | → | cons#(X,from(s(X))) | (38) |
active#(from(X)) | → | from#(s(X)) | (39) |
active#(from(X)) | → | s#(X) | (40) |
active#(zWadr(nil,YS)) | → | mark#(nil) | (41) |
active#(zWadr(XS,nil)) | → | mark#(nil) | (42) |
active#(zWadr(cons(X,XS),cons(Y,YS))) | → | mark#(cons(app(Y,cons(X,nil)),zWadr(XS,YS))) | (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)) | → | mark#(cons(nil,zWadr(L,prefix(L)))) | (48) |
active#(prefix(L)) | → | cons#(nil,zWadr(L,prefix(L))) | (49) |
active#(prefix(L)) | → | zWadr#(L,prefix(L)) | (50) |
mark#(app(X1,X2)) | → | active#(app(mark(X1),mark(X2))) | (51) |
mark#(app(X1,X2)) | → | app#(mark(X1),mark(X2)) | (52) |
mark#(app(X1,X2)) | → | mark#(X1) | (53) |
mark#(app(X1,X2)) | → | mark#(X2) | (54) |
mark#(nil) | → | active#(nil) | (55) |
mark#(cons(X1,X2)) | → | active#(cons(mark(X1),X2)) | (56) |
mark#(cons(X1,X2)) | → | cons#(mark(X1),X2) | (57) |
mark#(cons(X1,X2)) | → | mark#(X1) | (58) |
mark#(from(X)) | → | active#(from(mark(X))) | (59) |
mark#(from(X)) | → | from#(mark(X)) | (60) |
mark#(from(X)) | → | mark#(X) | (61) |
mark#(s(X)) | → | active#(s(mark(X))) | (62) |
mark#(s(X)) | → | s#(mark(X)) | (63) |
mark#(s(X)) | → | mark#(X) | (64) |
mark#(zWadr(X1,X2)) | → | active#(zWadr(mark(X1),mark(X2))) | (65) |
mark#(zWadr(X1,X2)) | → | zWadr#(mark(X1),mark(X2)) | (66) |
mark#(zWadr(X1,X2)) | → | mark#(X1) | (67) |
mark#(zWadr(X1,X2)) | → | mark#(X2) | (68) |
mark#(prefix(X)) | → | active#(prefix(mark(X))) | (69) |
mark#(prefix(X)) | → | prefix#(mark(X)) | (70) |
mark#(prefix(X)) | → | mark#(X) | (71) |
app#(mark(X1),X2) | → | app#(X1,X2) | (72) |
app#(X1,mark(X2)) | → | app#(X1,X2) | (73) |
app#(active(X1),X2) | → | app#(X1,X2) | (74) |
app#(X1,active(X2)) | → | app#(X1,X2) | (75) |
cons#(mark(X1),X2) | → | cons#(X1,X2) | (76) |
cons#(X1,mark(X2)) | → | cons#(X1,X2) | (77) |
cons#(active(X1),X2) | → | cons#(X1,X2) | (78) |
cons#(X1,active(X2)) | → | cons#(X1,X2) | (79) |
from#(mark(X)) | → | from#(X) | (80) |
from#(active(X)) | → | from#(X) | (81) |
s#(mark(X)) | → | s#(X) | (82) |
s#(active(X)) | → | s#(X) | (83) |
zWadr#(mark(X1),X2) | → | zWadr#(X1,X2) | (84) |
zWadr#(X1,mark(X2)) | → | zWadr#(X1,X2) | (85) |
zWadr#(active(X1),X2) | → | zWadr#(X1,X2) | (86) |
zWadr#(X1,active(X2)) | → | zWadr#(X1,X2) | (87) |
prefix#(mark(X)) | → | prefix#(X) | (88) |
prefix#(active(X)) | → | prefix#(X) | (89) |
The dependency pairs are split into 7 components.
mark#(app(X1,X2)) | → | active#(app(mark(X1),mark(X2))) | (51) |
active#(app(nil,YS)) | → | mark#(YS) | (33) |
mark#(app(X1,X2)) | → | mark#(X1) | (53) |
mark#(app(X1,X2)) | → | mark#(X2) | (54) |
mark#(cons(X1,X2)) | → | active#(cons(mark(X1),X2)) | (56) |
active#(app(cons(X,XS),YS)) | → | mark#(cons(X,app(XS,YS))) | (34) |
mark#(cons(X1,X2)) | → | mark#(X1) | (58) |
mark#(from(X)) | → | active#(from(mark(X))) | (59) |
active#(from(X)) | → | mark#(cons(X,from(s(X)))) | (37) |
active#(zWadr(cons(X,XS),cons(Y,YS))) | → | mark#(cons(app(Y,cons(X,nil)),zWadr(XS,YS))) | (43) |
active#(prefix(L)) | → | mark#(cons(nil,zWadr(L,prefix(L)))) | (48) |
mark#(from(X)) | → | mark#(X) | (61) |
mark#(s(X)) | → | active#(s(mark(X))) | (62) |
mark#(s(X)) | → | mark#(X) | (64) |
mark#(zWadr(X1,X2)) | → | active#(zWadr(mark(X1),mark(X2))) | (65) |
mark#(zWadr(X1,X2)) | → | mark#(X1) | (67) |
mark#(zWadr(X1,X2)) | → | mark#(X2) | (68) |
mark#(prefix(X)) | → | active#(prefix(mark(X))) | (69) |
mark#(prefix(X)) | → | mark#(X) | (71) |
prec(app) | = | 1 | weight(app) | = | 1 | ||||
prec(nil) | = | 2 | weight(nil) | = | 1 | ||||
prec(zWadr) | = | 0 | weight(zWadr) | = | 2 |
π(mark#) | = | 1 |
π(app) | = | [1,2] |
π(active#) | = | 1 |
π(mark) | = | 1 |
π(nil) | = | [] |
π(cons) | = | 1 |
π(from) | = | 1 |
π(zWadr) | = | [1,2] |
π(prefix) | = | 1 |
π(s) | = | 1 |
π(active) | = | 1 |
active#(app(nil,YS)) | → | mark#(YS) | (33) |
mark#(app(X1,X2)) | → | mark#(X1) | (53) |
mark#(app(X1,X2)) | → | mark#(X2) | (54) |
active#(app(cons(X,XS),YS)) | → | mark#(cons(X,app(XS,YS))) | (34) |
active#(zWadr(cons(X,XS),cons(Y,YS))) | → | mark#(cons(app(Y,cons(X,nil)),zWadr(XS,YS))) | (43) |
mark#(zWadr(X1,X2)) | → | mark#(X1) | (67) |
mark#(zWadr(X1,X2)) | → | mark#(X2) | (68) |
prec(app) | = | 2 | weight(app) | = | 1 | ||||
prec(nil) | = | 3 | weight(nil) | = | 1 | ||||
prec(s) | = | 0 | weight(s) | = | 1 | ||||
prec(zWadr) | = | 1 | weight(zWadr) | = | 2 |
π(mark#) | = | 1 |
π(app) | = | [1,2] |
π(active#) | = | 1 |
π(mark) | = | 1 |
π(cons) | = | 1 |
π(from) | = | 1 |
π(prefix) | = | 1 |
π(nil) | = | [] |
π(s) | = | [1] |
π(zWadr) | = | [1,2] |
π(active) | = | 1 |
mark#(s(X)) | → | mark#(X) | (64) |
prec(app) | = | 2 | weight(app) | = | 1 | ||||
prec(prefix) | = | 3 | weight(prefix) | = | 2 | ||||
prec(nil) | = | 4 | weight(nil) | = | 2 | ||||
prec(s) | = | 0 | weight(s) | = | 1 | ||||
prec(zWadr) | = | 1 | weight(zWadr) | = | 2 |
π(mark#) | = | 1 |
π(app) | = | [1,2] |
π(active#) | = | 1 |
π(mark) | = | 1 |
π(cons) | = | 1 |
π(from) | = | 1 |
π(prefix) | = | [1] |
π(nil) | = | [] |
π(s) | = | [] |
π(zWadr) | = | [1,2] |
π(active) | = | 1 |
active#(prefix(L)) | → | mark#(cons(nil,zWadr(L,prefix(L)))) | (48) |
mark#(prefix(X)) | → | mark#(X) | (71) |
prec(app) | = | 2 | weight(app) | = | 1 | ||||
prec(from) | = | 4 | weight(from) | = | 1 | ||||
prec(s) | = | 0 | weight(s) | = | 1 | ||||
prec(zWadr) | = | 1 | weight(zWadr) | = | 2 | ||||
prec(prefix) | = | 3 | weight(prefix) | = | 3 | ||||
prec(nil) | = | 5 | weight(nil) | = | 2 |
π(mark#) | = | 1 |
π(app) | = | [1,2] |
π(active#) | = | 1 |
π(mark) | = | 1 |
π(cons) | = | 1 |
π(from) | = | [1] |
π(s) | = | [] |
π(zWadr) | = | [1,2] |
π(prefix) | = | [] |
π(active) | = | 1 |
π(nil) | = | [] |
active#(from(X)) | → | mark#(cons(X,from(s(X)))) | (37) |
mark#(from(X)) | → | mark#(X) | (61) |
The dependency pairs are split into 1 component.
mark#(cons(X1,X2)) | → | mark#(X1) | (58) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
cons(mark(x0),x1) |
cons(x0,mark(x1)) |
cons(active(x0),x1) |
cons(x0,active(x1)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
mark#(cons(X1,X2)) | → | mark#(X1) | (58) |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
app#(X1,mark(X2)) | → | app#(X1,X2) | (73) |
app#(mark(X1),X2) | → | app#(X1,X2) | (72) |
app#(active(X1),X2) | → | app#(X1,X2) | (74) |
app#(X1,active(X2)) | → | app#(X1,X2) | (75) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
active(app(nil,x0)) |
active(app(cons(x0,x1),x2)) |
active(from(x0)) |
active(zWadr(nil,x0)) |
active(zWadr(x0,nil)) |
active(zWadr(cons(x0,x1),cons(x2,x3))) |
active(prefix(x0)) |
mark(app(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
mark(s(x0)) |
mark(zWadr(x0,x1)) |
mark(prefix(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
app#(X1,mark(X2)) | → | app#(X1,X2) | (73) |
1 | ≥ | 1 | |
2 | > | 2 | |
app#(mark(X1),X2) | → | app#(X1,X2) | (72) |
1 | > | 1 | |
2 | ≥ | 2 | |
app#(active(X1),X2) | → | app#(X1,X2) | (74) |
1 | > | 1 | |
2 | ≥ | 2 | |
app#(X1,active(X2)) | → | app#(X1,X2) | (75) |
1 | ≥ | 1 | |
2 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
cons#(X1,mark(X2)) | → | cons#(X1,X2) | (77) |
cons#(mark(X1),X2) | → | cons#(X1,X2) | (76) |
cons#(active(X1),X2) | → | cons#(X1,X2) | (78) |
cons#(X1,active(X2)) | → | cons#(X1,X2) | (79) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
active(app(nil,x0)) |
active(app(cons(x0,x1),x2)) |
active(from(x0)) |
active(zWadr(nil,x0)) |
active(zWadr(x0,nil)) |
active(zWadr(cons(x0,x1),cons(x2,x3))) |
active(prefix(x0)) |
mark(app(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
mark(s(x0)) |
mark(zWadr(x0,x1)) |
mark(prefix(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
cons#(X1,mark(X2)) | → | cons#(X1,X2) | (77) |
1 | ≥ | 1 | |
2 | > | 2 | |
cons#(mark(X1),X2) | → | cons#(X1,X2) | (76) |
1 | > | 1 | |
2 | ≥ | 2 | |
cons#(active(X1),X2) | → | cons#(X1,X2) | (78) |
1 | > | 1 | |
2 | ≥ | 2 | |
cons#(X1,active(X2)) | → | cons#(X1,X2) | (79) |
1 | ≥ | 1 | |
2 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
from#(active(X)) | → | from#(X) | (81) |
from#(mark(X)) | → | from#(X) | (80) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
active(app(nil,x0)) |
active(app(cons(x0,x1),x2)) |
active(from(x0)) |
active(zWadr(nil,x0)) |
active(zWadr(x0,nil)) |
active(zWadr(cons(x0,x1),cons(x2,x3))) |
active(prefix(x0)) |
mark(app(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
mark(s(x0)) |
mark(zWadr(x0,x1)) |
mark(prefix(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
from#(active(X)) | → | from#(X) | (81) |
1 | > | 1 | |
from#(mark(X)) | → | from#(X) | (80) |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
s#(active(X)) | → | s#(X) | (83) |
s#(mark(X)) | → | s#(X) | (82) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
active(app(nil,x0)) |
active(app(cons(x0,x1),x2)) |
active(from(x0)) |
active(zWadr(nil,x0)) |
active(zWadr(x0,nil)) |
active(zWadr(cons(x0,x1),cons(x2,x3))) |
active(prefix(x0)) |
mark(app(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
mark(s(x0)) |
mark(zWadr(x0,x1)) |
mark(prefix(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
s#(active(X)) | → | s#(X) | (83) |
1 | > | 1 | |
s#(mark(X)) | → | s#(X) | (82) |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
zWadr#(X1,mark(X2)) | → | zWadr#(X1,X2) | (85) |
zWadr#(mark(X1),X2) | → | zWadr#(X1,X2) | (84) |
zWadr#(active(X1),X2) | → | zWadr#(X1,X2) | (86) |
zWadr#(X1,active(X2)) | → | zWadr#(X1,X2) | (87) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
active(app(nil,x0)) |
active(app(cons(x0,x1),x2)) |
active(from(x0)) |
active(zWadr(nil,x0)) |
active(zWadr(x0,nil)) |
active(zWadr(cons(x0,x1),cons(x2,x3))) |
active(prefix(x0)) |
mark(app(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
mark(s(x0)) |
mark(zWadr(x0,x1)) |
mark(prefix(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
zWadr#(X1,mark(X2)) | → | zWadr#(X1,X2) | (85) |
1 | ≥ | 1 | |
2 | > | 2 | |
zWadr#(mark(X1),X2) | → | zWadr#(X1,X2) | (84) |
1 | > | 1 | |
2 | ≥ | 2 | |
zWadr#(active(X1),X2) | → | zWadr#(X1,X2) | (86) |
1 | > | 1 | |
2 | ≥ | 2 | |
zWadr#(X1,active(X2)) | → | zWadr#(X1,X2) | (87) |
1 | ≥ | 1 | |
2 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
prefix#(active(X)) | → | prefix#(X) | (89) |
prefix#(mark(X)) | → | prefix#(X) | (88) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
active(app(nil,x0)) |
active(app(cons(x0,x1),x2)) |
active(from(x0)) |
active(zWadr(nil,x0)) |
active(zWadr(x0,nil)) |
active(zWadr(cons(x0,x1),cons(x2,x3))) |
active(prefix(x0)) |
mark(app(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
mark(s(x0)) |
mark(zWadr(x0,x1)) |
mark(prefix(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
prefix#(active(X)) | → | prefix#(X) | (89) |
1 | > | 1 | |
prefix#(mark(X)) | → | prefix#(X) | (88) |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.