We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).
Strict Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, head(cons(X, XS)) -> X
, 2nd(cons(X, XS)) -> head(activate(XS))
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, take(s(N), cons(X, XS)) -> cons(X, n__take(N, activate(XS)))
, s(X) -> n__s(X)
, sel(0(), cons(X, XS)) -> X
, sel(s(N), cons(X, XS)) -> sel(N, activate(XS)) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^1))
Arguments of following rules are not normal-forms:
{ take(s(N), cons(X, XS)) -> cons(X, n__take(N, activate(XS)))
, sel(s(N), cons(X, XS)) -> sel(N, activate(XS)) }
All above mentioned rules can be savely removed.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).
Strict Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, head(cons(X, XS)) -> X
, 2nd(cons(X, XS)) -> head(activate(XS))
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X)
, sel(0(), cons(X, XS)) -> X }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^1))
We add the following weak dependency pairs:
Strict DPs:
{ from^#(X) -> c_1()
, from^#(X) -> c_2()
, head^#(cons(X, XS)) -> c_3()
, 2nd^#(cons(X, XS)) -> c_4(head^#(activate(XS)))
, activate^#(X) -> c_5()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__s(X)) -> c_7(s^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, s^#(X) -> c_11()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10()
, sel^#(0(), cons(X, XS)) -> c_12() }
and mark the set of starting terms.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).
Strict DPs:
{ from^#(X) -> c_1()
, from^#(X) -> c_2()
, head^#(cons(X, XS)) -> c_3()
, 2nd^#(cons(X, XS)) -> c_4(head^#(activate(XS)))
, activate^#(X) -> c_5()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__s(X)) -> c_7(s^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, s^#(X) -> c_11()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10()
, sel^#(0(), cons(X, XS)) -> c_12() }
Strict Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, head(cons(X, XS)) -> X
, 2nd(cons(X, XS)) -> head(activate(XS))
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X)
, sel(0(), cons(X, XS)) -> X }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^1))
We replace rewrite rules by usable rules:
Strict Usable Rules:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).
Strict DPs:
{ from^#(X) -> c_1()
, from^#(X) -> c_2()
, head^#(cons(X, XS)) -> c_3()
, 2nd^#(cons(X, XS)) -> c_4(head^#(activate(XS)))
, activate^#(X) -> c_5()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__s(X)) -> c_7(s^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, s^#(X) -> c_11()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10()
, sel^#(0(), cons(X, XS)) -> c_12() }
Strict Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^1))
The weightgap principle applies (using the following constant
growth matrix-interpretation)
The following argument positions are usable:
Uargs(from) = {1}, Uargs(take) = {1, 2}, Uargs(s) = {1},
Uargs(from^#) = {1}, Uargs(head^#) = {1}, Uargs(c_4) = {1},
Uargs(c_6) = {1}, Uargs(c_7) = {1}, Uargs(s^#) = {1},
Uargs(c_8) = {1}, Uargs(take^#) = {1, 2}
TcT has computed the following constructor-restricted matrix
interpretation.
[from](x1) = [1 0] x1 + [2]
[0 1] [2]
[cons](x1, x2) = [1 0] x2 + [0]
[0 1] [0]
[n__from](x1) = [1 0] x1 + [1]
[0 1] [1]
[n__s](x1) = [1 0] x1 + [0]
[0 1] [1]
[activate](x1) = [1 2] x1 + [2]
[2 1] [2]
[take](x1, x2) = [1 0] x1 + [1 0] x2 + [2]
[0 1] [0 1] [2]
[0] = [0]
[0]
[nil] = [0]
[0]
[s](x1) = [1 0] x1 + [1]
[0 1] [1]
[n__take](x1, x2) = [1 0] x1 + [1 0] x2 + [1]
[0 1] [0 1] [2]
[from^#](x1) = [1 0] x1 + [0]
[0 0] [0]
[c_1] = [0]
[0]
[c_2] = [0]
[0]
[head^#](x1) = [1 0] x1 + [0]
[0 0] [0]
[c_3] = [0]
[0]
[2nd^#](x1) = [2 2] x1 + [0]
[0 0] [0]
[c_4](x1) = [1 0] x1 + [0]
[0 1] [0]
[activate^#](x1) = [2 2] x1 + [0]
[0 0] [0]
[c_5] = [0]
[0]
[c_6](x1) = [1 0] x1 + [0]
[0 1] [0]
[c_7](x1) = [1 0] x1 + [0]
[0 1] [0]
[s^#](x1) = [1 0] x1 + [0]
[0 0] [0]
[c_8](x1) = [1 0] x1 + [0]
[0 1] [0]
[take^#](x1, x2) = [1 0] x1 + [1 0] x2 + [0]
[0 0] [0 0] [0]
[c_9] = [0]
[0]
[c_10] = [0]
[0]
[c_11] = [0]
[0]
[sel^#](x1, x2) = [0]
[0]
[c_12] = [0]
[0]
The order satisfies the following ordering constraints:
[from(X)] = [1 0] X + [2]
[0 1] [2]
> [1 0] X + [1]
[0 1] [2]
= [cons(X, n__from(n__s(X)))]
[from(X)] = [1 0] X + [2]
[0 1] [2]
> [1 0] X + [1]
[0 1] [1]
= [n__from(X)]
[activate(X)] = [1 2] X + [2]
[2 1] [2]
> [1 0] X + [0]
[0 1] [0]
= [X]
[activate(n__from(X))] = [1 2] X + [5]
[2 1] [5]
> [1 2] X + [4]
[2 1] [4]
= [from(activate(X))]
[activate(n__s(X))] = [1 2] X + [4]
[2 1] [3]
> [1 2] X + [3]
[2 1] [3]
= [s(activate(X))]
[activate(n__take(X1, X2))] = [1 2] X1 + [1 2] X2 + [7]
[2 1] [2 1] [6]
> [1 2] X1 + [1 2] X2 + [6]
[2 1] [2 1] [6]
= [take(activate(X1), activate(X2))]
[take(X1, X2)] = [1 0] X1 + [1 0] X2 + [2]
[0 1] [0 1] [2]
> [1 0] X1 + [1 0] X2 + [1]
[0 1] [0 1] [2]
= [n__take(X1, X2)]
[take(0(), XS)] = [1 0] XS + [2]
[0 1] [2]
> [0]
[0]
= [nil()]
[s(X)] = [1 0] X + [1]
[0 1] [1]
> [1 0] X + [0]
[0 1] [1]
= [n__s(X)]
[from^#(X)] = [1 0] X + [0]
[0 0] [0]
>= [0]
[0]
= [c_1()]
[from^#(X)] = [1 0] X + [0]
[0 0] [0]
>= [0]
[0]
= [c_2()]
[head^#(cons(X, XS))] = [1 0] XS + [0]
[0 0] [0]
>= [0]
[0]
= [c_3()]
[2nd^#(cons(X, XS))] = [2 2] XS + [0]
[0 0] [0]
? [1 2] XS + [2]
[0 0] [0]
= [c_4(head^#(activate(XS)))]
[activate^#(X)] = [2 2] X + [0]
[0 0] [0]
>= [0]
[0]
= [c_5()]
[activate^#(n__from(X))] = [2 2] X + [4]
[0 0] [0]
> [1 2] X + [2]
[0 0] [0]
= [c_6(from^#(activate(X)))]
[activate^#(n__s(X))] = [2 2] X + [2]
[0 0] [0]
>= [1 2] X + [2]
[0 0] [0]
= [c_7(s^#(activate(X)))]
[activate^#(n__take(X1, X2))] = [2 2] X1 + [2 2] X2 + [6]
[0 0] [0 0] [0]
> [1 2] X1 + [1 2] X2 + [4]
[0 0] [0 0] [0]
= [c_8(take^#(activate(X1), activate(X2)))]
[s^#(X)] = [1 0] X + [0]
[0 0] [0]
>= [0]
[0]
= [c_11()]
[take^#(X1, X2)] = [1 0] X1 + [1 0] X2 + [0]
[0 0] [0 0] [0]
>= [0]
[0]
= [c_9()]
[take^#(0(), XS)] = [1 0] XS + [0]
[0 0] [0]
>= [0]
[0]
= [c_10()]
[sel^#(0(), cons(X, XS))] = [0]
[0]
>= [0]
[0]
= [c_12()]
Further, it can be verified that all rules not oriented are covered by the weightgap condition.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs:
{ from^#(X) -> c_1()
, from^#(X) -> c_2()
, head^#(cons(X, XS)) -> c_3()
, 2nd^#(cons(X, XS)) -> c_4(head^#(activate(XS)))
, activate^#(X) -> c_5()
, activate^#(n__s(X)) -> c_7(s^#(activate(X)))
, s^#(X) -> c_11()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10()
, sel^#(0(), cons(X, XS)) -> c_12() }
Weak DPs:
{ activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
We estimate the number of application of {3,5,7,10} by applications
of Pre({3,5,7,10}) = {4,6}. Here rules are labeled as follows:
DPs:
{ 1: from^#(X) -> c_1()
, 2: from^#(X) -> c_2()
, 3: head^#(cons(X, XS)) -> c_3()
, 4: 2nd^#(cons(X, XS)) -> c_4(head^#(activate(XS)))
, 5: activate^#(X) -> c_5()
, 6: activate^#(n__s(X)) -> c_7(s^#(activate(X)))
, 7: s^#(X) -> c_11()
, 8: take^#(X1, X2) -> c_9()
, 9: take^#(0(), XS) -> c_10()
, 10: sel^#(0(), cons(X, XS)) -> c_12()
, 11: activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, 12: activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs:
{ from^#(X) -> c_1()
, from^#(X) -> c_2()
, 2nd^#(cons(X, XS)) -> c_4(head^#(activate(XS)))
, activate^#(n__s(X)) -> c_7(s^#(activate(X)))
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ head^#(cons(X, XS)) -> c_3()
, activate^#(X) -> c_5()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, s^#(X) -> c_11()
, sel^#(0(), cons(X, XS)) -> c_12() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
We estimate the number of application of {3,4} by applications of
Pre({3,4}) = {}. Here rules are labeled as follows:
DPs:
{ 1: from^#(X) -> c_1()
, 2: from^#(X) -> c_2()
, 3: 2nd^#(cons(X, XS)) -> c_4(head^#(activate(XS)))
, 4: activate^#(n__s(X)) -> c_7(s^#(activate(X)))
, 5: take^#(X1, X2) -> c_9()
, 6: take^#(0(), XS) -> c_10()
, 7: head^#(cons(X, XS)) -> c_3()
, 8: activate^#(X) -> c_5()
, 9: activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, 10: activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, 11: s^#(X) -> c_11()
, 12: sel^#(0(), cons(X, XS)) -> c_12() }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs:
{ from^#(X) -> c_1()
, from^#(X) -> c_2()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ head^#(cons(X, XS)) -> c_3()
, 2nd^#(cons(X, XS)) -> c_4(head^#(activate(XS)))
, activate^#(X) -> c_5()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__s(X)) -> c_7(s^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, s^#(X) -> c_11()
, sel^#(0(), cons(X, XS)) -> c_12() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.
{ head^#(cons(X, XS)) -> c_3()
, 2nd^#(cons(X, XS)) -> c_4(head^#(activate(XS)))
, activate^#(X) -> c_5()
, activate^#(n__s(X)) -> c_7(s^#(activate(X)))
, s^#(X) -> c_11()
, sel^#(0(), cons(X, XS)) -> c_12() }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs:
{ from^#(X) -> c_1()
, from^#(X) -> c_2()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
We analyse the complexity of following sub-problems (R) and (S).
Problem (S) is obtained from the input problem by shifting strict
rules from (R) into the weak component:
Problem (R):
------------
Strict DPs: { from^#(X) -> c_2() }
Weak DPs:
{ from^#(X) -> c_1()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
Problem (S):
------------
Strict DPs:
{ from^#(X) -> c_1()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ from^#(X) -> c_2()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
Overall, the transformation results in the following sub-problem(s):
Generated new problems:
-----------------------
R) Strict DPs: { from^#(X) -> c_2() }
Weak DPs:
{ from^#(X) -> c_1()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
This problem was proven YES(O(1),O(1)).
S) Strict DPs:
{ from^#(X) -> c_1()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ from^#(X) -> c_2()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
This problem was proven YES(O(1),O(1)).
Proofs for generated problems:
------------------------------
R) We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs: { from^#(X) -> c_2() }
Weak DPs:
{ from^#(X) -> c_1()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.
{ from^#(X) -> c_1()
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs: { from^#(X) -> c_2() }
Weak DPs: { activate^#(n__from(X)) -> c_6(from^#(activate(X))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The dependency graph contains no loops, we remove all dependency
pairs.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
No rule is usable, rules are removed from the input problem.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Rules: Empty
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
Empty rules are trivially bounded
S) We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs:
{ from^#(X) -> c_1()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ from^#(X) -> c_2()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.
{ from^#(X) -> c_2() }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs:
{ from^#(X) -> c_1()
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
We analyse the complexity of following sub-problems (R) and (S).
Problem (S) is obtained from the input problem by shifting strict
rules from (R) into the weak component:
Problem (R):
------------
Strict DPs: { from^#(X) -> c_1() }
Weak DPs:
{ activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
Problem (S):
------------
Strict DPs:
{ take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ from^#(X) -> c_1()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
Overall, the transformation results in the following sub-problem(s):
Generated new problems:
-----------------------
R) Strict DPs: { from^#(X) -> c_1() }
Weak DPs:
{ activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
This problem was proven YES(O(1),O(1)).
S) Strict DPs:
{ take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ from^#(X) -> c_1()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
This problem was proven YES(O(1),O(1)).
Proofs for generated problems:
------------------------------
R) We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs: { from^#(X) -> c_1() }
Weak DPs:
{ activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs: { from^#(X) -> c_1() }
Weak DPs: { activate^#(n__from(X)) -> c_6(from^#(activate(X))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The dependency graph contains no loops, we remove all dependency
pairs.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
No rule is usable, rules are removed from the input problem.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Rules: Empty
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
Empty rules are trivially bounded
S) We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs:
{ take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ from^#(X) -> c_1()
, activate^#(n__from(X)) -> c_6(from^#(activate(X)))
, activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.
{ from^#(X) -> c_1()
, activate^#(n__from(X)) -> c_6(from^#(activate(X))) }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs:
{ take^#(X1, X2) -> c_9()
, take^#(0(), XS) -> c_10() }
Weak DPs:
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
We analyse the complexity of following sub-problems (R) and (S).
Problem (S) is obtained from the input problem by shifting strict
rules from (R) into the weak component:
Problem (R):
------------
Strict DPs: { take^#(0(), XS) -> c_10() }
Weak DPs:
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
Problem (S):
------------
Strict DPs: { take^#(X1, X2) -> c_9() }
Weak DPs:
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(0(), XS) -> c_10() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
Overall, the transformation results in the following sub-problem(s):
Generated new problems:
-----------------------
R) Strict DPs: { take^#(0(), XS) -> c_10() }
Weak DPs:
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
This problem was proven YES(O(1),O(1)).
S) Strict DPs: { take^#(X1, X2) -> c_9() }
Weak DPs:
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(0(), XS) -> c_10() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
StartTerms: basic terms
Strategy: innermost
This problem was proven YES(O(1),O(1)).
Proofs for generated problems:
------------------------------
R) We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs: { take^#(0(), XS) -> c_10() }
Weak DPs:
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(X1, X2) -> c_9() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.
{ take^#(X1, X2) -> c_9() }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs: { take^#(0(), XS) -> c_10() }
Weak DPs:
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The dependency graph contains no loops, we remove all dependency
pairs.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
No rule is usable, rules are removed from the input problem.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Rules: Empty
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
Empty rules are trivially bounded
S) We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs: { take^#(X1, X2) -> c_9() }
Weak DPs:
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2)))
, take^#(0(), XS) -> c_10() }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.
{ take^#(0(), XS) -> c_10() }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Strict DPs: { take^#(X1, X2) -> c_9() }
Weak DPs:
{ activate^#(n__take(X1, X2)) ->
c_8(take^#(activate(X1), activate(X2))) }
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
The dependency graph contains no loops, we remove all dependency
pairs.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Weak Trs:
{ from(X) -> cons(X, n__from(n__s(X)))
, from(X) -> n__from(X)
, activate(X) -> X
, activate(n__from(X)) -> from(activate(X))
, activate(n__s(X)) -> s(activate(X))
, activate(n__take(X1, X2)) -> take(activate(X1), activate(X2))
, take(X1, X2) -> n__take(X1, X2)
, take(0(), XS) -> nil()
, s(X) -> n__s(X) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
No rule is usable, rules are removed from the input problem.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Rules: Empty
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(1))
Empty rules are trivially bounded
Hurray, we answered YES(O(1),O(n^1))