The rewrite relation of the following TRS is considered.
active(and(true,X)) | → | mark(X) | (1) |
active(and(false,Y)) | → | mark(false) | (2) |
active(if(true,X,Y)) | → | mark(X) | (3) |
active(if(false,X,Y)) | → | mark(Y) | (4) |
active(add(0,X)) | → | mark(X) | (5) |
active(add(s(X),Y)) | → | mark(s(add(X,Y))) | (6) |
active(first(0,X)) | → | mark(nil) | (7) |
active(first(s(X),cons(Y,Z))) | → | mark(cons(Y,first(X,Z))) | (8) |
active(from(X)) | → | mark(cons(X,from(s(X)))) | (9) |
mark(and(X1,X2)) | → | active(and(mark(X1),X2)) | (10) |
mark(true) | → | active(true) | (11) |
mark(false) | → | active(false) | (12) |
mark(if(X1,X2,X3)) | → | active(if(mark(X1),X2,X3)) | (13) |
mark(add(X1,X2)) | → | active(add(mark(X1),X2)) | (14) |
mark(0) | → | active(0) | (15) |
mark(s(X)) | → | active(s(X)) | (16) |
mark(first(X1,X2)) | → | active(first(mark(X1),mark(X2))) | (17) |
mark(nil) | → | active(nil) | (18) |
mark(cons(X1,X2)) | → | active(cons(X1,X2)) | (19) |
mark(from(X)) | → | active(from(X)) | (20) |
and(mark(X1),X2) | → | and(X1,X2) | (21) |
and(X1,mark(X2)) | → | and(X1,X2) | (22) |
and(active(X1),X2) | → | and(X1,X2) | (23) |
and(X1,active(X2)) | → | and(X1,X2) | (24) |
if(mark(X1),X2,X3) | → | if(X1,X2,X3) | (25) |
if(X1,mark(X2),X3) | → | if(X1,X2,X3) | (26) |
if(X1,X2,mark(X3)) | → | if(X1,X2,X3) | (27) |
if(active(X1),X2,X3) | → | if(X1,X2,X3) | (28) |
if(X1,active(X2),X3) | → | if(X1,X2,X3) | (29) |
if(X1,X2,active(X3)) | → | if(X1,X2,X3) | (30) |
add(mark(X1),X2) | → | add(X1,X2) | (31) |
add(X1,mark(X2)) | → | add(X1,X2) | (32) |
add(active(X1),X2) | → | add(X1,X2) | (33) |
add(X1,active(X2)) | → | add(X1,X2) | (34) |
s(mark(X)) | → | s(X) | (35) |
s(active(X)) | → | s(X) | (36) |
first(mark(X1),X2) | → | first(X1,X2) | (37) |
first(X1,mark(X2)) | → | first(X1,X2) | (38) |
first(active(X1),X2) | → | first(X1,X2) | (39) |
first(X1,active(X2)) | → | first(X1,X2) | (40) |
cons(mark(X1),X2) | → | cons(X1,X2) | (41) |
cons(X1,mark(X2)) | → | cons(X1,X2) | (42) |
cons(active(X1),X2) | → | cons(X1,X2) | (43) |
cons(X1,active(X2)) | → | cons(X1,X2) | (44) |
from(mark(X)) | → | from(X) | (45) |
from(active(X)) | → | from(X) | (46) |
active#(and(true,X)) | → | mark#(X) | (47) |
active#(and(false,Y)) | → | mark#(false) | (48) |
active#(if(true,X,Y)) | → | mark#(X) | (49) |
active#(if(false,X,Y)) | → | mark#(Y) | (50) |
active#(add(0,X)) | → | mark#(X) | (51) |
active#(add(s(X),Y)) | → | mark#(s(add(X,Y))) | (52) |
active#(add(s(X),Y)) | → | s#(add(X,Y)) | (53) |
active#(add(s(X),Y)) | → | add#(X,Y) | (54) |
active#(first(0,X)) | → | mark#(nil) | (55) |
active#(first(s(X),cons(Y,Z))) | → | mark#(cons(Y,first(X,Z))) | (56) |
active#(first(s(X),cons(Y,Z))) | → | cons#(Y,first(X,Z)) | (57) |
active#(first(s(X),cons(Y,Z))) | → | first#(X,Z) | (58) |
active#(from(X)) | → | mark#(cons(X,from(s(X)))) | (59) |
active#(from(X)) | → | cons#(X,from(s(X))) | (60) |
active#(from(X)) | → | from#(s(X)) | (61) |
active#(from(X)) | → | s#(X) | (62) |
mark#(and(X1,X2)) | → | active#(and(mark(X1),X2)) | (63) |
mark#(and(X1,X2)) | → | and#(mark(X1),X2) | (64) |
mark#(and(X1,X2)) | → | mark#(X1) | (65) |
mark#(true) | → | active#(true) | (66) |
mark#(false) | → | active#(false) | (67) |
mark#(if(X1,X2,X3)) | → | active#(if(mark(X1),X2,X3)) | (68) |
mark#(if(X1,X2,X3)) | → | if#(mark(X1),X2,X3) | (69) |
mark#(if(X1,X2,X3)) | → | mark#(X1) | (70) |
mark#(add(X1,X2)) | → | active#(add(mark(X1),X2)) | (71) |
mark#(add(X1,X2)) | → | add#(mark(X1),X2) | (72) |
mark#(add(X1,X2)) | → | mark#(X1) | (73) |
mark#(0) | → | active#(0) | (74) |
mark#(s(X)) | → | active#(s(X)) | (75) |
mark#(first(X1,X2)) | → | active#(first(mark(X1),mark(X2))) | (76) |
mark#(first(X1,X2)) | → | first#(mark(X1),mark(X2)) | (77) |
mark#(first(X1,X2)) | → | mark#(X1) | (78) |
mark#(first(X1,X2)) | → | mark#(X2) | (79) |
mark#(nil) | → | active#(nil) | (80) |
mark#(cons(X1,X2)) | → | active#(cons(X1,X2)) | (81) |
mark#(from(X)) | → | active#(from(X)) | (82) |
and#(mark(X1),X2) | → | and#(X1,X2) | (83) |
and#(X1,mark(X2)) | → | and#(X1,X2) | (84) |
and#(active(X1),X2) | → | and#(X1,X2) | (85) |
and#(X1,active(X2)) | → | and#(X1,X2) | (86) |
if#(mark(X1),X2,X3) | → | if#(X1,X2,X3) | (87) |
if#(X1,mark(X2),X3) | → | if#(X1,X2,X3) | (88) |
if#(X1,X2,mark(X3)) | → | if#(X1,X2,X3) | (89) |
if#(active(X1),X2,X3) | → | if#(X1,X2,X3) | (90) |
if#(X1,active(X2),X3) | → | if#(X1,X2,X3) | (91) |
if#(X1,X2,active(X3)) | → | if#(X1,X2,X3) | (92) |
add#(mark(X1),X2) | → | add#(X1,X2) | (93) |
add#(X1,mark(X2)) | → | add#(X1,X2) | (94) |
add#(active(X1),X2) | → | add#(X1,X2) | (95) |
add#(X1,active(X2)) | → | add#(X1,X2) | (96) |
s#(mark(X)) | → | s#(X) | (97) |
s#(active(X)) | → | s#(X) | (98) |
first#(mark(X1),X2) | → | first#(X1,X2) | (99) |
first#(X1,mark(X2)) | → | first#(X1,X2) | (100) |
first#(active(X1),X2) | → | first#(X1,X2) | (101) |
first#(X1,active(X2)) | → | first#(X1,X2) | (102) |
cons#(mark(X1),X2) | → | cons#(X1,X2) | (103) |
cons#(X1,mark(X2)) | → | cons#(X1,X2) | (104) |
cons#(active(X1),X2) | → | cons#(X1,X2) | (105) |
cons#(X1,active(X2)) | → | cons#(X1,X2) | (106) |
from#(mark(X)) | → | from#(X) | (107) |
from#(active(X)) | → | from#(X) | (108) |
The dependency pairs are split into 8 components.
mark#(and(X1,X2)) | → | active#(and(mark(X1),X2)) | (63) |
active#(and(true,X)) | → | mark#(X) | (47) |
mark#(and(X1,X2)) | → | mark#(X1) | (65) |
mark#(if(X1,X2,X3)) | → | active#(if(mark(X1),X2,X3)) | (68) |
active#(if(true,X,Y)) | → | mark#(X) | (49) |
mark#(if(X1,X2,X3)) | → | mark#(X1) | (70) |
mark#(add(X1,X2)) | → | active#(add(mark(X1),X2)) | (71) |
active#(if(false,X,Y)) | → | mark#(Y) | (50) |
mark#(add(X1,X2)) | → | mark#(X1) | (73) |
mark#(first(X1,X2)) | → | active#(first(mark(X1),mark(X2))) | (76) |
active#(add(0,X)) | → | mark#(X) | (51) |
mark#(first(X1,X2)) | → | mark#(X1) | (78) |
mark#(first(X1,X2)) | → | mark#(X2) | (79) |
We restrict the rewrite rules to the following usable rules of the DP problem.
mark(and(X1,X2)) | → | active(and(mark(X1),X2)) | (10) |
active(and(true,X)) | → | mark(X) | (1) |
mark(if(X1,X2,X3)) | → | active(if(mark(X1),X2,X3)) | (13) |
active(if(true,X,Y)) | → | mark(X) | (3) |
mark(add(X1,X2)) | → | active(add(mark(X1),X2)) | (14) |
active(if(false,X,Y)) | → | mark(Y) | (4) |
mark(first(X1,X2)) | → | active(first(mark(X1),mark(X2))) | (17) |
active(add(0,X)) | → | mark(X) | (5) |
mark(true) | → | active(true) | (11) |
mark(false) | → | active(false) | (12) |
mark(0) | → | active(0) | (15) |
mark(s(X)) | → | active(s(X)) | (16) |
mark(nil) | → | active(nil) | (18) |
mark(cons(X1,X2)) | → | active(cons(X1,X2)) | (19) |
mark(from(X)) | → | active(from(X)) | (20) |
first(X1,mark(X2)) | → | first(X1,X2) | (38) |
first(mark(X1),X2) | → | first(X1,X2) | (37) |
first(active(X1),X2) | → | first(X1,X2) | (39) |
first(X1,active(X2)) | → | first(X1,X2) | (40) |
active(from(X)) | → | mark(cons(X,from(s(X)))) | (9) |
active(and(false,Y)) | → | mark(false) | (2) |
active(add(s(X),Y)) | → | mark(s(add(X,Y))) | (6) |
active(first(0,X)) | → | mark(nil) | (7) |
active(first(s(X),cons(Y,Z))) | → | mark(cons(Y,first(X,Z))) | (8) |
and(X1,mark(X2)) | → | and(X1,X2) | (22) |
and(mark(X1),X2) | → | and(X1,X2) | (21) |
and(active(X1),X2) | → | and(X1,X2) | (23) |
and(X1,active(X2)) | → | and(X1,X2) | (24) |
if(X1,mark(X2),X3) | → | if(X1,X2,X3) | (26) |
if(mark(X1),X2,X3) | → | if(X1,X2,X3) | (25) |
if(X1,X2,mark(X3)) | → | if(X1,X2,X3) | (27) |
if(active(X1),X2,X3) | → | if(X1,X2,X3) | (28) |
if(X1,active(X2),X3) | → | if(X1,X2,X3) | (29) |
if(X1,X2,active(X3)) | → | if(X1,X2,X3) | (30) |
add(X1,mark(X2)) | → | add(X1,X2) | (32) |
add(mark(X1),X2) | → | add(X1,X2) | (31) |
add(active(X1),X2) | → | add(X1,X2) | (33) |
add(X1,active(X2)) | → | add(X1,X2) | (34) |
[mark#(x1)] | = | 1 |
[and(x1, x2)] | = | 1 |
[active#(x1)] | = | 1 · x1 |
[mark(x1)] | = | 0 |
[true] | = | 0 |
[if(x1, x2, x3)] | = | 1 |
[add(x1, x2)] | = | 1 |
[false] | = | 0 |
[first(x1, x2)] | = | 0 |
[0] | = | 0 |
[active(x1)] | = | 0 |
[s(x1)] | = | 0 |
[nil] | = | 0 |
[cons(x1, x2)] | = | 1 · x1 |
[from(x1)] | = | 1 · x1 |
and(X1,mark(X2)) | → | and(X1,X2) | (22) |
and(mark(X1),X2) | → | and(X1,X2) | (21) |
and(active(X1),X2) | → | and(X1,X2) | (23) |
and(X1,active(X2)) | → | and(X1,X2) | (24) |
if(X1,mark(X2),X3) | → | if(X1,X2,X3) | (26) |
if(mark(X1),X2,X3) | → | if(X1,X2,X3) | (25) |
if(X1,X2,mark(X3)) | → | if(X1,X2,X3) | (27) |
if(active(X1),X2,X3) | → | if(X1,X2,X3) | (28) |
if(X1,active(X2),X3) | → | if(X1,X2,X3) | (29) |
if(X1,X2,active(X3)) | → | if(X1,X2,X3) | (30) |
add(X1,mark(X2)) | → | add(X1,X2) | (32) |
add(mark(X1),X2) | → | add(X1,X2) | (31) |
add(active(X1),X2) | → | add(X1,X2) | (33) |
add(X1,active(X2)) | → | add(X1,X2) | (34) |
first(X1,mark(X2)) | → | first(X1,X2) | (38) |
first(mark(X1),X2) | → | first(X1,X2) | (37) |
first(active(X1),X2) | → | first(X1,X2) | (39) |
first(X1,active(X2)) | → | first(X1,X2) | (40) |
mark#(first(X1,X2)) | → | active#(first(mark(X1),mark(X2))) | (76) |
[mark#(x1)] | = | 1 + 1 · x1 |
[and(x1, x2)] | = | 1 · x1 + 1 · x2 |
[active#(x1)] | = | 1 · x1 |
[mark(x1)] | = | 1 · x1 |
[true] | = | 1 |
[if(x1, x2, x3)] | = | 1 + 1 · x1 + 1 · x2 + 1 · x3 |
[add(x1, x2)] | = | 1 · x1 + 1 · x2 |
[false] | = | 1 |
[0] | = | 1 |
[first(x1, x2)] | = | 1 · x1 + 1 · x2 |
[active(x1)] | = | 1 · x1 |
[s(x1)] | = | 0 |
[nil] | = | 0 |
[cons(x1, x2)] | = | 1 · x1 |
[from(x1)] | = | 1 · x1 |
mark#(and(X1,X2)) | → | active#(and(mark(X1),X2)) | (63) |
mark#(if(X1,X2,X3)) | → | active#(if(mark(X1),X2,X3)) | (68) |
active#(if(true,X,Y)) | → | mark#(X) | (49) |
mark#(if(X1,X2,X3)) | → | mark#(X1) | (70) |
mark#(add(X1,X2)) | → | active#(add(mark(X1),X2)) | (71) |
active#(if(false,X,Y)) | → | mark#(Y) | (50) |
The dependency pairs are split into 1 component.
mark#(add(X1,X2)) | → | mark#(X1) | (73) |
mark#(and(X1,X2)) | → | mark#(X1) | (65) |
mark#(first(X1,X2)) | → | mark#(X1) | (78) |
mark#(first(X1,X2)) | → | mark#(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.
and(mark(x0),x1) |
and(x0,mark(x1)) |
and(active(x0),x1) |
and(x0,active(x1)) |
add(mark(x0),x1) |
add(x0,mark(x1)) |
add(active(x0),x1) |
add(x0,active(x1)) |
first(mark(x0),x1) |
first(x0,mark(x1)) |
first(active(x0),x1) |
first(x0,active(x1)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
mark#(add(X1,X2)) | → | mark#(X1) | (73) |
1 | > | 1 | |
mark#(and(X1,X2)) | → | mark#(X1) | (65) |
1 | > | 1 | |
mark#(first(X1,X2)) | → | mark#(X1) | (78) |
1 | > | 1 | |
mark#(first(X1,X2)) | → | mark#(X2) | (79) |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
and#(X1,mark(X2)) | → | and#(X1,X2) | (84) |
and#(mark(X1),X2) | → | and#(X1,X2) | (83) |
and#(active(X1),X2) | → | and#(X1,X2) | (85) |
and#(X1,active(X2)) | → | and#(X1,X2) | (86) |
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(and(true,x0)) |
active(and(false,x0)) |
active(if(true,x0,x1)) |
active(if(false,x0,x1)) |
active(add(0,x0)) |
active(add(s(x0),x1)) |
active(first(0,x0)) |
active(first(s(x0),cons(x1,x2))) |
active(from(x0)) |
mark(and(x0,x1)) |
mark(true) |
mark(false) |
mark(if(x0,x1,x2)) |
mark(add(x0,x1)) |
mark(0) |
mark(s(x0)) |
mark(first(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
and#(X1,mark(X2)) | → | and#(X1,X2) | (84) |
1 | ≥ | 1 | |
2 | > | 2 | |
and#(mark(X1),X2) | → | and#(X1,X2) | (83) |
1 | > | 1 | |
2 | ≥ | 2 | |
and#(active(X1),X2) | → | and#(X1,X2) | (85) |
1 | > | 1 | |
2 | ≥ | 2 | |
and#(X1,active(X2)) | → | and#(X1,X2) | (86) |
1 | ≥ | 1 | |
2 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
if#(X1,mark(X2),X3) | → | if#(X1,X2,X3) | (88) |
if#(mark(X1),X2,X3) | → | if#(X1,X2,X3) | (87) |
if#(X1,X2,mark(X3)) | → | if#(X1,X2,X3) | (89) |
if#(active(X1),X2,X3) | → | if#(X1,X2,X3) | (90) |
if#(X1,active(X2),X3) | → | if#(X1,X2,X3) | (91) |
if#(X1,X2,active(X3)) | → | if#(X1,X2,X3) | (92) |
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(and(true,x0)) |
active(and(false,x0)) |
active(if(true,x0,x1)) |
active(if(false,x0,x1)) |
active(add(0,x0)) |
active(add(s(x0),x1)) |
active(first(0,x0)) |
active(first(s(x0),cons(x1,x2))) |
active(from(x0)) |
mark(and(x0,x1)) |
mark(true) |
mark(false) |
mark(if(x0,x1,x2)) |
mark(add(x0,x1)) |
mark(0) |
mark(s(x0)) |
mark(first(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
if#(X1,mark(X2),X3) | → | if#(X1,X2,X3) | (88) |
1 | ≥ | 1 | |
2 | > | 2 | |
3 | ≥ | 3 | |
if#(mark(X1),X2,X3) | → | if#(X1,X2,X3) | (87) |
1 | > | 1 | |
2 | ≥ | 2 | |
3 | ≥ | 3 | |
if#(X1,X2,mark(X3)) | → | if#(X1,X2,X3) | (89) |
1 | ≥ | 1 | |
2 | ≥ | 2 | |
3 | > | 3 | |
if#(active(X1),X2,X3) | → | if#(X1,X2,X3) | (90) |
1 | > | 1 | |
2 | ≥ | 2 | |
3 | ≥ | 3 | |
if#(X1,active(X2),X3) | → | if#(X1,X2,X3) | (91) |
1 | ≥ | 1 | |
2 | > | 2 | |
3 | ≥ | 3 | |
if#(X1,X2,active(X3)) | → | if#(X1,X2,X3) | (92) |
1 | ≥ | 1 | |
2 | ≥ | 2 | |
3 | > | 3 |
As there is no critical graph in the transitive closure, there are no infinite chains.
add#(X1,mark(X2)) | → | add#(X1,X2) | (94) |
add#(mark(X1),X2) | → | add#(X1,X2) | (93) |
add#(active(X1),X2) | → | add#(X1,X2) | (95) |
add#(X1,active(X2)) | → | add#(X1,X2) | (96) |
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(and(true,x0)) |
active(and(false,x0)) |
active(if(true,x0,x1)) |
active(if(false,x0,x1)) |
active(add(0,x0)) |
active(add(s(x0),x1)) |
active(first(0,x0)) |
active(first(s(x0),cons(x1,x2))) |
active(from(x0)) |
mark(and(x0,x1)) |
mark(true) |
mark(false) |
mark(if(x0,x1,x2)) |
mark(add(x0,x1)) |
mark(0) |
mark(s(x0)) |
mark(first(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
add#(X1,mark(X2)) | → | add#(X1,X2) | (94) |
1 | ≥ | 1 | |
2 | > | 2 | |
add#(mark(X1),X2) | → | add#(X1,X2) | (93) |
1 | > | 1 | |
2 | ≥ | 2 | |
add#(active(X1),X2) | → | add#(X1,X2) | (95) |
1 | > | 1 | |
2 | ≥ | 2 | |
add#(X1,active(X2)) | → | add#(X1,X2) | (96) |
1 | ≥ | 1 | |
2 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
s#(active(X)) | → | s#(X) | (98) |
s#(mark(X)) | → | s#(X) | (97) |
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(and(true,x0)) |
active(and(false,x0)) |
active(if(true,x0,x1)) |
active(if(false,x0,x1)) |
active(add(0,x0)) |
active(add(s(x0),x1)) |
active(first(0,x0)) |
active(first(s(x0),cons(x1,x2))) |
active(from(x0)) |
mark(and(x0,x1)) |
mark(true) |
mark(false) |
mark(if(x0,x1,x2)) |
mark(add(x0,x1)) |
mark(0) |
mark(s(x0)) |
mark(first(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
s#(active(X)) | → | s#(X) | (98) |
1 | > | 1 | |
s#(mark(X)) | → | s#(X) | (97) |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
first#(X1,mark(X2)) | → | first#(X1,X2) | (100) |
first#(mark(X1),X2) | → | first#(X1,X2) | (99) |
first#(active(X1),X2) | → | first#(X1,X2) | (101) |
first#(X1,active(X2)) | → | first#(X1,X2) | (102) |
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(and(true,x0)) |
active(and(false,x0)) |
active(if(true,x0,x1)) |
active(if(false,x0,x1)) |
active(add(0,x0)) |
active(add(s(x0),x1)) |
active(first(0,x0)) |
active(first(s(x0),cons(x1,x2))) |
active(from(x0)) |
mark(and(x0,x1)) |
mark(true) |
mark(false) |
mark(if(x0,x1,x2)) |
mark(add(x0,x1)) |
mark(0) |
mark(s(x0)) |
mark(first(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
first#(X1,mark(X2)) | → | first#(X1,X2) | (100) |
1 | ≥ | 1 | |
2 | > | 2 | |
first#(mark(X1),X2) | → | first#(X1,X2) | (99) |
1 | > | 1 | |
2 | ≥ | 2 | |
first#(active(X1),X2) | → | first#(X1,X2) | (101) |
1 | > | 1 | |
2 | ≥ | 2 | |
first#(X1,active(X2)) | → | first#(X1,X2) | (102) |
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) | (104) |
cons#(mark(X1),X2) | → | cons#(X1,X2) | (103) |
cons#(active(X1),X2) | → | cons#(X1,X2) | (105) |
cons#(X1,active(X2)) | → | cons#(X1,X2) | (106) |
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(and(true,x0)) |
active(and(false,x0)) |
active(if(true,x0,x1)) |
active(if(false,x0,x1)) |
active(add(0,x0)) |
active(add(s(x0),x1)) |
active(first(0,x0)) |
active(first(s(x0),cons(x1,x2))) |
active(from(x0)) |
mark(and(x0,x1)) |
mark(true) |
mark(false) |
mark(if(x0,x1,x2)) |
mark(add(x0,x1)) |
mark(0) |
mark(s(x0)) |
mark(first(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(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) | (104) |
1 | ≥ | 1 | |
2 | > | 2 | |
cons#(mark(X1),X2) | → | cons#(X1,X2) | (103) |
1 | > | 1 | |
2 | ≥ | 2 | |
cons#(active(X1),X2) | → | cons#(X1,X2) | (105) |
1 | > | 1 | |
2 | ≥ | 2 | |
cons#(X1,active(X2)) | → | cons#(X1,X2) | (106) |
1 | ≥ | 1 | |
2 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
from#(active(X)) | → | from#(X) | (108) |
from#(mark(X)) | → | from#(X) | (107) |
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(and(true,x0)) |
active(and(false,x0)) |
active(if(true,x0,x1)) |
active(if(false,x0,x1)) |
active(add(0,x0)) |
active(add(s(x0),x1)) |
active(first(0,x0)) |
active(first(s(x0),cons(x1,x2))) |
active(from(x0)) |
mark(and(x0,x1)) |
mark(true) |
mark(false) |
mark(if(x0,x1,x2)) |
mark(add(x0,x1)) |
mark(0) |
mark(s(x0)) |
mark(first(x0,x1)) |
mark(nil) |
mark(cons(x0,x1)) |
mark(from(x0)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
from#(active(X)) | → | from#(X) | (108) |
1 | > | 1 | |
from#(mark(X)) | → | from#(X) | (107) |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.