The rewrite relation of the following TRS is considered.
a__and(tt,T) | → | mark(T) | (1) |
a__isNatIList(IL) | → | a__isNatList(IL) | (2) |
a__isNat(0) | → | tt | (3) |
a__isNat(s(N)) | → | a__isNat(N) | (4) |
a__isNat(length(L)) | → | a__isNatList(L) | (5) |
a__isNatIList(zeros) | → | tt | (6) |
a__isNatIList(cons(N,IL)) | → | a__and(a__isNat(N),a__isNatIList(IL)) | (7) |
a__isNatList(nil) | → | tt | (8) |
a__isNatList(cons(N,L)) | → | a__and(a__isNat(N),a__isNatList(L)) | (9) |
a__isNatList(take(N,IL)) | → | a__and(a__isNat(N),a__isNatIList(IL)) | (10) |
a__zeros | → | cons(0,zeros) | (11) |
a__take(0,IL) | → | a__uTake1(a__isNatIList(IL)) | (12) |
a__uTake1(tt) | → | nil | (13) |
a__take(s(M),cons(N,IL)) | → | a__uTake2(a__and(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))),M,N,IL) | (14) |
a__uTake2(tt,M,N,IL) | → | cons(mark(N),take(M,IL)) | (15) |
a__length(cons(N,L)) | → | a__uLength(a__and(a__isNat(N),a__isNatList(L)),L) | (16) |
a__uLength(tt,L) | → | s(a__length(mark(L))) | (17) |
mark(and(X1,X2)) | → | a__and(mark(X1),mark(X2)) | (18) |
mark(isNatIList(X)) | → | a__isNatIList(X) | (19) |
mark(isNatList(X)) | → | a__isNatList(X) | (20) |
mark(isNat(X)) | → | a__isNat(X) | (21) |
mark(length(X)) | → | a__length(mark(X)) | (22) |
mark(zeros) | → | a__zeros | (23) |
mark(take(X1,X2)) | → | a__take(mark(X1),mark(X2)) | (24) |
mark(uTake1(X)) | → | a__uTake1(mark(X)) | (25) |
mark(uTake2(X1,X2,X3,X4)) | → | a__uTake2(mark(X1),X2,X3,X4) | (26) |
mark(uLength(X1,X2)) | → | a__uLength(mark(X1),X2) | (27) |
mark(tt) | → | tt | (28) |
mark(0) | → | 0 | (29) |
mark(s(X)) | → | s(mark(X)) | (30) |
mark(cons(X1,X2)) | → | cons(mark(X1),X2) | (31) |
mark(nil) | → | nil | (32) |
a__and(X1,X2) | → | and(X1,X2) | (33) |
a__isNatIList(X) | → | isNatIList(X) | (34) |
a__isNatList(X) | → | isNatList(X) | (35) |
a__isNat(X) | → | isNat(X) | (36) |
a__length(X) | → | length(X) | (37) |
a__zeros | → | zeros | (38) |
a__take(X1,X2) | → | take(X1,X2) | (39) |
a__uTake1(X) | → | uTake1(X) | (40) |
a__uTake2(X1,X2,X3,X4) | → | uTake2(X1,X2,X3,X4) | (41) |
a__uLength(X1,X2) | → | uLength(X1,X2) | (42) |
a__and#(tt,T) | → | mark#(T) | (43) |
a__isNatIList#(IL) | → | a__isNatList#(IL) | (44) |
a__isNat#(s(N)) | → | a__isNat#(N) | (45) |
a__isNat#(length(L)) | → | a__isNatList#(L) | (46) |
a__isNatIList#(cons(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (47) |
a__isNatIList#(cons(N,IL)) | → | a__isNat#(N) | (48) |
a__isNatIList#(cons(N,IL)) | → | a__isNatIList#(IL) | (49) |
a__isNatList#(cons(N,L)) | → | a__and#(a__isNat(N),a__isNatList(L)) | (50) |
a__isNatList#(cons(N,L)) | → | a__isNat#(N) | (51) |
a__isNatList#(cons(N,L)) | → | a__isNatList#(L) | (52) |
a__isNatList#(take(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (53) |
a__isNatList#(take(N,IL)) | → | a__isNat#(N) | (54) |
a__isNatList#(take(N,IL)) | → | a__isNatIList#(IL) | (55) |
a__take#(0,IL) | → | a__uTake1#(a__isNatIList(IL)) | (56) |
a__take#(0,IL) | → | a__isNatIList#(IL) | (57) |
a__take#(s(M),cons(N,IL)) | → | a__uTake2#(a__and(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))),M,N,IL) | (58) |
a__take#(s(M),cons(N,IL)) | → | a__and#(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))) | (59) |
a__take#(s(M),cons(N,IL)) | → | a__isNat#(M) | (60) |
a__take#(s(M),cons(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (61) |
a__take#(s(M),cons(N,IL)) | → | a__isNat#(N) | (62) |
a__take#(s(M),cons(N,IL)) | → | a__isNatIList#(IL) | (63) |
a__uTake2#(tt,M,N,IL) | → | mark#(N) | (64) |
a__length#(cons(N,L)) | → | a__uLength#(a__and(a__isNat(N),a__isNatList(L)),L) | (65) |
a__length#(cons(N,L)) | → | a__and#(a__isNat(N),a__isNatList(L)) | (66) |
a__length#(cons(N,L)) | → | a__isNat#(N) | (67) |
a__length#(cons(N,L)) | → | a__isNatList#(L) | (68) |
a__uLength#(tt,L) | → | a__length#(mark(L)) | (69) |
a__uLength#(tt,L) | → | mark#(L) | (70) |
mark#(and(X1,X2)) | → | a__and#(mark(X1),mark(X2)) | (71) |
mark#(and(X1,X2)) | → | mark#(X1) | (72) |
mark#(and(X1,X2)) | → | mark#(X2) | (73) |
mark#(isNatIList(X)) | → | a__isNatIList#(X) | (74) |
mark#(isNatList(X)) | → | a__isNatList#(X) | (75) |
mark#(isNat(X)) | → | a__isNat#(X) | (76) |
mark#(length(X)) | → | a__length#(mark(X)) | (77) |
mark#(length(X)) | → | mark#(X) | (78) |
mark#(zeros) | → | a__zeros# | (79) |
mark#(take(X1,X2)) | → | a__take#(mark(X1),mark(X2)) | (80) |
mark#(take(X1,X2)) | → | mark#(X1) | (81) |
mark#(take(X1,X2)) | → | mark#(X2) | (82) |
mark#(uTake1(X)) | → | a__uTake1#(mark(X)) | (83) |
mark#(uTake1(X)) | → | mark#(X) | (84) |
mark#(uTake2(X1,X2,X3,X4)) | → | a__uTake2#(mark(X1),X2,X3,X4) | (85) |
mark#(uTake2(X1,X2,X3,X4)) | → | mark#(X1) | (86) |
mark#(uLength(X1,X2)) | → | a__uLength#(mark(X1),X2) | (87) |
mark#(uLength(X1,X2)) | → | mark#(X1) | (88) |
mark#(s(X)) | → | mark#(X) | (89) |
mark#(cons(X1,X2)) | → | mark#(X1) | (90) |
The dependency pairs are split into 1 component.
mark#(and(X1,X2)) | → | a__and#(mark(X1),mark(X2)) | (71) |
a__and#(tt,T) | → | mark#(T) | (43) |
mark#(and(X1,X2)) | → | mark#(X1) | (72) |
mark#(and(X1,X2)) | → | mark#(X2) | (73) |
mark#(isNatIList(X)) | → | a__isNatIList#(X) | (74) |
a__isNatIList#(IL) | → | a__isNatList#(IL) | (44) |
a__isNatList#(cons(N,L)) | → | a__and#(a__isNat(N),a__isNatList(L)) | (50) |
a__isNatList#(cons(N,L)) | → | a__isNat#(N) | (51) |
a__isNat#(s(N)) | → | a__isNat#(N) | (45) |
a__isNat#(length(L)) | → | a__isNatList#(L) | (46) |
a__isNatList#(cons(N,L)) | → | a__isNatList#(L) | (52) |
a__isNatList#(take(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (53) |
a__isNatList#(take(N,IL)) | → | a__isNat#(N) | (54) |
a__isNatList#(take(N,IL)) | → | a__isNatIList#(IL) | (55) |
a__isNatIList#(cons(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (47) |
a__isNatIList#(cons(N,IL)) | → | a__isNat#(N) | (48) |
a__isNatIList#(cons(N,IL)) | → | a__isNatIList#(IL) | (49) |
mark#(isNatList(X)) | → | a__isNatList#(X) | (75) |
mark#(isNat(X)) | → | a__isNat#(X) | (76) |
mark#(length(X)) | → | a__length#(mark(X)) | (77) |
a__length#(cons(N,L)) | → | a__uLength#(a__and(a__isNat(N),a__isNatList(L)),L) | (65) |
a__uLength#(tt,L) | → | a__length#(mark(L)) | (69) |
a__length#(cons(N,L)) | → | a__and#(a__isNat(N),a__isNatList(L)) | (66) |
a__length#(cons(N,L)) | → | a__isNat#(N) | (67) |
a__length#(cons(N,L)) | → | a__isNatList#(L) | (68) |
a__uLength#(tt,L) | → | mark#(L) | (70) |
mark#(length(X)) | → | mark#(X) | (78) |
mark#(take(X1,X2)) | → | a__take#(mark(X1),mark(X2)) | (80) |
a__take#(0,IL) | → | a__isNatIList#(IL) | (57) |
a__take#(s(M),cons(N,IL)) | → | a__uTake2#(a__and(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))),M,N,IL) | (58) |
a__uTake2#(tt,M,N,IL) | → | mark#(N) | (64) |
mark#(take(X1,X2)) | → | mark#(X1) | (81) |
mark#(take(X1,X2)) | → | mark#(X2) | (82) |
mark#(uTake1(X)) | → | mark#(X) | (84) |
mark#(uTake2(X1,X2,X3,X4)) | → | a__uTake2#(mark(X1),X2,X3,X4) | (85) |
mark#(uTake2(X1,X2,X3,X4)) | → | mark#(X1) | (86) |
mark#(uLength(X1,X2)) | → | a__uLength#(mark(X1),X2) | (87) |
mark#(uLength(X1,X2)) | → | mark#(X1) | (88) |
mark#(s(X)) | → | mark#(X) | (89) |
mark#(cons(X1,X2)) | → | mark#(X1) | (90) |
a__take#(s(M),cons(N,IL)) | → | a__and#(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))) | (59) |
a__take#(s(M),cons(N,IL)) | → | a__isNat#(M) | (60) |
a__take#(s(M),cons(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (61) |
a__take#(s(M),cons(N,IL)) | → | a__isNat#(N) | (62) |
a__take#(s(M),cons(N,IL)) | → | a__isNatIList#(IL) | (63) |
[a__and#(x1, x2)] | = | 2 · x2 |
[a__length#(x1)] | = | 2 + x1 |
[a__take#(x1, x2)] | = | 1 + 2 · x2 |
[a__uLength#(x1, x2)] | = | 2 + x2 |
[a__uTake2#(x1,...,x4)] | = | x3 |
[mark(x1)] | = | x1 |
[and(x1, x2)] | = | x1 + 2 · x2 |
[a__and(x1, x2)] | = | x1 + 2 · x2 |
[tt] | = | 0 |
[isNatIList(x1)] | = | 0 |
[a__isNatIList(x1)] | = | 0 |
[a__isNatList(x1)] | = | 0 |
[cons(x1, x2)] | = | x1 + x2 |
[a__isNat(x1)] | = | 0 |
[take(x1, x2)] | = | 2 + x1 + 2 · x2 |
[isNatList(x1)] | = | 0 |
[isNat(x1)] | = | 0 |
[s(x1)] | = | x1 |
[length(x1)] | = | 2 + x1 |
[a__length(x1)] | = | 2 + x1 |
[zeros] | = | 0 |
[a__zeros] | = | 0 |
[a__take(x1, x2)] | = | 2 + x1 + 2 · x2 |
[uTake1(x1)] | = | x1 |
[a__uTake1(x1)] | = | x1 |
[uTake2(x1,...,x4)] | = | 2 + x1 + x2 + x3 + 2 · x4 |
[a__uTake2(x1,...,x4)] | = | 2 + x1 + x2 + x3 + 2 · x4 |
[uLength(x1, x2)] | = | 2 + x1 + x2 |
[a__uLength(x1, x2)] | = | 2 + x1 + x2 |
[0] | = | 0 |
[nil] | = | 0 |
[mark#(x1)] | = | x1 |
[a__isNatIList#(x1)] | = | 0 |
[a__isNatList#(x1)] | = | 0 |
[a__isNat#(x1)] | = | 0 |
a__length#(cons(N,L)) | → | a__and#(a__isNat(N),a__isNatList(L)) | (66) |
a__length#(cons(N,L)) | → | a__isNat#(N) | (67) |
a__length#(cons(N,L)) | → | a__isNatList#(L) | (68) |
a__uLength#(tt,L) | → | mark#(L) | (70) |
mark#(length(X)) | → | mark#(X) | (78) |
mark#(take(X1,X2)) | → | a__take#(mark(X1),mark(X2)) | (80) |
a__take#(0,IL) | → | a__isNatIList#(IL) | (57) |
a__take#(s(M),cons(N,IL)) | → | a__uTake2#(a__and(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))),M,N,IL) | (58) |
mark#(take(X1,X2)) | → | mark#(X1) | (81) |
mark#(take(X1,X2)) | → | mark#(X2) | (82) |
mark#(uTake2(X1,X2,X3,X4)) | → | a__uTake2#(mark(X1),X2,X3,X4) | (85) |
mark#(uTake2(X1,X2,X3,X4)) | → | mark#(X1) | (86) |
mark#(uLength(X1,X2)) | → | mark#(X1) | (88) |
a__take#(s(M),cons(N,IL)) | → | a__and#(a__isNat(M),a__and(a__isNat(N),a__isNatIList(IL))) | (59) |
a__take#(s(M),cons(N,IL)) | → | a__isNat#(M) | (60) |
a__take#(s(M),cons(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (61) |
a__take#(s(M),cons(N,IL)) | → | a__isNat#(N) | (62) |
a__take#(s(M),cons(N,IL)) | → | a__isNatIList#(IL) | (63) |
The dependency pairs are split into 2 components.
a__and#(tt,T) | → | mark#(T) | (43) |
mark#(and(X1,X2)) | → | a__and#(mark(X1),mark(X2)) | (71) |
mark#(and(X1,X2)) | → | mark#(X1) | (72) |
mark#(and(X1,X2)) | → | mark#(X2) | (73) |
mark#(isNatIList(X)) | → | a__isNatIList#(X) | (74) |
a__isNatIList#(IL) | → | a__isNatList#(IL) | (44) |
a__isNatList#(cons(N,L)) | → | a__and#(a__isNat(N),a__isNatList(L)) | (50) |
a__isNatList#(cons(N,L)) | → | a__isNat#(N) | (51) |
a__isNat#(s(N)) | → | a__isNat#(N) | (45) |
a__isNat#(length(L)) | → | a__isNatList#(L) | (46) |
a__isNatList#(cons(N,L)) | → | a__isNatList#(L) | (52) |
a__isNatList#(take(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (53) |
a__isNatList#(take(N,IL)) | → | a__isNat#(N) | (54) |
a__isNatList#(take(N,IL)) | → | a__isNatIList#(IL) | (55) |
a__isNatIList#(cons(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (47) |
a__isNatIList#(cons(N,IL)) | → | a__isNat#(N) | (48) |
a__isNatIList#(cons(N,IL)) | → | a__isNatIList#(IL) | (49) |
mark#(isNatList(X)) | → | a__isNatList#(X) | (75) |
mark#(isNat(X)) | → | a__isNat#(X) | (76) |
mark#(uTake1(X)) | → | mark#(X) | (84) |
mark#(s(X)) | → | mark#(X) | (89) |
mark#(cons(X1,X2)) | → | mark#(X1) | (90) |
[a__and#(x1, x2)] | = | x2 |
[mark(x1)] | = | x1 |
[and(x1, x2)] | = | x1 + 2 · x2 |
[a__and(x1, x2)] | = | x1 + 2 · x2 |
[tt] | = | 0 |
[isNatIList(x1)] | = | 0 |
[a__isNatIList(x1)] | = | 0 |
[a__isNatList(x1)] | = | 0 |
[cons(x1, x2)] | = | 2 + 2 · x1 |
[a__isNat(x1)] | = | 0 |
[take(x1, x2)] | = | x2 |
[isNatList(x1)] | = | 0 |
[isNat(x1)] | = | 0 |
[s(x1)] | = | x1 |
[length(x1)] | = | 2 |
[a__length(x1)] | = | 2 |
[zeros] | = | 2 |
[a__zeros] | = | 2 |
[a__take(x1, x2)] | = | x2 |
[uTake1(x1)] | = | x1 |
[a__uTake1(x1)] | = | x1 |
[uTake2(x1,...,x4)] | = | 2 + 2 · x3 |
[a__uTake2(x1,...,x4)] | = | 2 + 2 · x3 |
[uLength(x1, x2)] | = | 2 |
[a__uLength(x1, x2)] | = | 2 |
[0] | = | 0 |
[nil] | = | 0 |
[mark#(x1)] | = | x1 |
[a__isNatIList#(x1)] | = | 0 |
[a__isNatList#(x1)] | = | 0 |
[a__isNat#(x1)] | = | 0 |
mark#(cons(X1,X2)) | → | mark#(X1) | (90) |
[a__and#(x1, x2)] | = | 2 + 2 · x2 |
[mark(x1)] | = | x1 |
[and(x1, x2)] | = | x1 + 2 · x2 |
[a__and(x1, x2)] | = | x1 + 2 · x2 |
[tt] | = | 0 |
[isNatIList(x1)] | = | 0 |
[a__isNatIList(x1)] | = | 0 |
[a__isNatList(x1)] | = | 0 |
[cons(x1, x2)] | = | -2 |
[a__isNat(x1)] | = | 0 |
[take(x1, x2)] | = | 2 |
[isNatList(x1)] | = | 0 |
[isNat(x1)] | = | 0 |
[s(x1)] | = | x1 |
[length(x1)] | = | 0 |
[a__length(x1)] | = | -2 |
[zeros] | = | 0 |
[a__zeros] | = | 0 |
[a__take(x1, x2)] | = | 2 |
[uTake1(x1)] | = | 1 + 2 · x1 |
[a__uTake1(x1)] | = | 1 + 2 · x1 |
[uTake2(x1,...,x4)] | = | 0 |
[a__uTake2(x1,...,x4)] | = | 0 |
[uLength(x1, x2)] | = | 0 |
[a__uLength(x1, x2)] | = | -2 |
[0] | = | 0 |
[nil] | = | 0 |
[mark#(x1)] | = | 2 + x1 |
[a__isNatIList#(x1)] | = | 2 |
[a__isNatList#(x1)] | = | 2 |
[a__isNat#(x1)] | = | 2 |
mark#(uTake1(X)) | → | mark#(X) | (84) |
[a__and#(x1, x2)] | = | 2 + 2 · x2 |
[mark(x1)] | = | x1 |
[and(x1, x2)] | = | 2 · x1 + x2 |
[a__and(x1, x2)] | = | 2 · x1 + x2 |
[tt] | = | 0 |
[isNatIList(x1)] | = | x1 |
[a__isNatIList(x1)] | = | x1 |
[a__isNatList(x1)] | = | x1 |
[cons(x1, x2)] | = | 2 · x1 + x2 |
[a__isNat(x1)] | = | x1 |
[take(x1, x2)] | = | 1 + 2 · x1 + 2 · x2 |
[isNatList(x1)] | = | x1 |
[isNat(x1)] | = | x1 |
[s(x1)] | = | x1 |
[length(x1)] | = | 2 · x1 |
[a__length(x1)] | = | 2 · x1 |
[zeros] | = | 0 |
[a__zeros] | = | 0 |
[a__take(x1, x2)] | = | 1 + 2 · x1 + 2 · x2 |
[uTake1(x1)] | = | 0 |
[a__uTake1(x1)] | = | -2 |
[uTake2(x1,...,x4)] | = | 1 + 2 · x2 + 2 · x3 + 2 · x4 |
[a__uTake2(x1,...,x4)] | = | 1 + 2 · x2 + 2 · x3 + 2 · x4 |
[uLength(x1, x2)] | = | 2 · x2 |
[a__uLength(x1, x2)] | = | 2 · x2 |
[0] | = | 0 |
[nil] | = | 0 |
[mark#(x1)] | = | 2 + 2 · x1 |
[a__isNatIList#(x1)] | = | 2 + 2 · x1 |
[a__isNatList#(x1)] | = | 2 + 2 · x1 |
[a__isNat#(x1)] | = | 2 + 2 · x1 |
a__isNatList#(take(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (53) |
a__isNatList#(take(N,IL)) | → | a__isNat#(N) | (54) |
a__isNatList#(take(N,IL)) | → | a__isNatIList#(IL) | (55) |
[a__and#(x1, x2)] | = | 2 + x2 |
[mark(x1)] | = | x1 |
[and(x1, x2)] | = | x1 + x2 |
[a__and(x1, x2)] | = | x1 + x2 |
[tt] | = | 0 |
[isNatIList(x1)] | = | 2 · x1 |
[a__isNatIList(x1)] | = | 2 · x1 |
[a__isNatList(x1)] | = | x1 |
[cons(x1, x2)] | = | x1 + x2 |
[a__isNat(x1)] | = | x1 |
[take(x1, x2)] | = | 2 + 2 · x1 + 2 · x2 |
[isNatList(x1)] | = | x1 |
[isNat(x1)] | = | x1 |
[s(x1)] | = | x1 |
[length(x1)] | = | 1 + x1 |
[a__length(x1)] | = | 1 + x1 |
[zeros] | = | 0 |
[a__zeros] | = | 0 |
[a__take(x1, x2)] | = | 2 + 2 · x1 + 2 · x2 |
[uTake1(x1)] | = | 0 |
[a__uTake1(x1)] | = | -2 |
[uTake2(x1,...,x4)] | = | 2 + 2 · x2 + 2 · x3 + 2 · x4 |
[a__uTake2(x1,...,x4)] | = | 2 + 2 · x2 + 2 · x3 + 2 · x4 |
[uLength(x1, x2)] | = | 1 + x2 |
[a__uLength(x1, x2)] | = | 1 + x2 |
[0] | = | 0 |
[nil] | = | 0 |
[mark#(x1)] | = | 2 + x1 |
[a__isNatIList#(x1)] | = | 2 + 2 · x1 |
[a__isNatList#(x1)] | = | 2 + x1 |
[a__isNat#(x1)] | = | 2 + x1 |
a__isNat#(length(L)) | → | a__isNatList#(L) | (46) |
The dependency pairs are split into 2 components.
mark#(and(X1,X2)) | → | a__and#(mark(X1),mark(X2)) | (71) |
a__and#(tt,T) | → | mark#(T) | (43) |
mark#(and(X1,X2)) | → | mark#(X1) | (72) |
mark#(and(X1,X2)) | → | mark#(X2) | (73) |
mark#(isNatIList(X)) | → | a__isNatIList#(X) | (74) |
a__isNatIList#(IL) | → | a__isNatList#(IL) | (44) |
a__isNatList#(cons(N,L)) | → | a__and#(a__isNat(N),a__isNatList(L)) | (50) |
a__isNatList#(cons(N,L)) | → | a__isNatList#(L) | (52) |
a__isNatIList#(cons(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (47) |
a__isNatIList#(cons(N,IL)) | → | a__isNatIList#(IL) | (49) |
mark#(isNatList(X)) | → | a__isNatList#(X) | (75) |
mark#(s(X)) | → | mark#(X) | (89) |
[a__and#(x1, x2)] | = | x2 |
[mark(x1)] | = | x1 |
[and(x1, x2)] | = | x1 + x2 |
[a__and(x1, x2)] | = | x1 + x2 |
[tt] | = | 0 |
[isNatIList(x1)] | = | 2 + 2 · x1 |
[a__isNatIList(x1)] | = | 2 + 2 · x1 |
[a__isNatList(x1)] | = | x1 |
[cons(x1, x2)] | = | 2 · x1 + x2 |
[a__isNat(x1)] | = | 2 · x1 |
[take(x1, x2)] | = | 2 + 2 · x1 + 2 · x2 |
[isNatList(x1)] | = | x1 |
[isNat(x1)] | = | 2 · x1 |
[s(x1)] | = | x1 |
[length(x1)] | = | 2 · x1 |
[a__length(x1)] | = | 2 · x1 |
[zeros] | = | 0 |
[a__zeros] | = | 0 |
[a__take(x1, x2)] | = | 2 + 2 · x1 + 2 · x2 |
[uTake1(x1)] | = | 0 |
[a__uTake1(x1)] | = | -2 |
[uTake2(x1,...,x4)] | = | 2 + 2 · x2 + 2 · x3 + 2 · x4 |
[a__uTake2(x1,...,x4)] | = | 2 + 2 · x2 + 2 · x3 + 2 · x4 |
[uLength(x1, x2)] | = | 2 · x2 |
[a__uLength(x1, x2)] | = | 2 · x2 |
[0] | = | 0 |
[nil] | = | 0 |
[mark#(x1)] | = | x1 |
[a__isNatIList#(x1)] | = | 2 + 2 · x1 |
[a__isNatList#(x1)] | = | x1 |
a__isNatIList#(IL) | → | a__isNatList#(IL) | (44) |
[mark#(x1)] | = |
|
||||||||||||||||||||
[and(x1, x2)] | = |
|
||||||||||||||||||||
[a__and#(x1, x2)] | = |
|
||||||||||||||||||||
[mark(x1)] | = |
|
||||||||||||||||||||
[tt] | = |
|
||||||||||||||||||||
[isNatIList(x1)] | = |
|
||||||||||||||||||||
[a__isNatIList#(x1)] | = |
|
||||||||||||||||||||
[a__isNatList#(x1)] | = |
|
||||||||||||||||||||
[cons(x1, x2)] | = |
|
||||||||||||||||||||
[a__isNat(x1)] | = |
|
||||||||||||||||||||
[a__isNatList(x1)] | = |
|
||||||||||||||||||||
[a__isNatIList(x1)] | = |
|
||||||||||||||||||||
[isNatList(x1)] | = |
|
||||||||||||||||||||
[s(x1)] | = |
|
||||||||||||||||||||
[a__and(x1, x2)] | = |
|
||||||||||||||||||||
[take(x1, x2)] | = |
|
||||||||||||||||||||
[isNat(x1)] | = |
|
||||||||||||||||||||
[length(x1)] | = |
|
||||||||||||||||||||
[a__length(x1)] | = |
|
||||||||||||||||||||
[zeros] | = |
|
||||||||||||||||||||
[a__zeros] | = |
|
||||||||||||||||||||
[a__take(x1, x2)] | = |
|
||||||||||||||||||||
[uTake1(x1)] | = |
|
||||||||||||||||||||
[a__uTake1(x1)] | = |
|
||||||||||||||||||||
[uTake2(x1,...,x4)] | = |
|
||||||||||||||||||||
[a__uTake2(x1,...,x4)] | = |
|
||||||||||||||||||||
[uLength(x1, x2)] | = |
|
||||||||||||||||||||
[a__uLength(x1, x2)] | = |
|
||||||||||||||||||||
[0] | = |
|
||||||||||||||||||||
[nil] | = |
|
mark#(and(X1,X2)) | → | mark#(X1) | (72) |
[a__and#(x1, x2)] | = | 1 + x2 |
[mark(x1)] | = | 1 + x1 |
[and(x1, x2)] | = | 1 + x2 |
[a__and(x1, x2)] | = | 1 + x2 |
[tt] | = | 0 |
[isNatIList(x1)] | = | x1 |
[a__isNatIList(x1)] | = | x1 |
[a__isNatList(x1)] | = | x1 |
[cons(x1, x2)] | = | 1 + x2 |
[a__isNat(x1)] | = | x1 |
[take(x1, x2)] | = | 1 + x2 |
[isNatList(x1)] | = | x1 |
[isNat(x1)] | = | x1 |
[s(x1)] | = | x1 |
[length(x1)] | = | x1 |
[a__length(x1)] | = | x1 |
[zeros] | = | 0 |
[a__zeros] | = | 1 |
[a__take(x1, x2)] | = | 1 + x2 |
[uTake1(x1)] | = | 0 |
[a__uTake1(x1)] | = | -2 |
[uTake2(x1,...,x4)] | = | 1 + x4 |
[a__uTake2(x1,...,x4)] | = | 2 + x4 |
[uLength(x1, x2)] | = | x2 |
[a__uLength(x1, x2)] | = | 1 + x2 |
[0] | = | 0 |
[nil] | = | 0 |
[mark#(x1)] | = | 1 + x1 |
[a__isNatIList#(x1)] | = | 1 + x1 |
[a__isNatList#(x1)] | = | 1 + x1 |
mark#(and(X1,X2)) | → | mark#(X2) | (73) |
a__isNatList#(cons(N,L)) | → | a__and#(a__isNat(N),a__isNatList(L)) | (50) |
a__isNatList#(cons(N,L)) | → | a__isNatList#(L) | (52) |
a__isNatIList#(cons(N,IL)) | → | a__and#(a__isNat(N),a__isNatIList(IL)) | (47) |
a__isNatIList#(cons(N,IL)) | → | a__isNatIList#(IL) | (49) |
The dependency pairs are split into 1 component.
a__and#(tt,T) | → | mark#(T) | (43) |
mark#(and(X1,X2)) | → | a__and#(mark(X1),mark(X2)) | (71) |
mark#(s(X)) | → | mark#(X) | (89) |
[a__and#(x1, x2)] | = | 2 · x2 |
[mark(x1)] | = | 1 + x1 |
[and(x1, x2)] | = | 2 + x2 |
[a__and(x1, x2)] | = | 2 + x2 |
[tt] | = | 0 |
[isNatIList(x1)] | = | 2 · x1 |
[a__isNatIList(x1)] | = | 2 · x1 |
[a__isNatList(x1)] | = | 2 · x1 |
[cons(x1, x2)] | = | 1 + x2 |
[a__isNat(x1)] | = | 2 · x1 |
[take(x1, x2)] | = | 1 + x2 |
[isNatList(x1)] | = | 2 · x1 |
[isNat(x1)] | = | 2 · x1 |
[s(x1)] | = | x1 |
[length(x1)] | = | x1 |
[a__length(x1)] | = | x1 |
[zeros] | = | 0 |
[a__zeros] | = | 1 |
[a__take(x1, x2)] | = | 1 + x2 |
[uTake1(x1)] | = | 0 |
[a__uTake1(x1)] | = | 0 |
[uTake2(x1,...,x4)] | = | 2 + x4 |
[a__uTake2(x1,...,x4)] | = | 2 + x4 |
[uLength(x1, x2)] | = | x2 |
[a__uLength(x1, x2)] | = | 1 + x2 |
[0] | = | 0 |
[nil] | = | 0 |
[mark#(x1)] | = | 2 · x1 |
mark#(and(X1,X2)) | → | a__and#(mark(X1),mark(X2)) | (71) |
The dependency pairs are split into 1 component.
mark#(s(X)) | → | mark#(X) | (89) |
[s(x1)] | = | 1 · x1 |
[mark#(x1)] | = | 1 · x1 |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
mark#(s(X)) | → | mark#(X) | (89) |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
a__isNat#(s(N)) | → | a__isNat#(N) | (45) |
[s(x1)] | = | 1 · x1 |
[a__isNat#(x1)] | = | 1 · x1 |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
a__isNat#(s(N)) | → | a__isNat#(N) | (45) |
1 | > | 1 |
As there is no critical graph in the transitive closure, there are no infinite chains.
a__uLength#(tt,L) | → | a__length#(mark(L)) | (69) |
a__length#(cons(N,L)) | → | a__uLength#(a__and(a__isNat(N),a__isNatList(L)),L) | (65) |
[a__uLength#(x1, x2)] | = |
|
||||||||||||||||||||
[tt] | = |
|
||||||||||||||||||||
[a__length#(x1)] | = |
|
||||||||||||||||||||
[mark(x1)] | = |
|
||||||||||||||||||||
[cons(x1, x2)] | = |
|
||||||||||||||||||||
[a__and(x1, x2)] | = |
|
||||||||||||||||||||
[a__isNat(x1)] | = |
|
||||||||||||||||||||
[a__isNatList(x1)] | = |
|
||||||||||||||||||||
[and(x1, x2)] | = |
|
||||||||||||||||||||
[isNatIList(x1)] | = |
|
||||||||||||||||||||
[a__isNatIList(x1)] | = |
|
||||||||||||||||||||
[take(x1, x2)] | = |
|
||||||||||||||||||||
[isNatList(x1)] | = |
|
||||||||||||||||||||
[isNat(x1)] | = |
|
||||||||||||||||||||
[s(x1)] | = |
|
||||||||||||||||||||
[length(x1)] | = |
|
||||||||||||||||||||
[a__length(x1)] | = |
|
||||||||||||||||||||
[zeros] | = |
|
||||||||||||||||||||
[a__zeros] | = |
|
||||||||||||||||||||
[a__take(x1, x2)] | = |
|
||||||||||||||||||||
[uTake1(x1)] | = |
|
||||||||||||||||||||
[a__uTake1(x1)] | = |
|
||||||||||||||||||||
[uTake2(x1,...,x4)] | = |
|
||||||||||||||||||||
[a__uTake2(x1,...,x4)] | = |
|
||||||||||||||||||||
[uLength(x1, x2)] | = |
|
||||||||||||||||||||
[a__uLength(x1, x2)] | = |
|
||||||||||||||||||||
[0] | = |
|
||||||||||||||||||||
[nil] | = |
|
a__uLength#(tt,L) | → | a__length#(mark(L)) | (69) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
a__length#(cons(N,L)) | → | a__uLength#(a__and(a__isNat(N),a__isNatList(L)),L) | (65) |
1 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.