MAYBE TRS: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} DP: Strict: { cons#(mark(X1), X2) -> cons#(X1, X2), cons#(ok(X1), ok(X2)) -> cons#(X1, X2), active#(cons(X1, X2)) -> cons#(active(X1), X2), active#(cons(X1, X2)) -> active#(X1), active#(zeros()) -> cons#(0(), zeros()), active#(s(X)) -> active#(X), active#(s(X)) -> s#(active(X)), active#(length(X)) -> active#(X), active#(length(X)) -> length#(active(X)), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N)), active#(length(cons(N, L))) -> isNat#(N), active#(length(cons(N, L))) -> isNatList#(L), active#(U11(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> U11#(active(X1), X2), active#(U11(tt(), L)) -> s#(length(L)), active#(U11(tt(), L)) -> length#(L), active#(U21(X)) -> active#(X), active#(U21(X)) -> U21#(active(X)), active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2), active#(take(X1, X2)) -> take#(X1, active(X2)), active#(take(X1, X2)) -> take#(active(X1), X2), active#(take(0(), IL)) -> U21#(isNatIList(IL)), active#(take(0(), IL)) -> isNatIList#(IL), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N)), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N))), active#(take(s(M), cons(N, IL))) -> isNat#(N), active#(take(s(M), cons(N, IL))) -> isNat#(M), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL), active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL)), active#(U31(tt(), IL, M, N)) -> take#(M, IL), active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> and#(active(X1), X2), active#(isNat(s(V1))) -> isNat#(V1), active#(isNat(length(V1))) -> isNatList#(V1), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2)), active#(isNatList(cons(V1, V2))) -> isNat#(V1), active#(isNatList(cons(V1, V2))) -> isNatList#(V2), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2)), active#(isNatList(take(V1, V2))) -> isNat#(V1), active#(isNatList(take(V1, V2))) -> isNatIList#(V2), active#(isNatIList(V)) -> isNatList#(V), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2)), active#(isNatIList(cons(V1, V2))) -> isNat#(V1), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2), s#(mark(X)) -> s#(X), s#(ok(X)) -> s#(X), length#(mark(X)) -> length#(X), length#(ok(X)) -> length#(X), U11#(mark(X1), X2) -> U11#(X1, X2), U11#(ok(X1), ok(X2)) -> U11#(X1, X2), U21#(mark(X)) -> U21#(X), U21#(ok(X)) -> U21#(X), take#(X1, mark(X2)) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2), take#(ok(X1), ok(X2)) -> take#(X1, X2), U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4), U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4), and#(mark(X1), X2) -> and#(X1, X2), and#(ok(X1), ok(X2)) -> and#(X1, X2), isNat#(ok(X)) -> isNat#(X), isNatList#(ok(X)) -> isNatList#(X), isNatIList#(ok(X)) -> isNatIList#(X), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2)), proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> s#(proper(X)), proper#(s(X)) -> proper#(X), proper#(length(X)) -> length#(proper(X)), proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2)), proper#(U11(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> U21#(proper(X)), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2)), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4)), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2)), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> isNat#(proper(X)), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> isNatList#(proper(X)), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> isNatIList#(proper(X)), proper#(isNatIList(X)) -> proper#(X), top#(mark(X)) -> proper#(X), top#(mark(X)) -> top#(proper(X)), top#(ok(X)) -> active#(X), top#(ok(X)) -> top#(active(X))} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} EDG: { (active#(isNatList(cons(V1, V2))) -> isNatList#(V2), isNatList#(ok(X)) -> isNatList#(X)) (active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2), isNatIList#(ok(X)) -> isNatIList#(X)) (proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4)), U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4)) (proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4)), U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4)) (active#(length(X)) -> length#(active(X)), length#(ok(X)) -> length#(X)) (active#(length(X)) -> length#(active(X)), length#(mark(X)) -> length#(X)) (proper#(s(X)) -> s#(proper(X)), s#(ok(X)) -> s#(X)) (proper#(s(X)) -> s#(proper(X)), s#(mark(X)) -> s#(X)) (proper#(U21(X)) -> U21#(proper(X)), U21#(ok(X)) -> U21#(X)) (proper#(U21(X)) -> U21#(proper(X)), U21#(mark(X)) -> U21#(X)) (proper#(isNatList(X)) -> isNatList#(proper(X)), isNatList#(ok(X)) -> isNatList#(X)) (top#(mark(X)) -> top#(proper(X)), top#(ok(X)) -> top#(active(X))) (top#(mark(X)) -> top#(proper(X)), top#(ok(X)) -> active#(X)) (top#(mark(X)) -> top#(proper(X)), top#(mark(X)) -> top#(proper(X))) (top#(mark(X)) -> top#(proper(X)), top#(mark(X)) -> proper#(X)) (active#(cons(X1, X2)) -> cons#(active(X1), X2), cons#(ok(X1), ok(X2)) -> cons#(X1, X2)) (active#(cons(X1, X2)) -> cons#(active(X1), X2), cons#(mark(X1), X2) -> cons#(X1, X2)) (active#(take(X1, X2)) -> take#(active(X1), X2), take#(ok(X1), ok(X2)) -> take#(X1, X2)) (active#(take(X1, X2)) -> take#(active(X1), X2), take#(mark(X1), X2) -> take#(X1, X2)) (active#(take(X1, X2)) -> take#(active(X1), X2), take#(X1, mark(X2)) -> take#(X1, X2)) (active#(and(X1, X2)) -> and#(active(X1), X2), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (active#(and(X1, X2)) -> and#(active(X1), X2), and#(mark(X1), X2) -> and#(X1, X2)) (active#(length(cons(N, L))) -> isNat#(N), isNat#(ok(X)) -> isNat#(X)) (cons#(mark(X1), X2) -> cons#(X1, X2), cons#(ok(X1), ok(X2)) -> cons#(X1, X2)) (cons#(mark(X1), X2) -> cons#(X1, X2), cons#(mark(X1), X2) -> cons#(X1, X2)) (U11#(mark(X1), X2) -> U11#(X1, X2), U11#(ok(X1), ok(X2)) -> U11#(X1, X2)) (U11#(mark(X1), X2) -> U11#(X1, X2), U11#(mark(X1), X2) -> U11#(X1, X2)) (take#(X1, mark(X2)) -> take#(X1, X2), take#(ok(X1), ok(X2)) -> take#(X1, X2)) (take#(X1, mark(X2)) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2)) (take#(X1, mark(X2)) -> take#(X1, X2), take#(X1, mark(X2)) -> take#(X1, X2)) (take#(ok(X1), ok(X2)) -> take#(X1, X2), take#(ok(X1), ok(X2)) -> take#(X1, X2)) (take#(ok(X1), ok(X2)) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2)) (take#(ok(X1), ok(X2)) -> take#(X1, X2), take#(X1, mark(X2)) -> take#(X1, X2)) (and#(ok(X1), ok(X2)) -> and#(X1, X2), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (and#(ok(X1), ok(X2)) -> and#(X1, X2), and#(mark(X1), X2) -> and#(X1, X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U21(X)) -> U21#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(length(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(length(X)) -> length#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> s#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (active#(length(cons(N, L))) -> isNatList#(L), isNatList#(ok(X)) -> isNatList#(X)) (active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4), U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4)) (active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4), U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4)) (U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4), U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4)) (U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4), U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4)) (active#(isNat(length(V1))) -> isNatList#(V1), isNatList#(ok(X)) -> isNatList#(X)) (active#(isNatList(take(V1, V2))) -> isNat#(V1), isNat#(ok(X)) -> isNat#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U21(X)) -> U21#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(length(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(length(X)) -> length#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> s#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (active#(s(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (active#(s(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (active#(s(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(s(X)) -> active#(X), active#(isNatIList(V)) -> isNatList#(V)) (active#(s(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (active#(s(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (active#(s(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(s(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (active#(s(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (active#(s(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (active#(s(X)) -> active#(X), active#(isNat(length(V1))) -> isNatList#(V1)) (active#(s(X)) -> active#(X), active#(isNat(s(V1))) -> isNat#(V1)) (active#(s(X)) -> active#(X), active#(and(X1, X2)) -> and#(active(X1), X2)) (active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (active#(s(X)) -> active#(X), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (active#(s(X)) -> active#(X), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (active#(s(X)) -> active#(X), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (active#(s(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (active#(s(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (active#(s(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (active#(s(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (active#(s(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (active#(s(X)) -> active#(X), active#(take(0(), IL)) -> isNatIList#(IL)) (active#(s(X)) -> active#(X), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (active#(s(X)) -> active#(X), active#(take(X1, X2)) -> take#(active(X1), X2)) (active#(s(X)) -> active#(X), active#(take(X1, X2)) -> take#(X1, active(X2))) (active#(s(X)) -> active#(X), active#(take(X1, X2)) -> active#(X2)) (active#(s(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(U21(X)) -> U21#(active(X))) (active#(s(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(U11(tt(), L)) -> length#(L)) (active#(s(X)) -> active#(X), active#(U11(tt(), L)) -> s#(length(L))) (active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(length(cons(N, L))) -> isNatList#(L)) (active#(s(X)) -> active#(X), active#(length(cons(N, L))) -> isNat#(N)) (active#(s(X)) -> active#(X), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (active#(s(X)) -> active#(X), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (active#(s(X)) -> active#(X), active#(length(X)) -> length#(active(X))) (active#(s(X)) -> active#(X), active#(length(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(s(X)) -> s#(active(X))) (active#(s(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(zeros()) -> cons#(0(), zeros())) (active#(s(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (active#(U21(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (active#(U21(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (active#(U21(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(U21(X)) -> active#(X), active#(isNatIList(V)) -> isNatList#(V)) (active#(U21(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (active#(U21(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (active#(U21(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(U21(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (active#(U21(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (active#(U21(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (active#(U21(X)) -> active#(X), active#(isNat(length(V1))) -> isNatList#(V1)) (active#(U21(X)) -> active#(X), active#(isNat(s(V1))) -> isNat#(V1)) (active#(U21(X)) -> active#(X), active#(and(X1, X2)) -> and#(active(X1), X2)) (active#(U21(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (active#(U21(X)) -> active#(X), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (active#(U21(X)) -> active#(X), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (active#(U21(X)) -> active#(X), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (active#(U21(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (active#(U21(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (active#(U21(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (active#(U21(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (active#(U21(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (active#(U21(X)) -> active#(X), active#(take(0(), IL)) -> isNatIList#(IL)) (active#(U21(X)) -> active#(X), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> take#(active(X1), X2)) (active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> take#(X1, active(X2))) (active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X2)) (active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(U21(X)) -> U21#(active(X))) (active#(U21(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(U11(tt(), L)) -> length#(L)) (active#(U21(X)) -> active#(X), active#(U11(tt(), L)) -> s#(length(L))) (active#(U21(X)) -> active#(X), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (active#(U21(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(length(cons(N, L))) -> isNatList#(L)) (active#(U21(X)) -> active#(X), active#(length(cons(N, L))) -> isNat#(N)) (active#(U21(X)) -> active#(X), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (active#(U21(X)) -> active#(X), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (active#(U21(X)) -> active#(X), active#(length(X)) -> length#(active(X))) (active#(U21(X)) -> active#(X), active#(length(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(s(X)) -> s#(active(X))) (active#(U21(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(zeros()) -> cons#(0(), zeros())) (active#(U21(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (s#(ok(X)) -> s#(X), s#(ok(X)) -> s#(X)) (s#(ok(X)) -> s#(X), s#(mark(X)) -> s#(X)) (length#(ok(X)) -> length#(X), length#(ok(X)) -> length#(X)) (length#(ok(X)) -> length#(X), length#(mark(X)) -> length#(X)) (U21#(ok(X)) -> U21#(X), U21#(ok(X)) -> U21#(X)) (U21#(ok(X)) -> U21#(X), U21#(mark(X)) -> U21#(X)) (isNatList#(ok(X)) -> isNatList#(X), isNatList#(ok(X)) -> isNatList#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(s(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(s(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(U21(X)) -> U21#(proper(X))) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(s(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(length(X)) -> length#(proper(X))) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> s#(proper(X))) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(U21(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(U21(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(U21(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(U21(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(U21(X)) -> U21#(proper(X))) (proper#(U21(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(U21(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(length(X)) -> length#(proper(X))) (proper#(U21(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(s(X)) -> s#(proper(X))) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(isNatList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(isNatList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(isNatList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(U21(X)) -> U21#(proper(X))) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(isNatList(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(length(X)) -> length#(proper(X))) (proper#(isNatList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(s(X)) -> s#(proper(X))) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (top#(mark(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (top#(mark(X)) -> proper#(X), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (top#(mark(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (top#(mark(X)) -> proper#(X), proper#(isNatList(X)) -> isNatList#(proper(X))) (top#(mark(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (top#(mark(X)) -> proper#(X), proper#(isNat(X)) -> isNat#(proper(X))) (top#(mark(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (top#(mark(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (top#(mark(X)) -> proper#(X), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (top#(mark(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (top#(mark(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (top#(mark(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (top#(mark(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (top#(mark(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (top#(mark(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (top#(mark(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (top#(mark(X)) -> proper#(X), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (top#(mark(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (top#(mark(X)) -> proper#(X), proper#(U21(X)) -> U21#(proper(X))) (top#(mark(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (top#(mark(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X1)) (top#(mark(X)) -> proper#(X), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (top#(mark(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (top#(mark(X)) -> proper#(X), proper#(length(X)) -> length#(proper(X))) (top#(mark(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (top#(mark(X)) -> proper#(X), proper#(s(X)) -> s#(proper(X))) (top#(mark(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (top#(mark(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (top#(mark(X)) -> proper#(X), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (active#(take(X1, X2)) -> active#(X2), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (active#(take(X1, X2)) -> active#(X2), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (active#(take(X1, X2)) -> active#(X2), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(take(X1, X2)) -> active#(X2), active#(isNatIList(V)) -> isNatList#(V)) (active#(take(X1, X2)) -> active#(X2), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (active#(take(X1, X2)) -> active#(X2), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (active#(take(X1, X2)) -> active#(X2), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(take(X1, X2)) -> active#(X2), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (active#(take(X1, X2)) -> active#(X2), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (active#(take(X1, X2)) -> active#(X2), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (active#(take(X1, X2)) -> active#(X2), active#(isNat(length(V1))) -> isNatList#(V1)) (active#(take(X1, X2)) -> active#(X2), active#(isNat(s(V1))) -> isNat#(V1)) (active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> and#(active(X1), X2)) (active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (active#(take(X1, X2)) -> active#(X2), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (active#(take(X1, X2)) -> active#(X2), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (active#(take(X1, X2)) -> active#(X2), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (active#(take(X1, X2)) -> active#(X2), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (active#(take(X1, X2)) -> active#(X2), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (active#(take(X1, X2)) -> active#(X2), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (active#(take(X1, X2)) -> active#(X2), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (active#(take(X1, X2)) -> active#(X2), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (active#(take(X1, X2)) -> active#(X2), active#(take(0(), IL)) -> isNatIList#(IL)) (active#(take(X1, X2)) -> active#(X2), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (active#(take(X1, X2)) -> active#(X2), active#(take(X1, X2)) -> take#(active(X1), X2)) (active#(take(X1, X2)) -> active#(X2), active#(take(X1, X2)) -> take#(X1, active(X2))) (active#(take(X1, X2)) -> active#(X2), active#(take(X1, X2)) -> active#(X2)) (active#(take(X1, X2)) -> active#(X2), active#(take(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(U21(X)) -> U21#(active(X))) (active#(take(X1, X2)) -> active#(X2), active#(U21(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X2), active#(U11(tt(), L)) -> length#(L)) (active#(take(X1, X2)) -> active#(X2), active#(U11(tt(), L)) -> s#(length(L))) (active#(take(X1, X2)) -> active#(X2), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (active#(take(X1, X2)) -> active#(X2), active#(U11(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(length(cons(N, L))) -> isNatList#(L)) (active#(take(X1, X2)) -> active#(X2), active#(length(cons(N, L))) -> isNat#(N)) (active#(take(X1, X2)) -> active#(X2), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (active#(take(X1, X2)) -> active#(X2), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (active#(take(X1, X2)) -> active#(X2), active#(length(X)) -> length#(active(X))) (active#(take(X1, X2)) -> active#(X2), active#(length(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X2), active#(s(X)) -> s#(active(X))) (active#(take(X1, X2)) -> active#(X2), active#(s(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X2), active#(zeros()) -> cons#(0(), zeros())) (active#(take(X1, X2)) -> active#(X2), active#(cons(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> U21#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(length(X)) -> length#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> s#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U21(X)) -> U21#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(length(X)) -> length#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(s(X)) -> s#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N))), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N))), and#(mark(X1), X2) -> and#(X1, X2)) (active#(take(X1, X2)) -> take#(X1, active(X2)), take#(ok(X1), ok(X2)) -> take#(X1, X2)) (active#(take(X1, X2)) -> take#(X1, active(X2)), take#(mark(X1), X2) -> take#(X1, X2)) (active#(take(X1, X2)) -> take#(X1, active(X2)), take#(X1, mark(X2)) -> take#(X1, X2)) (active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2)), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2)), and#(mark(X1), X2) -> and#(X1, X2)) (active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2)), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2)), and#(mark(X1), X2) -> and#(X1, X2)) (proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2)), U11#(ok(X1), ok(X2)) -> U11#(X1, X2)) (proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2)), U11#(mark(X1), X2) -> U11#(X1, X2)) (proper#(and(X1, X2)) -> and#(proper(X1), proper(X2)), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (proper#(and(X1, X2)) -> and#(proper(X1), proper(X2)), and#(mark(X1), X2) -> and#(X1, X2)) (active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL)), cons#(ok(X1), ok(X2)) -> cons#(X1, X2)) (active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL)), cons#(mark(X1), X2) -> cons#(X1, X2)) (active#(take(s(M), cons(N, IL))) -> isNatIList#(IL), isNatIList#(ok(X)) -> isNatIList#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (active#(U11(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (active#(U11(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(U11(X1, X2)) -> active#(X1), active#(isNatIList(V)) -> isNatList#(V)) (active#(U11(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (active#(U11(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (active#(U11(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(U11(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (active#(U11(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (active#(U11(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (active#(U11(X1, X2)) -> active#(X1), active#(isNat(length(V1))) -> isNatList#(V1)) (active#(U11(X1, X2)) -> active#(X1), active#(isNat(s(V1))) -> isNat#(V1)) (active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> and#(active(X1), X2)) (active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (active#(U11(X1, X2)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (active#(U11(X1, X2)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (active#(U11(X1, X2)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (active#(U11(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (active#(U11(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (active#(U11(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (active#(U11(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (active#(U11(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (active#(U11(X1, X2)) -> active#(X1), active#(take(0(), IL)) -> isNatIList#(IL)) (active#(U11(X1, X2)) -> active#(X1), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (active#(U11(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> take#(active(X1), X2)) (active#(U11(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> take#(X1, active(X2))) (active#(U11(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(U11(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> U21#(active(X))) (active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(U11(tt(), L)) -> length#(L)) (active#(U11(X1, X2)) -> active#(X1), active#(U11(tt(), L)) -> s#(length(L))) (active#(U11(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (active#(U11(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> isNatList#(L)) (active#(U11(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> isNat#(N)) (active#(U11(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (active#(U11(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (active#(U11(X1, X2)) -> active#(X1), active#(length(X)) -> length#(active(X))) (active#(U11(X1, X2)) -> active#(X1), active#(length(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(s(X)) -> s#(active(X))) (active#(U11(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(zeros()) -> cons#(0(), zeros())) (active#(U11(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatIList(V)) -> isNatList#(V)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNat(length(V1))) -> isNatList#(V1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(isNat(s(V1))) -> isNat#(V1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(and(X1, X2)) -> and#(active(X1), X2)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(0(), IL)) -> isNatIList#(IL)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(X1, X2)) -> take#(active(X1), X2)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(X1, X2)) -> take#(X1, active(X2))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U21(X)) -> U21#(active(X))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U11(tt(), L)) -> length#(L)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U11(tt(), L)) -> s#(length(L))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(length(cons(N, L))) -> isNatList#(L)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(length(cons(N, L))) -> isNat#(N)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(length(X)) -> length#(active(X))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(length(X)) -> active#(X)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(s(X)) -> s#(active(X))) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(zeros()) -> cons#(0(), zeros())) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U21(X)) -> U21#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(length(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(length(X)) -> length#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> s#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(take(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(take(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U21(X)) -> U21#(proper(X))) (proper#(take(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(take(X1, X2)) -> proper#(X1), proper#(length(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(length(X)) -> length#(proper(X))) (proper#(take(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(s(X)) -> s#(proper(X))) (proper#(take(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(and(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U21(X)) -> U21#(proper(X))) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(and(X1, X2)) -> proper#(X1), proper#(length(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(length(X)) -> length#(proper(X))) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> s#(proper(X))) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(s(X)) -> s#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(length(X)) -> length#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(length(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U21(X)) -> U21#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(s(X)) -> s#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(length(X)) -> length#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(length(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U21(X)) -> U21#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(U11(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (active#(and(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (active#(and(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(zeros()) -> cons#(0(), zeros())) (active#(and(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(s(X)) -> s#(active(X))) (active#(and(X1, X2)) -> active#(X1), active#(length(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(length(X)) -> length#(active(X))) (active#(and(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (active#(and(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (active#(and(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> isNat#(N)) (active#(and(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> isNatList#(L)) (active#(and(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (active#(and(X1, X2)) -> active#(X1), active#(U11(tt(), L)) -> s#(length(L))) (active#(and(X1, X2)) -> active#(X1), active#(U11(tt(), L)) -> length#(L)) (active#(and(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(U21(X)) -> U21#(active(X))) (active#(and(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(and(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> take#(X1, active(X2))) (active#(and(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> take#(active(X1), X2)) (active#(and(X1, X2)) -> active#(X1), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (active#(and(X1, X2)) -> active#(X1), active#(take(0(), IL)) -> isNatIList#(IL)) (active#(and(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (active#(and(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (active#(and(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (active#(and(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (active#(and(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (active#(and(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (active#(and(X1, X2)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (active#(and(X1, X2)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (active#(and(X1, X2)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> and#(active(X1), X2)) (active#(and(X1, X2)) -> active#(X1), active#(isNat(s(V1))) -> isNat#(V1)) (active#(and(X1, X2)) -> active#(X1), active#(isNat(length(V1))) -> isNatList#(V1)) (active#(and(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (active#(and(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (active#(and(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (active#(and(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(and(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (active#(and(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (active#(and(X1, X2)) -> active#(X1), active#(isNatIList(V)) -> isNatList#(V)) (active#(and(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(and(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (active#(and(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (active#(take(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (active#(take(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(zeros()) -> cons#(0(), zeros())) (active#(take(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(s(X)) -> s#(active(X))) (active#(take(X1, X2)) -> active#(X1), active#(length(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(length(X)) -> length#(active(X))) (active#(take(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (active#(take(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (active#(take(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> isNat#(N)) (active#(take(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> isNatList#(L)) (active#(take(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (active#(take(X1, X2)) -> active#(X1), active#(U11(tt(), L)) -> s#(length(L))) (active#(take(X1, X2)) -> active#(X1), active#(U11(tt(), L)) -> length#(L)) (active#(take(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(U21(X)) -> U21#(active(X))) (active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> take#(X1, active(X2))) (active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> take#(active(X1), X2)) (active#(take(X1, X2)) -> active#(X1), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (active#(take(X1, X2)) -> active#(X1), active#(take(0(), IL)) -> isNatIList#(IL)) (active#(take(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (active#(take(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (active#(take(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (active#(take(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (active#(take(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (active#(take(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (active#(take(X1, X2)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (active#(take(X1, X2)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (active#(take(X1, X2)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (active#(take(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> and#(active(X1), X2)) (active#(take(X1, X2)) -> active#(X1), active#(isNat(s(V1))) -> isNat#(V1)) (active#(take(X1, X2)) -> active#(X1), active#(isNat(length(V1))) -> isNatList#(V1)) (active#(take(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (active#(take(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (active#(take(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (active#(take(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(take(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (active#(take(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (active#(take(X1, X2)) -> active#(X1), active#(isNatIList(V)) -> isNatList#(V)) (active#(take(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(take(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (active#(take(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (active#(cons(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (active#(cons(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(zeros()) -> cons#(0(), zeros())) (active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> s#(active(X))) (active#(cons(X1, X2)) -> active#(X1), active#(length(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(length(X)) -> length#(active(X))) (active#(cons(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (active#(cons(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (active#(cons(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> isNat#(N)) (active#(cons(X1, X2)) -> active#(X1), active#(length(cons(N, L))) -> isNatList#(L)) (active#(cons(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (active#(cons(X1, X2)) -> active#(X1), active#(U11(tt(), L)) -> s#(length(L))) (active#(cons(X1, X2)) -> active#(X1), active#(U11(tt(), L)) -> length#(L)) (active#(cons(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(U21(X)) -> U21#(active(X))) (active#(cons(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(cons(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> take#(X1, active(X2))) (active#(cons(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> take#(active(X1), X2)) (active#(cons(X1, X2)) -> active#(X1), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (active#(cons(X1, X2)) -> active#(X1), active#(take(0(), IL)) -> isNatIList#(IL)) (active#(cons(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (active#(cons(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (active#(cons(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (active#(cons(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (active#(cons(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (active#(cons(X1, X2)) -> active#(X1), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (active#(cons(X1, X2)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (active#(cons(X1, X2)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (active#(cons(X1, X2)) -> active#(X1), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (active#(cons(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> and#(active(X1), X2)) (active#(cons(X1, X2)) -> active#(X1), active#(isNat(s(V1))) -> isNat#(V1)) (active#(cons(X1, X2)) -> active#(X1), active#(isNat(length(V1))) -> isNatList#(V1)) (active#(cons(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (active#(cons(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (active#(cons(X1, X2)) -> active#(X1), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (active#(cons(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(cons(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (active#(cons(X1, X2)) -> active#(X1), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (active#(cons(X1, X2)) -> active#(X1), active#(isNatIList(V)) -> isNatList#(V)) (active#(cons(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(cons(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (active#(cons(X1, X2)) -> active#(X1), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (active#(take(0(), IL)) -> isNatIList#(IL), isNatIList#(ok(X)) -> isNatIList#(X)) (proper#(take(X1, X2)) -> take#(proper(X1), proper(X2)), take#(X1, mark(X2)) -> take#(X1, X2)) (proper#(take(X1, X2)) -> take#(proper(X1), proper(X2)), take#(mark(X1), X2) -> take#(X1, X2)) (proper#(take(X1, X2)) -> take#(proper(X1), proper(X2)), take#(ok(X1), ok(X2)) -> take#(X1, X2)) (proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2)), cons#(mark(X1), X2) -> cons#(X1, X2)) (proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2)), cons#(ok(X1), ok(X2)) -> cons#(X1, X2)) (active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2)), and#(mark(X1), X2) -> and#(X1, X2)) (active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2)), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N)), and#(mark(X1), X2) -> and#(X1, X2)) (active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N)), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N)), and#(mark(X1), X2) -> and#(X1, X2)) (active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N)), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(s(X)) -> s#(proper(X))) (proper#(and(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(length(X)) -> length#(proper(X))) (proper#(and(X1, X2)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(and(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U21(X)) -> U21#(proper(X))) (proper#(and(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> s#(proper(X))) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(length(X)) -> length#(proper(X))) (proper#(take(X1, X2)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U21(X)) -> U21#(proper(X))) (proper#(take(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> s#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(length(X)) -> length#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U21(X)) -> U21#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (top#(ok(X)) -> active#(X), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (top#(ok(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (top#(ok(X)) -> active#(X), active#(zeros()) -> cons#(0(), zeros())) (top#(ok(X)) -> active#(X), active#(s(X)) -> active#(X)) (top#(ok(X)) -> active#(X), active#(s(X)) -> s#(active(X))) (top#(ok(X)) -> active#(X), active#(length(X)) -> active#(X)) (top#(ok(X)) -> active#(X), active#(length(X)) -> length#(active(X))) (top#(ok(X)) -> active#(X), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (top#(ok(X)) -> active#(X), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (top#(ok(X)) -> active#(X), active#(length(cons(N, L))) -> isNat#(N)) (top#(ok(X)) -> active#(X), active#(length(cons(N, L))) -> isNatList#(L)) (top#(ok(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (top#(ok(X)) -> active#(X), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (top#(ok(X)) -> active#(X), active#(U11(tt(), L)) -> s#(length(L))) (top#(ok(X)) -> active#(X), active#(U11(tt(), L)) -> length#(L)) (top#(ok(X)) -> active#(X), active#(U21(X)) -> active#(X)) (top#(ok(X)) -> active#(X), active#(U21(X)) -> U21#(active(X))) (top#(ok(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (top#(ok(X)) -> active#(X), active#(take(X1, X2)) -> active#(X2)) (top#(ok(X)) -> active#(X), active#(take(X1, X2)) -> take#(X1, active(X2))) (top#(ok(X)) -> active#(X), active#(take(X1, X2)) -> take#(active(X1), X2)) (top#(ok(X)) -> active#(X), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (top#(ok(X)) -> active#(X), active#(take(0(), IL)) -> isNatIList#(IL)) (top#(ok(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (top#(ok(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (top#(ok(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (top#(ok(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (top#(ok(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (top#(ok(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (top#(ok(X)) -> active#(X), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (top#(ok(X)) -> active#(X), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (top#(ok(X)) -> active#(X), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (top#(ok(X)) -> active#(X), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (top#(ok(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (top#(ok(X)) -> active#(X), active#(and(X1, X2)) -> and#(active(X1), X2)) (top#(ok(X)) -> active#(X), active#(isNat(s(V1))) -> isNat#(V1)) (top#(ok(X)) -> active#(X), active#(isNat(length(V1))) -> isNatList#(V1)) (top#(ok(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (top#(ok(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (top#(ok(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (top#(ok(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (top#(ok(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (top#(ok(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (top#(ok(X)) -> active#(X), active#(isNatIList(V)) -> isNatList#(V)) (top#(ok(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (top#(ok(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (top#(ok(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> s#(proper(X))) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(length(X)) -> length#(proper(X))) (proper#(isNatIList(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U21(X)) -> U21#(proper(X))) (proper#(isNatIList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> s#(proper(X))) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(length(X)) -> length#(proper(X))) (proper#(isNat(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U21(X)) -> U21#(proper(X))) (proper#(isNat(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(cons(X1, X2)) -> cons#(proper(X1), proper(X2))) (proper#(length(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(length(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(s(X)) -> s#(proper(X))) (proper#(length(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(length(X)) -> length#(proper(X))) (proper#(length(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> U11#(proper(X1), proper(X2))) (proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X1)) (proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(U21(X)) -> U21#(proper(X))) (proper#(length(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(take(X1, X2)) -> take#(proper(X1), proper(X2))) (proper#(length(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(length(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> U31#(proper(X1), proper(X2), proper(X3), proper(X4))) (proper#(length(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(length(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(length(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(length(X)) -> proper#(X), proper#(and(X1, X2)) -> and#(proper(X1), proper(X2))) (proper#(length(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(length(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(isNat(X)) -> isNat#(proper(X))) (proper#(length(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(isNatList(X)) -> isNatList#(proper(X))) (proper#(length(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(isNatIList(X)) -> isNatIList#(proper(X))) (proper#(length(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (isNatIList#(ok(X)) -> isNatIList#(X), isNatIList#(ok(X)) -> isNatIList#(X)) (isNat#(ok(X)) -> isNat#(X), isNat#(ok(X)) -> isNat#(X)) (U21#(mark(X)) -> U21#(X), U21#(mark(X)) -> U21#(X)) (U21#(mark(X)) -> U21#(X), U21#(ok(X)) -> U21#(X)) (length#(mark(X)) -> length#(X), length#(mark(X)) -> length#(X)) (length#(mark(X)) -> length#(X), length#(ok(X)) -> length#(X)) (s#(mark(X)) -> s#(X), s#(mark(X)) -> s#(X)) (s#(mark(X)) -> s#(X), s#(ok(X)) -> s#(X)) (active#(length(X)) -> active#(X), active#(cons(X1, X2)) -> cons#(active(X1), X2)) (active#(length(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(length(X)) -> active#(X), active#(zeros()) -> cons#(0(), zeros())) (active#(length(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(length(X)) -> active#(X), active#(s(X)) -> s#(active(X))) (active#(length(X)) -> active#(X), active#(length(X)) -> active#(X)) (active#(length(X)) -> active#(X), active#(length(X)) -> length#(active(X))) (active#(length(X)) -> active#(X), active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L)) (active#(length(X)) -> active#(X), active#(length(cons(N, L))) -> and#(isNatList(L), isNat(N))) (active#(length(X)) -> active#(X), active#(length(cons(N, L))) -> isNat#(N)) (active#(length(X)) -> active#(X), active#(length(cons(N, L))) -> isNatList#(L)) (active#(length(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(length(X)) -> active#(X), active#(U11(X1, X2)) -> U11#(active(X1), X2)) (active#(length(X)) -> active#(X), active#(U11(tt(), L)) -> s#(length(L))) (active#(length(X)) -> active#(X), active#(U11(tt(), L)) -> length#(L)) (active#(length(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(length(X)) -> active#(X), active#(U21(X)) -> U21#(active(X))) (active#(length(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(length(X)) -> active#(X), active#(take(X1, X2)) -> active#(X2)) (active#(length(X)) -> active#(X), active#(take(X1, X2)) -> take#(X1, active(X2))) (active#(length(X)) -> active#(X), active#(take(X1, X2)) -> take#(active(X1), X2)) (active#(length(X)) -> active#(X), active#(take(0(), IL)) -> U21#(isNatIList(IL))) (active#(length(X)) -> active#(X), active#(take(0(), IL)) -> isNatIList#(IL)) (active#(length(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)) (active#(length(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> and#(isNat(M), isNat(N))) (active#(length(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> and#(isNatIList(IL), and(isNat(M), isNat(N)))) (active#(length(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNat#(N)) (active#(length(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNat#(M)) (active#(length(X)) -> active#(X), active#(take(s(M), cons(N, IL))) -> isNatIList#(IL)) (active#(length(X)) -> active#(X), active#(U31(X1, X2, X3, X4)) -> active#(X1)) (active#(length(X)) -> active#(X), active#(U31(X1, X2, X3, X4)) -> U31#(active(X1), X2, X3, X4)) (active#(length(X)) -> active#(X), active#(U31(tt(), IL, M, N)) -> cons#(N, take(M, IL))) (active#(length(X)) -> active#(X), active#(U31(tt(), IL, M, N)) -> take#(M, IL)) (active#(length(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (active#(length(X)) -> active#(X), active#(and(X1, X2)) -> and#(active(X1), X2)) (active#(length(X)) -> active#(X), active#(isNat(s(V1))) -> isNat#(V1)) (active#(length(X)) -> active#(X), active#(isNat(length(V1))) -> isNatList#(V1)) (active#(length(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> and#(isNat(V1), isNatList(V2))) (active#(length(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> isNat#(V1)) (active#(length(X)) -> active#(X), active#(isNatList(cons(V1, V2))) -> isNatList#(V2)) (active#(length(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(length(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> isNat#(V1)) (active#(length(X)) -> active#(X), active#(isNatList(take(V1, V2))) -> isNatIList#(V2)) (active#(length(X)) -> active#(X), active#(isNatIList(V)) -> isNatList#(V)) (active#(length(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> and#(isNat(V1), isNatIList(V2))) (active#(length(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> isNat#(V1)) (active#(length(X)) -> active#(X), active#(isNatIList(cons(V1, V2))) -> isNatIList#(V2)) (active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N), U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4)) (active#(take(s(M), cons(N, IL))) -> U31#(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N), U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4)) (active#(isNatIList(cons(V1, V2))) -> isNat#(V1), isNat#(ok(X)) -> isNat#(X)) (active#(isNatList(cons(V1, V2))) -> isNat#(V1), isNat#(ok(X)) -> isNat#(X)) (active#(isNat(s(V1))) -> isNat#(V1), isNat#(ok(X)) -> isNat#(X)) (U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4), U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4)) (U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4), U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4)) (active#(U11(tt(), L)) -> length#(L), length#(mark(X)) -> length#(X)) (active#(U11(tt(), L)) -> length#(L), length#(ok(X)) -> length#(X)) (active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L), U11#(mark(X1), X2) -> U11#(X1, X2)) (active#(length(cons(N, L))) -> U11#(and(isNatList(L), isNat(N)), L), U11#(ok(X1), ok(X2)) -> U11#(X1, X2)) (active#(isNatIList(V)) -> isNatList#(V), isNatList#(ok(X)) -> isNatList#(X)) (and#(mark(X1), X2) -> and#(X1, X2), and#(mark(X1), X2) -> and#(X1, X2)) (and#(mark(X1), X2) -> and#(X1, X2), and#(ok(X1), ok(X2)) -> and#(X1, X2)) (take#(mark(X1), X2) -> take#(X1, X2), take#(X1, mark(X2)) -> take#(X1, X2)) (take#(mark(X1), X2) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2)) (take#(mark(X1), X2) -> take#(X1, X2), take#(ok(X1), ok(X2)) -> take#(X1, X2)) (U11#(ok(X1), ok(X2)) -> U11#(X1, X2), U11#(mark(X1), X2) -> U11#(X1, X2)) (U11#(ok(X1), ok(X2)) -> U11#(X1, X2), U11#(ok(X1), ok(X2)) -> U11#(X1, X2)) (cons#(ok(X1), ok(X2)) -> cons#(X1, X2), cons#(mark(X1), X2) -> cons#(X1, X2)) (cons#(ok(X1), ok(X2)) -> cons#(X1, X2), cons#(ok(X1), ok(X2)) -> cons#(X1, X2)) (active#(take(s(M), cons(N, IL))) -> isNat#(N), isNat#(ok(X)) -> isNat#(X)) (active#(U11(tt(), L)) -> s#(length(L)), s#(mark(X)) -> s#(X)) (active#(U11(tt(), L)) -> s#(length(L)), s#(ok(X)) -> s#(X)) (active#(take(0(), IL)) -> U21#(isNatIList(IL)), U21#(mark(X)) -> U21#(X)) (active#(take(0(), IL)) -> U21#(isNatIList(IL)), U21#(ok(X)) -> U21#(X)) (active#(U11(X1, X2)) -> U11#(active(X1), X2), U11#(mark(X1), X2) -> U11#(X1, X2)) (active#(U11(X1, X2)) -> U11#(active(X1), X2), U11#(ok(X1), ok(X2)) -> U11#(X1, X2)) (top#(ok(X)) -> top#(active(X)), top#(mark(X)) -> proper#(X)) (top#(ok(X)) -> top#(active(X)), top#(mark(X)) -> top#(proper(X))) (top#(ok(X)) -> top#(active(X)), top#(ok(X)) -> active#(X)) (top#(ok(X)) -> top#(active(X)), top#(ok(X)) -> top#(active(X))) (proper#(isNatIList(X)) -> isNatIList#(proper(X)), isNatIList#(ok(X)) -> isNatIList#(X)) (proper#(isNat(X)) -> isNat#(proper(X)), isNat#(ok(X)) -> isNat#(X)) (proper#(length(X)) -> length#(proper(X)), length#(mark(X)) -> length#(X)) (proper#(length(X)) -> length#(proper(X)), length#(ok(X)) -> length#(X)) (active#(U21(X)) -> U21#(active(X)), U21#(mark(X)) -> U21#(X)) (active#(U21(X)) -> U21#(active(X)), U21#(ok(X)) -> U21#(X)) (active#(s(X)) -> s#(active(X)), s#(mark(X)) -> s#(X)) (active#(s(X)) -> s#(active(X)), s#(ok(X)) -> s#(X)) (active#(U31(tt(), IL, M, N)) -> take#(M, IL), take#(X1, mark(X2)) -> take#(X1, X2)) (active#(U31(tt(), IL, M, N)) -> take#(M, IL), take#(mark(X1), X2) -> take#(X1, X2)) (active#(U31(tt(), IL, M, N)) -> take#(M, IL), take#(ok(X1), ok(X2)) -> take#(X1, X2)) (active#(isNatList(take(V1, V2))) -> isNatIList#(V2), isNatIList#(ok(X)) -> isNatIList#(X)) (active#(take(s(M), cons(N, IL))) -> isNat#(M), isNat#(ok(X)) -> isNat#(X)) } SCCS: Scc: {top#(mark(X)) -> top#(proper(X)), top#(ok(X)) -> top#(active(X))} Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Scc: {isNatIList#(ok(X)) -> isNatIList#(X)} Scc: {isNatList#(ok(X)) -> isNatList#(X)} Scc: {isNat#(ok(X)) -> isNat#(X)} Scc: { and#(mark(X1), X2) -> and#(X1, X2), and#(ok(X1), ok(X2)) -> and#(X1, X2)} Scc: { U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4), U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4)} Scc: { take#(X1, mark(X2)) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2), take#(ok(X1), ok(X2)) -> take#(X1, X2)} Scc: {U21#(mark(X)) -> U21#(X), U21#(ok(X)) -> U21#(X)} Scc: { U11#(mark(X1), X2) -> U11#(X1, X2), U11#(ok(X1), ok(X2)) -> U11#(X1, X2)} Scc: {length#(mark(X)) -> length#(X), length#(ok(X)) -> length#(X)} Scc: {s#(mark(X)) -> s#(X), s#(ok(X)) -> s#(X)} Scc: { active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(length(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2), active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} Scc: { cons#(mark(X1), X2) -> cons#(X1, X2), cons#(ok(X1), ok(X2)) -> cons#(X1, X2)} SCC: Strict: {top#(mark(X)) -> top#(proper(X)), top#(ok(X)) -> top#(active(X))} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} Fail SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} EDG: { (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(length(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(length(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(length(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(length(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(length(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(length(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(length(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(length(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(length(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(length(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(length(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(length(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(length(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(length(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(length(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(length(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) } SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(length(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} EDG: { (proper#(U21(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) } SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} EDG: { (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) } SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} EDG: { (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U21(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(U21(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U21(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U21(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U21(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(U21(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U21(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) } SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(U21(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} EDG: { (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) } SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} EDG: { (proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) } SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} EDG: {(proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X), proper#(isNatList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} EDG: {(proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNat(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNat(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNat(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNat(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNat(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(isNat(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNat(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)} EDG: {(proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(s(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(s(X)) -> proper#(X)) (proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(s(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(s(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(s(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(s(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)} EDG: {(proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(and(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(and(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(and(X1, X2)) -> proper#(X1), proper#(and(X1, X2)) -> proper#(X1)) (proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(and(X1, X2)) -> proper#(X1)) (proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(and(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)} EDG: {(proper#(isNatIList(X)) -> proper#(X), proper#(isNatIList(X)) -> proper#(X)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(isNatIList(X)) -> proper#(X), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(isNatIList(X)) -> proper#(X), proper#(take(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(isNatIList(X)) -> proper#(X), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(isNatIList(X)) -> proper#(X)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(isNatIList(X)) -> proper#(X))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(isNatIList(X)) -> proper#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} EDG: {(proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X3), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} EDG: {(proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} EDG: {(proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(take(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2)) (proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(take(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2), proper#(take(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} EDG: {(proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U11(X1, X2)) -> proper#(X2)) (proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(U11(X1, X2)) -> proper#(X2), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} EDG: {(proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)) (proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(cons(X1, X2)) -> proper#(X1)) (proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4))} SCCS: Scc: { proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} SCC: Strict: { proper#(cons(X1, X2)) -> proper#(X1), proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: {proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} EDG: {(proper#(U31(X1, X2, X3, X4)) -> proper#(X4), proper#(U31(X1, X2, X3, X4)) -> proper#(X4))} SCCS: Scc: {proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} SCC: Strict: {proper#(U31(X1, X2, X3, X4)) -> proper#(X4)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(proper#) = 0 Strict: {} Qed SCC: Strict: {isNatIList#(ok(X)) -> isNatIList#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(isNatIList#) = 0 Strict: {} Qed SCC: Strict: {isNatList#(ok(X)) -> isNatList#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(isNatList#) = 0 Strict: {} Qed SCC: Strict: {isNat#(ok(X)) -> isNat#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(isNat#) = 0 Strict: {} Qed SCC: Strict: { and#(mark(X1), X2) -> and#(X1, X2), and#(ok(X1), ok(X2)) -> and#(X1, X2)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(and#) = 0 Strict: {and#(mark(X1), X2) -> and#(X1, X2)} EDG: {(and#(mark(X1), X2) -> and#(X1, X2), and#(mark(X1), X2) -> and#(X1, X2))} SCCS: Scc: {and#(mark(X1), X2) -> and#(X1, X2)} SCC: Strict: {and#(mark(X1), X2) -> and#(X1, X2)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(and#) = 0 Strict: {} Qed SCC: Strict: { U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4), U31#(ok(X1), ok(X2), ok(X3), ok(X4)) -> U31#(X1, X2, X3, X4)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(U31#) = 0 Strict: {U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4)} EDG: {(U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4), U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4))} SCCS: Scc: {U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4)} SCC: Strict: {U31#(mark(X1), X2, X3, X4) -> U31#(X1, X2, X3, X4)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(U31#) = 0 Strict: {} Qed SCC: Strict: { take#(X1, mark(X2)) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2), take#(ok(X1), ok(X2)) -> take#(X1, X2)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(take#) = 0 Strict: {take#(X1, mark(X2)) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2)} EDG: {(take#(mark(X1), X2) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2)) (take#(mark(X1), X2) -> take#(X1, X2), take#(X1, mark(X2)) -> take#(X1, X2)) (take#(X1, mark(X2)) -> take#(X1, X2), take#(X1, mark(X2)) -> take#(X1, X2)) (take#(X1, mark(X2)) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2))} SCCS: Scc: {take#(X1, mark(X2)) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2)} SCC: Strict: {take#(X1, mark(X2)) -> take#(X1, X2), take#(mark(X1), X2) -> take#(X1, X2)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(take#) = 0 Strict: {take#(X1, mark(X2)) -> take#(X1, X2)} EDG: {(take#(X1, mark(X2)) -> take#(X1, X2), take#(X1, mark(X2)) -> take#(X1, X2))} SCCS: Scc: {take#(X1, mark(X2)) -> take#(X1, X2)} SCC: Strict: {take#(X1, mark(X2)) -> take#(X1, X2)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(take#) = 1 Strict: {} Qed SCC: Strict: {U21#(mark(X)) -> U21#(X), U21#(ok(X)) -> U21#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(U21#) = 0 Strict: {U21#(ok(X)) -> U21#(X)} EDG: {(U21#(ok(X)) -> U21#(X), U21#(ok(X)) -> U21#(X))} SCCS: Scc: {U21#(ok(X)) -> U21#(X)} SCC: Strict: {U21#(ok(X)) -> U21#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(U21#) = 0 Strict: {} Qed SCC: Strict: { U11#(mark(X1), X2) -> U11#(X1, X2), U11#(ok(X1), ok(X2)) -> U11#(X1, X2)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(U11#) = 0 Strict: {U11#(mark(X1), X2) -> U11#(X1, X2)} EDG: {(U11#(mark(X1), X2) -> U11#(X1, X2), U11#(mark(X1), X2) -> U11#(X1, X2))} SCCS: Scc: {U11#(mark(X1), X2) -> U11#(X1, X2)} SCC: Strict: {U11#(mark(X1), X2) -> U11#(X1, X2)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(U11#) = 0 Strict: {} Qed SCC: Strict: {length#(mark(X)) -> length#(X), length#(ok(X)) -> length#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(length#) = 0 Strict: {length#(ok(X)) -> length#(X)} EDG: {(length#(ok(X)) -> length#(X), length#(ok(X)) -> length#(X))} SCCS: Scc: {length#(ok(X)) -> length#(X)} SCC: Strict: {length#(ok(X)) -> length#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(length#) = 0 Strict: {} Qed SCC: Strict: {s#(mark(X)) -> s#(X), s#(ok(X)) -> s#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(s#) = 0 Strict: {s#(mark(X)) -> s#(X)} EDG: {(s#(mark(X)) -> s#(X), s#(mark(X)) -> s#(X))} SCCS: Scc: {s#(mark(X)) -> s#(X)} SCC: Strict: {s#(mark(X)) -> s#(X)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(s#) = 0 Strict: {} Qed SCC: Strict: { active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(length(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2), active#(U31(X1, X2, X3, X4)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(active#) = 0 Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(length(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> active#(X1)} EDG: {(active#(length(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (active#(length(X)) -> active#(X), active#(take(X1, X2)) -> active#(X2)) (active#(length(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(length(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(length(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(length(X)) -> active#(X), active#(length(X)) -> active#(X)) (active#(length(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(length(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(cons(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(length(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(length(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(take(X1, X2)) -> active#(X2)) (active#(take(X1, X2)) -> active#(X2), active#(take(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(U21(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X2), active#(U11(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(length(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X2), active#(s(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X2), active#(cons(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(length(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(length(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(length(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X2)) (active#(U21(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(length(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(take(X1, X2)) -> active#(X2)) (active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1))} SCCS: Scc: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(length(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> active#(X1)} SCC: Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(length(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> active#(X1)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(active#) = 0 Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> active#(X1)} EDG: {(active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(U11(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(and(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X2)) (active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(cons(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(s(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X2), active#(U11(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(U21(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X2), active#(take(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X2), active#(take(X1, X2)) -> active#(X2)) (active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(take(X1, X2)) -> active#(X2)) (active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(take(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2)) (active#(cons(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1))} SCCS: Scc: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> active#(X1)} SCC: Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X2), active#(and(X1, X2)) -> active#(X1)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(active#) = 0 Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} EDG: {(active#(U21(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(take(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(take(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(take(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1))} SCCS: Scc: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} SCC: Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(take(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(active#) = 0 Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)} EDG: {(active#(U21(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(U21(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(U21(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(U21(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1))} SCCS: Scc: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)} SCC: Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(U21(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(active#) = 0 Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} EDG: {(active#(cons(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(cons(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(cons(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(U11(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(cons(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1))} SCCS: Scc: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} SCC: Strict: {active#(cons(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(active#) = 0 Strict: { active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} EDG: {(active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(U11(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(and(X1, X2)) -> active#(X1), active#(U11(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1)) (active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1))} SCCS: Scc: { active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} SCC: Strict: { active#(s(X)) -> active#(X), active#(U11(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(active#) = 0 Strict: { active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)} EDG: {(active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1)) (active#(and(X1, X2)) -> active#(X1), active#(s(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(s(X)) -> active#(X)) (active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1))} SCCS: Scc: { active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)} SCC: Strict: { active#(s(X)) -> active#(X), active#(and(X1, X2)) -> active#(X1)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(active#) = 0 Strict: {active#(and(X1, X2)) -> active#(X1)} EDG: {(active#(and(X1, X2)) -> active#(X1), active#(and(X1, X2)) -> active#(X1))} SCCS: Scc: {active#(and(X1, X2)) -> active#(X1)} SCC: Strict: {active#(and(X1, X2)) -> active#(X1)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(active#) = 0 Strict: {} Qed SCC: Strict: { cons#(mark(X1), X2) -> cons#(X1, X2), cons#(ok(X1), ok(X2)) -> cons#(X1, X2)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(cons#) = 0 Strict: {cons#(mark(X1), X2) -> cons#(X1, X2)} EDG: {(cons#(mark(X1), X2) -> cons#(X1, X2), cons#(mark(X1), X2) -> cons#(X1, X2))} SCCS: Scc: {cons#(mark(X1), X2) -> cons#(X1, X2)} SCC: Strict: {cons#(mark(X1), X2) -> cons#(X1, X2)} Weak: { cons(mark(X1), X2) -> mark(cons(X1, X2)), cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)), active(cons(X1, X2)) -> cons(active(X1), X2), active(zeros()) -> mark(cons(0(), zeros())), active(s(X)) -> s(active(X)), active(length(X)) -> length(active(X)), active(length(cons(N, L))) -> mark(U11(and(isNatList(L), isNat(N)), L)), active(length(nil())) -> mark(0()), active(U11(X1, X2)) -> U11(active(X1), X2), active(U11(tt(), L)) -> mark(s(length(L))), active(U21(X)) -> U21(active(X)), active(U21(tt())) -> mark(nil()), active(take(X1, X2)) -> take(X1, active(X2)), active(take(X1, X2)) -> take(active(X1), X2), active(take(0(), IL)) -> mark(U21(isNatIList(IL))), active(take(s(M), cons(N, IL))) -> mark(U31(and(isNatIList(IL), and(isNat(M), isNat(N))), IL, M, N)), active(U31(X1, X2, X3, X4)) -> U31(active(X1), X2, X3, X4), active(U31(tt(), IL, M, N)) -> mark(cons(N, take(M, IL))), active(and(X1, X2)) -> and(active(X1), X2), active(and(tt(), X)) -> mark(X), active(isNat(0())) -> mark(tt()), active(isNat(s(V1))) -> mark(isNat(V1)), active(isNat(length(V1))) -> mark(isNatList(V1)), active(isNatList(cons(V1, V2))) -> mark(and(isNat(V1), isNatList(V2))), active(isNatList(nil())) -> mark(tt()), active(isNatList(take(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(V)) -> mark(isNatList(V)), active(isNatIList(cons(V1, V2))) -> mark(and(isNat(V1), isNatIList(V2))), active(isNatIList(zeros())) -> mark(tt()), s(mark(X)) -> mark(s(X)), s(ok(X)) -> ok(s(X)), length(mark(X)) -> mark(length(X)), length(ok(X)) -> ok(length(X)), U11(mark(X1), X2) -> mark(U11(X1, X2)), U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)), U21(mark(X)) -> mark(U21(X)), U21(ok(X)) -> ok(U21(X)), take(X1, mark(X2)) -> mark(take(X1, X2)), take(mark(X1), X2) -> mark(take(X1, X2)), take(ok(X1), ok(X2)) -> ok(take(X1, X2)), U31(mark(X1), X2, X3, X4) -> mark(U31(X1, X2, X3, X4)), U31(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(U31(X1, X2, X3, X4)), and(mark(X1), X2) -> mark(and(X1, X2)), and(ok(X1), ok(X2)) -> ok(and(X1, X2)), isNat(ok(X)) -> ok(isNat(X)), isNatList(ok(X)) -> ok(isNatList(X)), isNatIList(ok(X)) -> ok(isNatIList(X)), proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)), proper(0()) -> ok(0()), proper(zeros()) -> ok(zeros()), proper(s(X)) -> s(proper(X)), proper(length(X)) -> length(proper(X)), proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)), proper(tt()) -> ok(tt()), proper(nil()) -> ok(nil()), proper(U21(X)) -> U21(proper(X)), proper(take(X1, X2)) -> take(proper(X1), proper(X2)), proper(U31(X1, X2, X3, X4)) -> U31(proper(X1), proper(X2), proper(X3), proper(X4)), proper(and(X1, X2)) -> and(proper(X1), proper(X2)), proper(isNat(X)) -> isNat(proper(X)), proper(isNatList(X)) -> isNatList(proper(X)), proper(isNatIList(X)) -> isNatIList(proper(X)), top(mark(X)) -> top(proper(X)), top(ok(X)) -> top(active(X))} SPSC: Simple Projection: pi(cons#) = 0 Strict: {} Qed