The rewrite relation of the following TRS is considered.
active(zeros) | → | mark(cons(0,zeros)) | (1) |
active(and(tt,X)) | → | mark(X) | (2) |
active(length(nil)) | → | mark(0) | (3) |
active(length(cons(N,L))) | → | mark(s(length(L))) | (4) |
active(take(0,IL)) | → | mark(nil) | (5) |
active(take(s(M),cons(N,IL))) | → | mark(cons(N,take(M,IL))) | (6) |
mark(zeros) | → | active(zeros) | (7) |
mark(cons(X1,X2)) | → | active(cons(mark(X1),X2)) | (8) |
mark(0) | → | active(0) | (9) |
mark(and(X1,X2)) | → | active(and(mark(X1),X2)) | (10) |
mark(tt) | → | active(tt) | (11) |
mark(length(X)) | → | active(length(mark(X))) | (12) |
mark(nil) | → | active(nil) | (13) |
mark(s(X)) | → | active(s(mark(X))) | (14) |
mark(take(X1,X2)) | → | active(take(mark(X1),mark(X2))) | (15) |
cons(mark(X1),X2) | → | cons(X1,X2) | (16) |
cons(X1,mark(X2)) | → | cons(X1,X2) | (17) |
cons(active(X1),X2) | → | cons(X1,X2) | (18) |
cons(X1,active(X2)) | → | cons(X1,X2) | (19) |
and(mark(X1),X2) | → | and(X1,X2) | (20) |
and(X1,mark(X2)) | → | and(X1,X2) | (21) |
and(active(X1),X2) | → | and(X1,X2) | (22) |
and(X1,active(X2)) | → | and(X1,X2) | (23) |
length(mark(X)) | → | length(X) | (24) |
length(active(X)) | → | length(X) | (25) |
s(mark(X)) | → | s(X) | (26) |
s(active(X)) | → | s(X) | (27) |
take(mark(X1),X2) | → | take(X1,X2) | (28) |
take(X1,mark(X2)) | → | take(X1,X2) | (29) |
take(active(X1),X2) | → | take(X1,X2) | (30) |
take(X1,active(X2)) | → | take(X1,X2) | (31) |
active(and(tt,X)) | → | mark(X) | (2) |
active(length(nil)) | → | mark(0) | (3) |
active(take(0,IL)) | → | mark(nil) | (5) |
active#(zeros) | → | mark#(cons(0,zeros)) | (32) |
active#(zeros) | → | cons#(0,zeros) | (33) |
active#(length(cons(N,L))) | → | mark#(s(length(L))) | (34) |
active#(length(cons(N,L))) | → | s#(length(L)) | (35) |
active#(length(cons(N,L))) | → | length#(L) | (36) |
active#(take(s(M),cons(N,IL))) | → | mark#(cons(N,take(M,IL))) | (37) |
active#(take(s(M),cons(N,IL))) | → | cons#(N,take(M,IL)) | (38) |
active#(take(s(M),cons(N,IL))) | → | take#(M,IL) | (39) |
mark#(zeros) | → | active#(zeros) | (40) |
mark#(cons(X1,X2)) | → | active#(cons(mark(X1),X2)) | (41) |
mark#(cons(X1,X2)) | → | cons#(mark(X1),X2) | (42) |
mark#(cons(X1,X2)) | → | mark#(X1) | (43) |
mark#(0) | → | active#(0) | (44) |
mark#(and(X1,X2)) | → | active#(and(mark(X1),X2)) | (45) |
mark#(and(X1,X2)) | → | and#(mark(X1),X2) | (46) |
mark#(and(X1,X2)) | → | mark#(X1) | (47) |
mark#(tt) | → | active#(tt) | (48) |
mark#(length(X)) | → | active#(length(mark(X))) | (49) |
mark#(length(X)) | → | length#(mark(X)) | (50) |
mark#(length(X)) | → | mark#(X) | (51) |
mark#(nil) | → | active#(nil) | (52) |
mark#(s(X)) | → | active#(s(mark(X))) | (53) |
mark#(s(X)) | → | s#(mark(X)) | (54) |
mark#(s(X)) | → | mark#(X) | (55) |
mark#(take(X1,X2)) | → | active#(take(mark(X1),mark(X2))) | (56) |
mark#(take(X1,X2)) | → | take#(mark(X1),mark(X2)) | (57) |
mark#(take(X1,X2)) | → | mark#(X1) | (58) |
mark#(take(X1,X2)) | → | mark#(X2) | (59) |
cons#(mark(X1),X2) | → | cons#(X1,X2) | (60) |
cons#(X1,mark(X2)) | → | cons#(X1,X2) | (61) |
cons#(active(X1),X2) | → | cons#(X1,X2) | (62) |
cons#(X1,active(X2)) | → | cons#(X1,X2) | (63) |
and#(mark(X1),X2) | → | and#(X1,X2) | (64) |
and#(X1,mark(X2)) | → | and#(X1,X2) | (65) |
and#(active(X1),X2) | → | and#(X1,X2) | (66) |
and#(X1,active(X2)) | → | and#(X1,X2) | (67) |
length#(mark(X)) | → | length#(X) | (68) |
length#(active(X)) | → | length#(X) | (69) |
s#(mark(X)) | → | s#(X) | (70) |
s#(active(X)) | → | s#(X) | (71) |
take#(mark(X1),X2) | → | take#(X1,X2) | (72) |
take#(X1,mark(X2)) | → | take#(X1,X2) | (73) |
take#(active(X1),X2) | → | take#(X1,X2) | (74) |
take#(X1,active(X2)) | → | take#(X1,X2) | (75) |
active#(zeros) | → | cons#(0,zeros) | (33) |
active#(length(cons(N,L))) | → | s#(length(L)) | (35) |
active#(length(cons(N,L))) | → | length#(L) | (36) |
active#(take(s(M),cons(N,IL))) | → | cons#(N,take(M,IL)) | (38) |
active#(take(s(M),cons(N,IL))) | → | take#(M,IL) | (39) |
mark#(cons(X1,X2)) | → | cons#(mark(X1),X2) | (42) |
mark#(0) | → | active#(0) | (44) |
mark#(and(X1,X2)) | → | and#(mark(X1),X2) | (46) |
mark#(tt) | → | active#(tt) | (48) |
mark#(length(X)) | → | length#(mark(X)) | (50) |
mark#(nil) | → | active#(nil) | (52) |
mark#(s(X)) | → | s#(mark(X)) | (54) |
mark#(take(X1,X2)) | → | take#(mark(X1),mark(X2)) | (57) |
cons#(mark(X1),X2) | → | cons#(X1,X2) | (60) |
cons#(X1,mark(X2)) | → | cons#(X1,X2) | (61) |
cons#(active(X1),X2) | → | cons#(X1,X2) | (62) |
cons#(X1,active(X2)) | → | cons#(X1,X2) | (63) |
and#(mark(X1),X2) | → | and#(X1,X2) | (64) |
and#(X1,mark(X2)) | → | and#(X1,X2) | (65) |
and#(active(X1),X2) | → | and#(X1,X2) | (66) |
and#(X1,active(X2)) | → | and#(X1,X2) | (67) |
length#(mark(X)) | → | length#(X) | (68) |
length#(active(X)) | → | length#(X) | (69) |
s#(mark(X)) | → | s#(X) | (70) |
s#(active(X)) | → | s#(X) | (71) |
take#(mark(X1),X2) | → | take#(X1,X2) | (72) |
take#(X1,mark(X2)) | → | take#(X1,X2) | (73) |
take#(active(X1),X2) | → | take#(X1,X2) | (74) |
take#(X1,active(X2)) | → | take#(X1,X2) | (75) |
mark#(and(X1,X2)) | → | mark#(X1) | (47) |
mark#(length(X)) | → | mark#(X) | (51) |
mark#(take(X1,X2)) | → | mark#(X1) | (58) |
mark#(take(X1,X2)) | → | mark#(X2) | (59) |
active#(zeros) | → | mark#(cons(0,zeros)) | (32) |
mark#(zeros) | → | active#(zeros) | (40) |
active#(take(s(M),cons(N,IL))) | → | mark#(cons(N,take(M,IL))) | (37) |
mark#(cons(X1,X2)) | → | active#(cons(mark(X1),X2)) | (41) |
mark#(and(X1,X2)) | → | active#(and(mark(X1),X2)) | (45) |
mark#(s(X)) | → | active#(s(mark(X))) | (53) |
mark#(take(X1,X2)) | → | active#(take(mark(X1),mark(X2))) | (56) |
mark#(cons(X1,X2)) | → | mark#(X1) | (43) |
mark#(length(x0)) | → | active#(length(x0)) | (76) |
mark#(length(zeros)) | → | active#(length(active(zeros))) | (77) |
mark#(length(cons(x0,x1))) | → | active#(length(active(cons(mark(x0),x1)))) | (78) |
mark#(length(0)) | → | active#(length(active(0))) | (79) |
mark#(length(and(x0,x1))) | → | active#(length(active(and(mark(x0),x1)))) | (80) |
mark#(length(tt)) | → | active#(length(active(tt))) | (81) |
mark#(length(length(x0))) | → | active#(length(active(length(mark(x0))))) | (82) |
mark#(length(nil)) | → | active#(length(active(nil))) | (83) |
mark#(length(s(x0))) | → | active#(length(active(s(mark(x0))))) | (84) |
mark#(length(take(x0,x1))) | → | active#(length(active(take(mark(x0),mark(x1))))) | (85) |
mark#(length(0)) | → | active#(length(active(0))) | (79) |
mark#(length(and(x0,x1))) | → | active#(length(active(and(mark(x0),x1)))) | (80) |
mark#(length(tt)) | → | active#(length(active(tt))) | (81) |
mark#(length(nil)) | → | active#(length(active(nil))) | (83) |
mark#(length(length(x0))) | → | active#(length(active(length(mark(x0))))) | (82) |
mark#(length(cons(x0,x1))) | → | active#(length(active(cons(mark(x0),x1)))) | (78) |
mark#(length(x0)) | → | active#(length(x0)) | (76) |
mark#(length(s(x0))) | → | active#(length(active(s(mark(x0))))) | (84) |
t0 | = | mark#(s(length(zeros))) |
→P | mark#(length(zeros)) | |
→P | active#(length(active(zeros))) | |
→R | active#(length(mark(cons(0,zeros)))) | |
→R | active#(length(cons(0,zeros))) | |
→P | mark#(s(length(zeros))) | |
= | t5 |