MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { a__and(X1, X2) -> and(X1, X2) , a__and(tt(), T) -> mark(T) , mark(tt()) -> tt() , mark(0()) -> 0() , mark(s(X)) -> s(mark(X)) , mark(length(X)) -> a__length(mark(X)) , mark(zeros()) -> a__zeros() , mark(cons(X1, X2)) -> cons(mark(X1), X2) , mark(nil()) -> nil() , mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) , mark(and(X1, X2)) -> a__and(mark(X1), mark(X2)) , mark(isNatIList(X)) -> a__isNatIList(X) , mark(isNatList(X)) -> a__isNatList(X) , mark(isNat(X)) -> a__isNat(X) , mark(uTake1(X)) -> a__uTake1(mark(X)) , mark(uTake2(X1, X2, X3, X4)) -> a__uTake2(mark(X1), X2, X3, X4) , mark(uLength(X1, X2)) -> a__uLength(mark(X1), X2) , a__isNatIList(IL) -> a__isNatList(IL) , a__isNatIList(X) -> isNatIList(X) , a__isNatIList(zeros()) -> tt() , a__isNatIList(cons(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNatList(X) -> isNatList(X) , a__isNatList(cons(N, L)) -> a__and(a__isNat(N), a__isNatList(L)) , a__isNatList(nil()) -> tt() , a__isNatList(take(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNat(X) -> isNat(X) , a__isNat(0()) -> tt() , a__isNat(s(N)) -> a__isNat(N) , a__isNat(length(L)) -> a__isNatList(L) , a__zeros() -> zeros() , a__zeros() -> cons(0(), zeros()) , a__take(X1, X2) -> take(X1, X2) , a__take(0(), IL) -> a__uTake1(a__isNatIList(IL)) , a__take(s(M), cons(N, IL)) -> a__uTake2(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL) , a__uTake1(X) -> uTake1(X) , a__uTake1(tt()) -> nil() , a__uTake2(X1, X2, X3, X4) -> uTake2(X1, X2, X3, X4) , a__uTake2(tt(), M, N, IL) -> cons(mark(N), take(M, IL)) , a__length(X) -> length(X) , a__length(cons(N, L)) -> a__uLength(a__and(a__isNat(N), a__isNatList(L)), L) , a__uLength(X1, X2) -> uLength(X1, X2) , a__uLength(tt(), L) -> s(a__length(mark(L))) } Obligation: innermost runtime complexity Answer: MAYBE We add following dependency tuples: Strict DPs: { a__and^#(X1, X2) -> c_1() , a__and^#(tt(), T) -> c_2(mark^#(T)) , mark^#(tt()) -> c_3() , mark^#(0()) -> c_4() , mark^#(s(X)) -> c_5(mark^#(X)) , mark^#(length(X)) -> c_6(a__length^#(mark(X)), mark^#(X)) , mark^#(zeros()) -> c_7(a__zeros^#()) , mark^#(cons(X1, X2)) -> c_8(mark^#(X1)) , mark^#(nil()) -> c_9() , mark^#(take(X1, X2)) -> c_10(a__take^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(and(X1, X2)) -> c_11(a__and^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(isNatIList(X)) -> c_12(a__isNatIList^#(X)) , mark^#(isNatList(X)) -> c_13(a__isNatList^#(X)) , mark^#(isNat(X)) -> c_14(a__isNat^#(X)) , mark^#(uTake1(X)) -> c_15(a__uTake1^#(mark(X)), mark^#(X)) , mark^#(uTake2(X1, X2, X3, X4)) -> c_16(a__uTake2^#(mark(X1), X2, X3, X4), mark^#(X1)) , mark^#(uLength(X1, X2)) -> c_17(a__uLength^#(mark(X1), X2), mark^#(X1)) , a__length^#(X) -> c_39() , a__length^#(cons(N, L)) -> c_40(a__uLength^#(a__and(a__isNat(N), a__isNatList(L)), L), a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__zeros^#() -> c_30() , a__zeros^#() -> c_31() , a__take^#(X1, X2) -> c_32() , a__take^#(0(), IL) -> c_33(a__uTake1^#(a__isNatIList(IL)), a__isNatIList^#(IL)) , a__take^#(s(M), cons(N, IL)) -> c_34(a__uTake2^#(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL), a__and^#(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), a__isNat^#(M), a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatIList^#(IL) -> c_18(a__isNatList^#(IL)) , a__isNatIList^#(X) -> c_19() , a__isNatIList^#(zeros()) -> c_20() , a__isNatIList^#(cons(N, IL)) -> c_21(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatList^#(X) -> c_22() , a__isNatList^#(cons(N, L)) -> c_23(a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__isNatList^#(nil()) -> c_24() , a__isNatList^#(take(N, IL)) -> c_25(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNat^#(X) -> c_26() , a__isNat^#(0()) -> c_27() , a__isNat^#(s(N)) -> c_28(a__isNat^#(N)) , a__isNat^#(length(L)) -> c_29(a__isNatList^#(L)) , a__uTake1^#(X) -> c_35() , a__uTake1^#(tt()) -> c_36() , a__uTake2^#(X1, X2, X3, X4) -> c_37() , a__uTake2^#(tt(), M, N, IL) -> c_38(mark^#(N)) , a__uLength^#(X1, X2) -> c_41() , a__uLength^#(tt(), L) -> c_42(a__length^#(mark(L)), mark^#(L)) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { a__and^#(X1, X2) -> c_1() , a__and^#(tt(), T) -> c_2(mark^#(T)) , mark^#(tt()) -> c_3() , mark^#(0()) -> c_4() , mark^#(s(X)) -> c_5(mark^#(X)) , mark^#(length(X)) -> c_6(a__length^#(mark(X)), mark^#(X)) , mark^#(zeros()) -> c_7(a__zeros^#()) , mark^#(cons(X1, X2)) -> c_8(mark^#(X1)) , mark^#(nil()) -> c_9() , mark^#(take(X1, X2)) -> c_10(a__take^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(and(X1, X2)) -> c_11(a__and^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(isNatIList(X)) -> c_12(a__isNatIList^#(X)) , mark^#(isNatList(X)) -> c_13(a__isNatList^#(X)) , mark^#(isNat(X)) -> c_14(a__isNat^#(X)) , mark^#(uTake1(X)) -> c_15(a__uTake1^#(mark(X)), mark^#(X)) , mark^#(uTake2(X1, X2, X3, X4)) -> c_16(a__uTake2^#(mark(X1), X2, X3, X4), mark^#(X1)) , mark^#(uLength(X1, X2)) -> c_17(a__uLength^#(mark(X1), X2), mark^#(X1)) , a__length^#(X) -> c_39() , a__length^#(cons(N, L)) -> c_40(a__uLength^#(a__and(a__isNat(N), a__isNatList(L)), L), a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__zeros^#() -> c_30() , a__zeros^#() -> c_31() , a__take^#(X1, X2) -> c_32() , a__take^#(0(), IL) -> c_33(a__uTake1^#(a__isNatIList(IL)), a__isNatIList^#(IL)) , a__take^#(s(M), cons(N, IL)) -> c_34(a__uTake2^#(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL), a__and^#(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), a__isNat^#(M), a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatIList^#(IL) -> c_18(a__isNatList^#(IL)) , a__isNatIList^#(X) -> c_19() , a__isNatIList^#(zeros()) -> c_20() , a__isNatIList^#(cons(N, IL)) -> c_21(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatList^#(X) -> c_22() , a__isNatList^#(cons(N, L)) -> c_23(a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__isNatList^#(nil()) -> c_24() , a__isNatList^#(take(N, IL)) -> c_25(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNat^#(X) -> c_26() , a__isNat^#(0()) -> c_27() , a__isNat^#(s(N)) -> c_28(a__isNat^#(N)) , a__isNat^#(length(L)) -> c_29(a__isNatList^#(L)) , a__uTake1^#(X) -> c_35() , a__uTake1^#(tt()) -> c_36() , a__uTake2^#(X1, X2, X3, X4) -> c_37() , a__uTake2^#(tt(), M, N, IL) -> c_38(mark^#(N)) , a__uLength^#(X1, X2) -> c_41() , a__uLength^#(tt(), L) -> c_42(a__length^#(mark(L)), mark^#(L)) } Weak Trs: { a__and(X1, X2) -> and(X1, X2) , a__and(tt(), T) -> mark(T) , mark(tt()) -> tt() , mark(0()) -> 0() , mark(s(X)) -> s(mark(X)) , mark(length(X)) -> a__length(mark(X)) , mark(zeros()) -> a__zeros() , mark(cons(X1, X2)) -> cons(mark(X1), X2) , mark(nil()) -> nil() , mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) , mark(and(X1, X2)) -> a__and(mark(X1), mark(X2)) , mark(isNatIList(X)) -> a__isNatIList(X) , mark(isNatList(X)) -> a__isNatList(X) , mark(isNat(X)) -> a__isNat(X) , mark(uTake1(X)) -> a__uTake1(mark(X)) , mark(uTake2(X1, X2, X3, X4)) -> a__uTake2(mark(X1), X2, X3, X4) , mark(uLength(X1, X2)) -> a__uLength(mark(X1), X2) , a__isNatIList(IL) -> a__isNatList(IL) , a__isNatIList(X) -> isNatIList(X) , a__isNatIList(zeros()) -> tt() , a__isNatIList(cons(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNatList(X) -> isNatList(X) , a__isNatList(cons(N, L)) -> a__and(a__isNat(N), a__isNatList(L)) , a__isNatList(nil()) -> tt() , a__isNatList(take(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNat(X) -> isNat(X) , a__isNat(0()) -> tt() , a__isNat(s(N)) -> a__isNat(N) , a__isNat(length(L)) -> a__isNatList(L) , a__zeros() -> zeros() , a__zeros() -> cons(0(), zeros()) , a__take(X1, X2) -> take(X1, X2) , a__take(0(), IL) -> a__uTake1(a__isNatIList(IL)) , a__take(s(M), cons(N, IL)) -> a__uTake2(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL) , a__uTake1(X) -> uTake1(X) , a__uTake1(tt()) -> nil() , a__uTake2(X1, X2, X3, X4) -> uTake2(X1, X2, X3, X4) , a__uTake2(tt(), M, N, IL) -> cons(mark(N), take(M, IL)) , a__length(X) -> length(X) , a__length(cons(N, L)) -> a__uLength(a__and(a__isNat(N), a__isNatList(L)), L) , a__uLength(X1, X2) -> uLength(X1, X2) , a__uLength(tt(), L) -> s(a__length(mark(L))) } Obligation: innermost runtime complexity Answer: MAYBE We estimate the number of application of {1,3,4,9,18,20,21,22,26,27,29,31,33,34,37,38,39,41} by applications of Pre({1,3,4,9,18,20,21,22,26,27,29,31,33,34,37,38,39,41}) = {2,5,6,7,8,10,11,12,13,14,15,16,17,19,23,24,25,28,30,32,35,36,40,42}. Here rules are labeled as follows: DPs: { 1: a__and^#(X1, X2) -> c_1() , 2: a__and^#(tt(), T) -> c_2(mark^#(T)) , 3: mark^#(tt()) -> c_3() , 4: mark^#(0()) -> c_4() , 5: mark^#(s(X)) -> c_5(mark^#(X)) , 6: mark^#(length(X)) -> c_6(a__length^#(mark(X)), mark^#(X)) , 7: mark^#(zeros()) -> c_7(a__zeros^#()) , 8: mark^#(cons(X1, X2)) -> c_8(mark^#(X1)) , 9: mark^#(nil()) -> c_9() , 10: mark^#(take(X1, X2)) -> c_10(a__take^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , 11: mark^#(and(X1, X2)) -> c_11(a__and^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , 12: mark^#(isNatIList(X)) -> c_12(a__isNatIList^#(X)) , 13: mark^#(isNatList(X)) -> c_13(a__isNatList^#(X)) , 14: mark^#(isNat(X)) -> c_14(a__isNat^#(X)) , 15: mark^#(uTake1(X)) -> c_15(a__uTake1^#(mark(X)), mark^#(X)) , 16: mark^#(uTake2(X1, X2, X3, X4)) -> c_16(a__uTake2^#(mark(X1), X2, X3, X4), mark^#(X1)) , 17: mark^#(uLength(X1, X2)) -> c_17(a__uLength^#(mark(X1), X2), mark^#(X1)) , 18: a__length^#(X) -> c_39() , 19: a__length^#(cons(N, L)) -> c_40(a__uLength^#(a__and(a__isNat(N), a__isNatList(L)), L), a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , 20: a__zeros^#() -> c_30() , 21: a__zeros^#() -> c_31() , 22: a__take^#(X1, X2) -> c_32() , 23: a__take^#(0(), IL) -> c_33(a__uTake1^#(a__isNatIList(IL)), a__isNatIList^#(IL)) , 24: a__take^#(s(M), cons(N, IL)) -> c_34(a__uTake2^#(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL), a__and^#(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), a__isNat^#(M), a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , 25: a__isNatIList^#(IL) -> c_18(a__isNatList^#(IL)) , 26: a__isNatIList^#(X) -> c_19() , 27: a__isNatIList^#(zeros()) -> c_20() , 28: a__isNatIList^#(cons(N, IL)) -> c_21(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , 29: a__isNatList^#(X) -> c_22() , 30: a__isNatList^#(cons(N, L)) -> c_23(a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , 31: a__isNatList^#(nil()) -> c_24() , 32: a__isNatList^#(take(N, IL)) -> c_25(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , 33: a__isNat^#(X) -> c_26() , 34: a__isNat^#(0()) -> c_27() , 35: a__isNat^#(s(N)) -> c_28(a__isNat^#(N)) , 36: a__isNat^#(length(L)) -> c_29(a__isNatList^#(L)) , 37: a__uTake1^#(X) -> c_35() , 38: a__uTake1^#(tt()) -> c_36() , 39: a__uTake2^#(X1, X2, X3, X4) -> c_37() , 40: a__uTake2^#(tt(), M, N, IL) -> c_38(mark^#(N)) , 41: a__uLength^#(X1, X2) -> c_41() , 42: a__uLength^#(tt(), L) -> c_42(a__length^#(mark(L)), mark^#(L)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { a__and^#(tt(), T) -> c_2(mark^#(T)) , mark^#(s(X)) -> c_5(mark^#(X)) , mark^#(length(X)) -> c_6(a__length^#(mark(X)), mark^#(X)) , mark^#(zeros()) -> c_7(a__zeros^#()) , mark^#(cons(X1, X2)) -> c_8(mark^#(X1)) , mark^#(take(X1, X2)) -> c_10(a__take^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(and(X1, X2)) -> c_11(a__and^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(isNatIList(X)) -> c_12(a__isNatIList^#(X)) , mark^#(isNatList(X)) -> c_13(a__isNatList^#(X)) , mark^#(isNat(X)) -> c_14(a__isNat^#(X)) , mark^#(uTake1(X)) -> c_15(a__uTake1^#(mark(X)), mark^#(X)) , mark^#(uTake2(X1, X2, X3, X4)) -> c_16(a__uTake2^#(mark(X1), X2, X3, X4), mark^#(X1)) , mark^#(uLength(X1, X2)) -> c_17(a__uLength^#(mark(X1), X2), mark^#(X1)) , a__length^#(cons(N, L)) -> c_40(a__uLength^#(a__and(a__isNat(N), a__isNatList(L)), L), a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__take^#(0(), IL) -> c_33(a__uTake1^#(a__isNatIList(IL)), a__isNatIList^#(IL)) , a__take^#(s(M), cons(N, IL)) -> c_34(a__uTake2^#(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL), a__and^#(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), a__isNat^#(M), a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatIList^#(IL) -> c_18(a__isNatList^#(IL)) , a__isNatIList^#(cons(N, IL)) -> c_21(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatList^#(cons(N, L)) -> c_23(a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__isNatList^#(take(N, IL)) -> c_25(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNat^#(s(N)) -> c_28(a__isNat^#(N)) , a__isNat^#(length(L)) -> c_29(a__isNatList^#(L)) , a__uTake2^#(tt(), M, N, IL) -> c_38(mark^#(N)) , a__uLength^#(tt(), L) -> c_42(a__length^#(mark(L)), mark^#(L)) } Weak DPs: { a__and^#(X1, X2) -> c_1() , mark^#(tt()) -> c_3() , mark^#(0()) -> c_4() , mark^#(nil()) -> c_9() , a__length^#(X) -> c_39() , a__zeros^#() -> c_30() , a__zeros^#() -> c_31() , a__take^#(X1, X2) -> c_32() , a__isNatIList^#(X) -> c_19() , a__isNatIList^#(zeros()) -> c_20() , a__isNatList^#(X) -> c_22() , a__isNatList^#(nil()) -> c_24() , a__isNat^#(X) -> c_26() , a__isNat^#(0()) -> c_27() , a__uTake1^#(X) -> c_35() , a__uTake1^#(tt()) -> c_36() , a__uTake2^#(X1, X2, X3, X4) -> c_37() , a__uLength^#(X1, X2) -> c_41() } Weak Trs: { a__and(X1, X2) -> and(X1, X2) , a__and(tt(), T) -> mark(T) , mark(tt()) -> tt() , mark(0()) -> 0() , mark(s(X)) -> s(mark(X)) , mark(length(X)) -> a__length(mark(X)) , mark(zeros()) -> a__zeros() , mark(cons(X1, X2)) -> cons(mark(X1), X2) , mark(nil()) -> nil() , mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) , mark(and(X1, X2)) -> a__and(mark(X1), mark(X2)) , mark(isNatIList(X)) -> a__isNatIList(X) , mark(isNatList(X)) -> a__isNatList(X) , mark(isNat(X)) -> a__isNat(X) , mark(uTake1(X)) -> a__uTake1(mark(X)) , mark(uTake2(X1, X2, X3, X4)) -> a__uTake2(mark(X1), X2, X3, X4) , mark(uLength(X1, X2)) -> a__uLength(mark(X1), X2) , a__isNatIList(IL) -> a__isNatList(IL) , a__isNatIList(X) -> isNatIList(X) , a__isNatIList(zeros()) -> tt() , a__isNatIList(cons(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNatList(X) -> isNatList(X) , a__isNatList(cons(N, L)) -> a__and(a__isNat(N), a__isNatList(L)) , a__isNatList(nil()) -> tt() , a__isNatList(take(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNat(X) -> isNat(X) , a__isNat(0()) -> tt() , a__isNat(s(N)) -> a__isNat(N) , a__isNat(length(L)) -> a__isNatList(L) , a__zeros() -> zeros() , a__zeros() -> cons(0(), zeros()) , a__take(X1, X2) -> take(X1, X2) , a__take(0(), IL) -> a__uTake1(a__isNatIList(IL)) , a__take(s(M), cons(N, IL)) -> a__uTake2(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL) , a__uTake1(X) -> uTake1(X) , a__uTake1(tt()) -> nil() , a__uTake2(X1, X2, X3, X4) -> uTake2(X1, X2, X3, X4) , a__uTake2(tt(), M, N, IL) -> cons(mark(N), take(M, IL)) , a__length(X) -> length(X) , a__length(cons(N, L)) -> a__uLength(a__and(a__isNat(N), a__isNatList(L)), L) , a__uLength(X1, X2) -> uLength(X1, X2) , a__uLength(tt(), L) -> s(a__length(mark(L))) } Obligation: innermost runtime complexity Answer: MAYBE We estimate the number of application of {4} by applications of Pre({4}) = {1,2,3,5,6,7,11,12,13,23,24}. Here rules are labeled as follows: DPs: { 1: a__and^#(tt(), T) -> c_2(mark^#(T)) , 2: mark^#(s(X)) -> c_5(mark^#(X)) , 3: mark^#(length(X)) -> c_6(a__length^#(mark(X)), mark^#(X)) , 4: mark^#(zeros()) -> c_7(a__zeros^#()) , 5: mark^#(cons(X1, X2)) -> c_8(mark^#(X1)) , 6: mark^#(take(X1, X2)) -> c_10(a__take^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , 7: mark^#(and(X1, X2)) -> c_11(a__and^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , 8: mark^#(isNatIList(X)) -> c_12(a__isNatIList^#(X)) , 9: mark^#(isNatList(X)) -> c_13(a__isNatList^#(X)) , 10: mark^#(isNat(X)) -> c_14(a__isNat^#(X)) , 11: mark^#(uTake1(X)) -> c_15(a__uTake1^#(mark(X)), mark^#(X)) , 12: mark^#(uTake2(X1, X2, X3, X4)) -> c_16(a__uTake2^#(mark(X1), X2, X3, X4), mark^#(X1)) , 13: mark^#(uLength(X1, X2)) -> c_17(a__uLength^#(mark(X1), X2), mark^#(X1)) , 14: a__length^#(cons(N, L)) -> c_40(a__uLength^#(a__and(a__isNat(N), a__isNatList(L)), L), a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , 15: a__take^#(0(), IL) -> c_33(a__uTake1^#(a__isNatIList(IL)), a__isNatIList^#(IL)) , 16: a__take^#(s(M), cons(N, IL)) -> c_34(a__uTake2^#(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL), a__and^#(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), a__isNat^#(M), a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , 17: a__isNatIList^#(IL) -> c_18(a__isNatList^#(IL)) , 18: a__isNatIList^#(cons(N, IL)) -> c_21(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , 19: a__isNatList^#(cons(N, L)) -> c_23(a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , 20: a__isNatList^#(take(N, IL)) -> c_25(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , 21: a__isNat^#(s(N)) -> c_28(a__isNat^#(N)) , 22: a__isNat^#(length(L)) -> c_29(a__isNatList^#(L)) , 23: a__uTake2^#(tt(), M, N, IL) -> c_38(mark^#(N)) , 24: a__uLength^#(tt(), L) -> c_42(a__length^#(mark(L)), mark^#(L)) , 25: a__and^#(X1, X2) -> c_1() , 26: mark^#(tt()) -> c_3() , 27: mark^#(0()) -> c_4() , 28: mark^#(nil()) -> c_9() , 29: a__length^#(X) -> c_39() , 30: a__zeros^#() -> c_30() , 31: a__zeros^#() -> c_31() , 32: a__take^#(X1, X2) -> c_32() , 33: a__isNatIList^#(X) -> c_19() , 34: a__isNatIList^#(zeros()) -> c_20() , 35: a__isNatList^#(X) -> c_22() , 36: a__isNatList^#(nil()) -> c_24() , 37: a__isNat^#(X) -> c_26() , 38: a__isNat^#(0()) -> c_27() , 39: a__uTake1^#(X) -> c_35() , 40: a__uTake1^#(tt()) -> c_36() , 41: a__uTake2^#(X1, X2, X3, X4) -> c_37() , 42: a__uLength^#(X1, X2) -> c_41() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { a__and^#(tt(), T) -> c_2(mark^#(T)) , mark^#(s(X)) -> c_5(mark^#(X)) , mark^#(length(X)) -> c_6(a__length^#(mark(X)), mark^#(X)) , mark^#(cons(X1, X2)) -> c_8(mark^#(X1)) , mark^#(take(X1, X2)) -> c_10(a__take^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(and(X1, X2)) -> c_11(a__and^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(isNatIList(X)) -> c_12(a__isNatIList^#(X)) , mark^#(isNatList(X)) -> c_13(a__isNatList^#(X)) , mark^#(isNat(X)) -> c_14(a__isNat^#(X)) , mark^#(uTake1(X)) -> c_15(a__uTake1^#(mark(X)), mark^#(X)) , mark^#(uTake2(X1, X2, X3, X4)) -> c_16(a__uTake2^#(mark(X1), X2, X3, X4), mark^#(X1)) , mark^#(uLength(X1, X2)) -> c_17(a__uLength^#(mark(X1), X2), mark^#(X1)) , a__length^#(cons(N, L)) -> c_40(a__uLength^#(a__and(a__isNat(N), a__isNatList(L)), L), a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__take^#(0(), IL) -> c_33(a__uTake1^#(a__isNatIList(IL)), a__isNatIList^#(IL)) , a__take^#(s(M), cons(N, IL)) -> c_34(a__uTake2^#(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL), a__and^#(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), a__isNat^#(M), a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatIList^#(IL) -> c_18(a__isNatList^#(IL)) , a__isNatIList^#(cons(N, IL)) -> c_21(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatList^#(cons(N, L)) -> c_23(a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__isNatList^#(take(N, IL)) -> c_25(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNat^#(s(N)) -> c_28(a__isNat^#(N)) , a__isNat^#(length(L)) -> c_29(a__isNatList^#(L)) , a__uTake2^#(tt(), M, N, IL) -> c_38(mark^#(N)) , a__uLength^#(tt(), L) -> c_42(a__length^#(mark(L)), mark^#(L)) } Weak DPs: { a__and^#(X1, X2) -> c_1() , mark^#(tt()) -> c_3() , mark^#(0()) -> c_4() , mark^#(zeros()) -> c_7(a__zeros^#()) , mark^#(nil()) -> c_9() , a__length^#(X) -> c_39() , a__zeros^#() -> c_30() , a__zeros^#() -> c_31() , a__take^#(X1, X2) -> c_32() , a__isNatIList^#(X) -> c_19() , a__isNatIList^#(zeros()) -> c_20() , a__isNatList^#(X) -> c_22() , a__isNatList^#(nil()) -> c_24() , a__isNat^#(X) -> c_26() , a__isNat^#(0()) -> c_27() , a__uTake1^#(X) -> c_35() , a__uTake1^#(tt()) -> c_36() , a__uTake2^#(X1, X2, X3, X4) -> c_37() , a__uLength^#(X1, X2) -> c_41() } Weak Trs: { a__and(X1, X2) -> and(X1, X2) , a__and(tt(), T) -> mark(T) , mark(tt()) -> tt() , mark(0()) -> 0() , mark(s(X)) -> s(mark(X)) , mark(length(X)) -> a__length(mark(X)) , mark(zeros()) -> a__zeros() , mark(cons(X1, X2)) -> cons(mark(X1), X2) , mark(nil()) -> nil() , mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) , mark(and(X1, X2)) -> a__and(mark(X1), mark(X2)) , mark(isNatIList(X)) -> a__isNatIList(X) , mark(isNatList(X)) -> a__isNatList(X) , mark(isNat(X)) -> a__isNat(X) , mark(uTake1(X)) -> a__uTake1(mark(X)) , mark(uTake2(X1, X2, X3, X4)) -> a__uTake2(mark(X1), X2, X3, X4) , mark(uLength(X1, X2)) -> a__uLength(mark(X1), X2) , a__isNatIList(IL) -> a__isNatList(IL) , a__isNatIList(X) -> isNatIList(X) , a__isNatIList(zeros()) -> tt() , a__isNatIList(cons(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNatList(X) -> isNatList(X) , a__isNatList(cons(N, L)) -> a__and(a__isNat(N), a__isNatList(L)) , a__isNatList(nil()) -> tt() , a__isNatList(take(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNat(X) -> isNat(X) , a__isNat(0()) -> tt() , a__isNat(s(N)) -> a__isNat(N) , a__isNat(length(L)) -> a__isNatList(L) , a__zeros() -> zeros() , a__zeros() -> cons(0(), zeros()) , a__take(X1, X2) -> take(X1, X2) , a__take(0(), IL) -> a__uTake1(a__isNatIList(IL)) , a__take(s(M), cons(N, IL)) -> a__uTake2(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL) , a__uTake1(X) -> uTake1(X) , a__uTake1(tt()) -> nil() , a__uTake2(X1, X2, X3, X4) -> uTake2(X1, X2, X3, X4) , a__uTake2(tt(), M, N, IL) -> cons(mark(N), take(M, IL)) , a__length(X) -> length(X) , a__length(cons(N, L)) -> a__uLength(a__and(a__isNat(N), a__isNatList(L)), L) , a__uLength(X1, X2) -> uLength(X1, X2) , a__uLength(tt(), L) -> s(a__length(mark(L))) } Obligation: innermost runtime complexity Answer: MAYBE The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { a__and^#(X1, X2) -> c_1() , mark^#(tt()) -> c_3() , mark^#(0()) -> c_4() , mark^#(zeros()) -> c_7(a__zeros^#()) , mark^#(nil()) -> c_9() , a__length^#(X) -> c_39() , a__zeros^#() -> c_30() , a__zeros^#() -> c_31() , a__take^#(X1, X2) -> c_32() , a__isNatIList^#(X) -> c_19() , a__isNatIList^#(zeros()) -> c_20() , a__isNatList^#(X) -> c_22() , a__isNatList^#(nil()) -> c_24() , a__isNat^#(X) -> c_26() , a__isNat^#(0()) -> c_27() , a__uTake1^#(X) -> c_35() , a__uTake1^#(tt()) -> c_36() , a__uTake2^#(X1, X2, X3, X4) -> c_37() , a__uLength^#(X1, X2) -> c_41() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { a__and^#(tt(), T) -> c_2(mark^#(T)) , mark^#(s(X)) -> c_5(mark^#(X)) , mark^#(length(X)) -> c_6(a__length^#(mark(X)), mark^#(X)) , mark^#(cons(X1, X2)) -> c_8(mark^#(X1)) , mark^#(take(X1, X2)) -> c_10(a__take^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(and(X1, X2)) -> c_11(a__and^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(isNatIList(X)) -> c_12(a__isNatIList^#(X)) , mark^#(isNatList(X)) -> c_13(a__isNatList^#(X)) , mark^#(isNat(X)) -> c_14(a__isNat^#(X)) , mark^#(uTake1(X)) -> c_15(a__uTake1^#(mark(X)), mark^#(X)) , mark^#(uTake2(X1, X2, X3, X4)) -> c_16(a__uTake2^#(mark(X1), X2, X3, X4), mark^#(X1)) , mark^#(uLength(X1, X2)) -> c_17(a__uLength^#(mark(X1), X2), mark^#(X1)) , a__length^#(cons(N, L)) -> c_40(a__uLength^#(a__and(a__isNat(N), a__isNatList(L)), L), a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__take^#(0(), IL) -> c_33(a__uTake1^#(a__isNatIList(IL)), a__isNatIList^#(IL)) , a__take^#(s(M), cons(N, IL)) -> c_34(a__uTake2^#(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL), a__and^#(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), a__isNat^#(M), a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatIList^#(IL) -> c_18(a__isNatList^#(IL)) , a__isNatIList^#(cons(N, IL)) -> c_21(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatList^#(cons(N, L)) -> c_23(a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__isNatList^#(take(N, IL)) -> c_25(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNat^#(s(N)) -> c_28(a__isNat^#(N)) , a__isNat^#(length(L)) -> c_29(a__isNatList^#(L)) , a__uTake2^#(tt(), M, N, IL) -> c_38(mark^#(N)) , a__uLength^#(tt(), L) -> c_42(a__length^#(mark(L)), mark^#(L)) } Weak Trs: { a__and(X1, X2) -> and(X1, X2) , a__and(tt(), T) -> mark(T) , mark(tt()) -> tt() , mark(0()) -> 0() , mark(s(X)) -> s(mark(X)) , mark(length(X)) -> a__length(mark(X)) , mark(zeros()) -> a__zeros() , mark(cons(X1, X2)) -> cons(mark(X1), X2) , mark(nil()) -> nil() , mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) , mark(and(X1, X2)) -> a__and(mark(X1), mark(X2)) , mark(isNatIList(X)) -> a__isNatIList(X) , mark(isNatList(X)) -> a__isNatList(X) , mark(isNat(X)) -> a__isNat(X) , mark(uTake1(X)) -> a__uTake1(mark(X)) , mark(uTake2(X1, X2, X3, X4)) -> a__uTake2(mark(X1), X2, X3, X4) , mark(uLength(X1, X2)) -> a__uLength(mark(X1), X2) , a__isNatIList(IL) -> a__isNatList(IL) , a__isNatIList(X) -> isNatIList(X) , a__isNatIList(zeros()) -> tt() , a__isNatIList(cons(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNatList(X) -> isNatList(X) , a__isNatList(cons(N, L)) -> a__and(a__isNat(N), a__isNatList(L)) , a__isNatList(nil()) -> tt() , a__isNatList(take(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNat(X) -> isNat(X) , a__isNat(0()) -> tt() , a__isNat(s(N)) -> a__isNat(N) , a__isNat(length(L)) -> a__isNatList(L) , a__zeros() -> zeros() , a__zeros() -> cons(0(), zeros()) , a__take(X1, X2) -> take(X1, X2) , a__take(0(), IL) -> a__uTake1(a__isNatIList(IL)) , a__take(s(M), cons(N, IL)) -> a__uTake2(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL) , a__uTake1(X) -> uTake1(X) , a__uTake1(tt()) -> nil() , a__uTake2(X1, X2, X3, X4) -> uTake2(X1, X2, X3, X4) , a__uTake2(tt(), M, N, IL) -> cons(mark(N), take(M, IL)) , a__length(X) -> length(X) , a__length(cons(N, L)) -> a__uLength(a__and(a__isNat(N), a__isNatList(L)), L) , a__uLength(X1, X2) -> uLength(X1, X2) , a__uLength(tt(), L) -> s(a__length(mark(L))) } Obligation: innermost runtime complexity Answer: MAYBE Due to missing edges in the dependency-graph, the right-hand sides of following rules could be simplified: { mark^#(uTake1(X)) -> c_15(a__uTake1^#(mark(X)), mark^#(X)) , a__take^#(0(), IL) -> c_33(a__uTake1^#(a__isNatIList(IL)), a__isNatIList^#(IL)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { a__and^#(tt(), T) -> c_1(mark^#(T)) , mark^#(s(X)) -> c_2(mark^#(X)) , mark^#(length(X)) -> c_3(a__length^#(mark(X)), mark^#(X)) , mark^#(cons(X1, X2)) -> c_4(mark^#(X1)) , mark^#(take(X1, X2)) -> c_5(a__take^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(and(X1, X2)) -> c_6(a__and^#(mark(X1), mark(X2)), mark^#(X1), mark^#(X2)) , mark^#(isNatIList(X)) -> c_7(a__isNatIList^#(X)) , mark^#(isNatList(X)) -> c_8(a__isNatList^#(X)) , mark^#(isNat(X)) -> c_9(a__isNat^#(X)) , mark^#(uTake1(X)) -> c_10(mark^#(X)) , mark^#(uTake2(X1, X2, X3, X4)) -> c_11(a__uTake2^#(mark(X1), X2, X3, X4), mark^#(X1)) , mark^#(uLength(X1, X2)) -> c_12(a__uLength^#(mark(X1), X2), mark^#(X1)) , a__length^#(cons(N, L)) -> c_13(a__uLength^#(a__and(a__isNat(N), a__isNatList(L)), L), a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__take^#(0(), IL) -> c_14(a__isNatIList^#(IL)) , a__take^#(s(M), cons(N, IL)) -> c_15(a__uTake2^#(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL), a__and^#(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), a__isNat^#(M), a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatIList^#(IL) -> c_16(a__isNatList^#(IL)) , a__isNatIList^#(cons(N, IL)) -> c_17(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNatList^#(cons(N, L)) -> c_18(a__and^#(a__isNat(N), a__isNatList(L)), a__isNat^#(N), a__isNatList^#(L)) , a__isNatList^#(take(N, IL)) -> c_19(a__and^#(a__isNat(N), a__isNatIList(IL)), a__isNat^#(N), a__isNatIList^#(IL)) , a__isNat^#(s(N)) -> c_20(a__isNat^#(N)) , a__isNat^#(length(L)) -> c_21(a__isNatList^#(L)) , a__uTake2^#(tt(), M, N, IL) -> c_22(mark^#(N)) , a__uLength^#(tt(), L) -> c_23(a__length^#(mark(L)), mark^#(L)) } Weak Trs: { a__and(X1, X2) -> and(X1, X2) , a__and(tt(), T) -> mark(T) , mark(tt()) -> tt() , mark(0()) -> 0() , mark(s(X)) -> s(mark(X)) , mark(length(X)) -> a__length(mark(X)) , mark(zeros()) -> a__zeros() , mark(cons(X1, X2)) -> cons(mark(X1), X2) , mark(nil()) -> nil() , mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) , mark(and(X1, X2)) -> a__and(mark(X1), mark(X2)) , mark(isNatIList(X)) -> a__isNatIList(X) , mark(isNatList(X)) -> a__isNatList(X) , mark(isNat(X)) -> a__isNat(X) , mark(uTake1(X)) -> a__uTake1(mark(X)) , mark(uTake2(X1, X2, X3, X4)) -> a__uTake2(mark(X1), X2, X3, X4) , mark(uLength(X1, X2)) -> a__uLength(mark(X1), X2) , a__isNatIList(IL) -> a__isNatList(IL) , a__isNatIList(X) -> isNatIList(X) , a__isNatIList(zeros()) -> tt() , a__isNatIList(cons(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNatList(X) -> isNatList(X) , a__isNatList(cons(N, L)) -> a__and(a__isNat(N), a__isNatList(L)) , a__isNatList(nil()) -> tt() , a__isNatList(take(N, IL)) -> a__and(a__isNat(N), a__isNatIList(IL)) , a__isNat(X) -> isNat(X) , a__isNat(0()) -> tt() , a__isNat(s(N)) -> a__isNat(N) , a__isNat(length(L)) -> a__isNatList(L) , a__zeros() -> zeros() , a__zeros() -> cons(0(), zeros()) , a__take(X1, X2) -> take(X1, X2) , a__take(0(), IL) -> a__uTake1(a__isNatIList(IL)) , a__take(s(M), cons(N, IL)) -> a__uTake2(a__and(a__isNat(M), a__and(a__isNat(N), a__isNatIList(IL))), M, N, IL) , a__uTake1(X) -> uTake1(X) , a__uTake1(tt()) -> nil() , a__uTake2(X1, X2, X3, X4) -> uTake2(X1, X2, X3, X4) , a__uTake2(tt(), M, N, IL) -> cons(mark(N), take(M, IL)) , a__length(X) -> length(X) , a__length(cons(N, L)) -> a__uLength(a__and(a__isNat(N), a__isNatList(L)), L) , a__uLength(X1, X2) -> uLength(X1, X2) , a__uLength(tt(), L) -> s(a__length(mark(L))) } Obligation: innermost runtime complexity Answer: MAYBE The input cannot be shown compatible Arrrr..