We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).
Strict Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y
, goal(xs, ys) -> mul0(xs, ys) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^3))
We add the following dependency tuples:
Strict DPs:
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y))
, mul0^#(Nil(), y) -> c_2()
, add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y)))
, add0^#(Nil(), y) -> c_4()
, goal^#(xs, ys) -> c_5(mul0^#(xs, ys)) }
and mark the set of starting terms.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).
Strict DPs:
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y))
, mul0^#(Nil(), y) -> c_2()
, add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y)))
, add0^#(Nil(), y) -> c_4()
, goal^#(xs, ys) -> c_5(mul0^#(xs, ys)) }
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y
, goal(xs, ys) -> mul0(xs, ys) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^3))
We estimate the number of application of {2,4} by applications of
Pre({2,4}) = {1,3,5}. Here rules are labeled as follows:
DPs:
{ 1: mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y))
, 2: mul0^#(Nil(), y) -> c_2()
, 3: add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y)))
, 4: add0^#(Nil(), y) -> c_4()
, 5: goal^#(xs, ys) -> c_5(mul0^#(xs, ys)) }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).
Strict DPs:
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y))
, add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y)))
, goal^#(xs, ys) -> c_5(mul0^#(xs, ys)) }
Weak DPs:
{ mul0^#(Nil(), y) -> c_2()
, add0^#(Nil(), y) -> c_4() }
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y
, goal(xs, ys) -> mul0(xs, ys) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^3))
The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.
{ mul0^#(Nil(), y) -> c_2()
, add0^#(Nil(), y) -> c_4() }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).
Strict DPs:
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y))
, add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y)))
, goal^#(xs, ys) -> c_5(mul0^#(xs, ys)) }
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y
, goal(xs, ys) -> mul0(xs, ys) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^3))
Consider the dependency graph
1: mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y))
-->_1 add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y))) :2
-->_2 mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y)) :1
2: add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y)))
-->_1 add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y))) :2
3: goal^#(xs, ys) -> c_5(mul0^#(xs, ys))
-->_1 mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y)) :1
Following roots of the dependency graph are removed, as the
considered set of starting terms is closed under reduction with
respect to these rules (modulo compound contexts).
{ goal^#(xs, ys) -> c_5(mul0^#(xs, ys)) }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).
Strict DPs:
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y))
, add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y))) }
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y
, goal(xs, ys) -> mul0(xs, ys) }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^3))
We replace rewrite rules by usable rules:
Weak Usable Rules:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).
Strict DPs:
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y))
, add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y))) }
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^3))
We decompose the input problem according to the dependency graph
into the upper component
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y)) }
and lower component
{ add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y))) }
Further, following extension rules are added to the lower
component.
{ mul0^#(Cons(x, xs), y) -> mul0^#(xs, y)
, mul0^#(Cons(x, xs), y) -> add0^#(mul0(xs, y), y) }
TcT solves the upper component with certificate YES(O(1),O(n^1)).
Sub-proof:
----------
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^1)).
Strict DPs:
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y)) }
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^1))
We use the processor 'Small Polynomial Path Order (PS,1-bounded)'
to orient following rules strictly.
DPs:
{ 1: mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y)) }
Sub-proof:
----------
The input was oriented with the instance of 'Small Polynomial Path
Order (PS,1-bounded)' as induced by the safe mapping
safe(mul0) = {2}, safe(Cons) = {1, 2}, safe(add0) = {},
safe(S) = {}, safe(Nil) = {}, safe(mul0^#) = {2}, safe(c_1) = {},
safe(add0^#) = {}
and precedence
mul0 > add0 .
Following symbols are considered recursive:
{mul0^#}
The recursion depth is 1.
Further, following argument filtering is employed:
pi(mul0) = [1, 2], pi(Cons) = [2], pi(add0) = [1, 2], pi(S) = [],
pi(Nil) = [], pi(mul0^#) = [1], pi(c_1) = [1, 2], pi(add0^#) = []
Usable defined function symbols are a subset of:
{mul0^#, add0^#}
For your convenience, here are the satisfied ordering constraints:
pi(mul0^#(Cons(x, xs), y)) = mul0^#(Cons(; xs);)
> c_1(add0^#(), mul0^#(xs;);)
= pi(c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y)))
The strictly oriented rules are moved into the weak component.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Weak DPs:
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y)) }
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y }
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.
{ mul0^#(Cons(x, xs), y) ->
c_1(add0^#(mul0(xs, y), y), mul0^#(xs, y)) }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y }
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
We return to the main proof.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^2)).
Strict DPs:
{ add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y))) }
Weak DPs:
{ mul0^#(Cons(x, xs), y) -> mul0^#(xs, y)
, mul0^#(Cons(x, xs), y) -> add0^#(mul0(xs, y), y) }
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y }
Obligation:
innermost runtime complexity
Answer:
YES(O(1),O(n^2))
We use the processor 'custom shape polynomial interpretation' to
orient following rules strictly.
DPs:
{ 1: add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y)))
, 2: mul0^#(Cons(x, xs), y) -> mul0^#(xs, y)
, 3: mul0^#(Cons(x, xs), y) -> add0^#(mul0(xs, y), y) }
Trs: { add0(Nil(), y) -> y }
Sub-proof:
----------
The following argument positions are considered usable:
Uargs(c_3) = {1}
TcT has computed the following constructor-restricted polynomial
interpretation.
[mul0](x1, x2) = x1 + x1*x2 + x1^2 + x2 + x2^2
[Cons](x1, x2) = 1 + x2
[add0](x1, x2) = 2 + x1 + x2
[S]() = 1
[Nil]() = 0
[mul0^#](x1, x2) = 1 + 3*x1*x2 + 2*x1^2 + 3*x2^2
[add0^#](x1, x2) = 1 + 2*x1 + x2
[c_3](x1) = x1
This order satisfies the following ordering constraints.
[mul0(Cons(x, xs), y)] = 2 + 3*xs + 2*y + xs*y + xs^2 + y^2
>= 2 + xs + xs*y + xs^2 + 2*y + y^2
= [add0(mul0(xs, y), y)]
[mul0(Nil(), y)] = y + y^2
>=
= [Nil()]
[add0(Cons(x, xs), y)] = 3 + xs + y
>= 3 + xs + y
= [add0(xs, Cons(S(), y))]
[add0(Nil(), y)] = 2 + y
> y
= [y]
[mul0^#(Cons(x, xs), y)] = 3 + 3*y + 3*xs*y + 4*xs + 2*xs^2 + 3*y^2
> 1 + 3*xs*y + 2*xs^2 + 3*y^2
= [mul0^#(xs, y)]
[mul0^#(Cons(x, xs), y)] = 3 + 3*y + 3*xs*y + 4*xs + 2*xs^2 + 3*y^2
> 1 + 2*xs + 2*xs*y + 2*xs^2 + 3*y + 2*y^2
= [add0^#(mul0(xs, y), y)]
[add0^#(Cons(x, xs), y)] = 3 + 2*xs + y
> 2 + 2*xs + y
= [c_3(add0^#(xs, Cons(S(), y)))]
The strictly oriented rules are moved into the weak component.
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Weak DPs:
{ mul0^#(Cons(x, xs), y) -> mul0^#(xs, y)
, mul0^#(Cons(x, xs), y) -> add0^#(mul0(xs, y), y)
, add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y))) }
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y }
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.
{ mul0^#(Cons(x, xs), y) -> mul0^#(xs, y)
, mul0^#(Cons(x, xs), y) -> add0^#(mul0(xs, y), y)
, add0^#(Cons(x, xs), y) -> c_3(add0^#(xs, Cons(S(), y))) }
We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).
Weak Trs:
{ mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y)
, mul0(Nil(), y) -> Nil()
, add0(Cons(x, xs), y) -> add0(xs, Cons(S(), y))
, add0(Nil(), y) -> y }
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^3))