We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).

Strict Trs:
  { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
  , mul0(Z(), y) -> Z()
  , add0(C(x, y), y') -> add0(y, C(S(), y'))
  , add0(Z(), y) -> y
  , second(C(x, y)) -> y
  , isZero(C(x, y)) -> False()
  , isZero(Z()) -> True()
  , 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^#(C(x, y), y') ->
    c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y'))
  , mul0^#(Z(), y) -> c_2()
  , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y')))
  , add0^#(Z(), y) -> c_4()
  , second^#(C(x, y)) -> c_5()
  , isZero^#(C(x, y)) -> c_6()
  , isZero^#(Z()) -> c_7()
  , goal^#(xs, ys) -> c_8(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^#(C(x, y), y') ->
    c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y'))
  , mul0^#(Z(), y) -> c_2()
  , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y')))
  , add0^#(Z(), y) -> c_4()
  , second^#(C(x, y)) -> c_5()
  , isZero^#(C(x, y)) -> c_6()
  , isZero^#(Z()) -> c_7()
  , goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) }
Weak Trs:
  { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
  , mul0(Z(), y) -> Z()
  , add0(C(x, y), y') -> add0(y, C(S(), y'))
  , add0(Z(), y) -> y
  , second(C(x, y)) -> y
  , isZero(C(x, y)) -> False()
  , isZero(Z()) -> True()
  , 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,5,6,7} by
applications of Pre({2,4,5,6,7}) = {1,3,8}. Here rules are labeled
as follows:

  DPs:
    { 1: mul0^#(C(x, y), y') ->
         c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y'))
    , 2: mul0^#(Z(), y) -> c_2()
    , 3: add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y')))
    , 4: add0^#(Z(), y) -> c_4()
    , 5: second^#(C(x, y)) -> c_5()
    , 6: isZero^#(C(x, y)) -> c_6()
    , 7: isZero^#(Z()) -> c_7()
    , 8: goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).

Strict DPs:
  { mul0^#(C(x, y), y') ->
    c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y'))
  , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y')))
  , goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) }
Weak DPs:
  { mul0^#(Z(), y) -> c_2()
  , add0^#(Z(), y) -> c_4()
  , second^#(C(x, y)) -> c_5()
  , isZero^#(C(x, y)) -> c_6()
  , isZero^#(Z()) -> c_7() }
Weak Trs:
  { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
  , mul0(Z(), y) -> Z()
  , add0(C(x, y), y') -> add0(y, C(S(), y'))
  , add0(Z(), y) -> y
  , second(C(x, y)) -> y
  , isZero(C(x, y)) -> False()
  , isZero(Z()) -> True()
  , 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^#(Z(), y) -> c_2()
, add0^#(Z(), y) -> c_4()
, second^#(C(x, y)) -> c_5()
, isZero^#(C(x, y)) -> c_6()
, isZero^#(Z()) -> c_7() }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).

Strict DPs:
  { mul0^#(C(x, y), y') ->
    c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y'))
  , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y')))
  , goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) }
Weak Trs:
  { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
  , mul0(Z(), y) -> Z()
  , add0(C(x, y), y') -> add0(y, C(S(), y'))
  , add0(Z(), y) -> y
  , second(C(x, y)) -> y
  , isZero(C(x, y)) -> False()
  , isZero(Z()) -> True()
  , goal(xs, ys) -> mul0(xs, ys) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^3))

Consider the dependency graph

  1: mul0^#(C(x, y), y') ->
     c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y'))
     -->_1 add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) :2
     -->_2 mul0^#(C(x, y), y') ->
           c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) :1
  
  2: add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y')))
     -->_1 add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) :2
  
  3: goal^#(xs, ys) -> c_8(mul0^#(xs, ys))
     -->_1 mul0^#(C(x, y), y') ->
           c_1(add0^#(mul0(y, y'), y'), mul0^#(y, 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_8(mul0^#(xs, ys)) }


We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).

Strict DPs:
  { mul0^#(C(x, y), y') ->
    c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y'))
  , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) }
Weak Trs:
  { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
  , mul0(Z(), y) -> Z()
  , add0(C(x, y), y') -> add0(y, C(S(), y'))
  , add0(Z(), y) -> y
  , second(C(x, y)) -> y
  , isZero(C(x, y)) -> False()
  , isZero(Z()) -> True()
  , 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(C(x, y), y') -> add0(mul0(y, y'), y')
    , mul0(Z(), y) -> Z()
    , add0(C(x, y), y') -> add0(y, C(S(), y'))
    , add0(Z(), y) -> y }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(n^3)).

Strict DPs:
  { mul0^#(C(x, y), y') ->
    c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y'))
  , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) }
Weak Trs:
  { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
  , mul0(Z(), y) -> Z()
  , add0(C(x, y), y') -> add0(y, C(S(), y'))
  , add0(Z(), 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^#(C(x, y), y') ->
    c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) }

and lower component

  { add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) }

Further, following extension rules are added to the lower
component.

{ mul0^#(C(x, y), y') -> mul0^#(y, y')
, mul0^#(C(x, y), y') -> add0^#(mul0(y, 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^#(C(x, y), y') ->
      c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) }
  Weak Trs:
    { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
    , mul0(Z(), y) -> Z()
    , add0(C(x, y), y') -> add0(y, C(S(), y'))
    , add0(Z(), 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^#(C(x, y), y') ->
         c_1(add0^#(mul0(y, y'), y'), mul0^#(y, 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(C) = {1, 2}, safe(add0) = {}, safe(Z) = {},
     safe(S) = {}, 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(C) = [2], pi(add0) = [1, 2], pi(Z) = [],
     pi(S) = [], 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^#(C(x, y), y')) = mul0^#(C(; y);)                                
                              > c_1(add0^#(),  mul0^#(y;);)                    
                              = pi(c_1(add0^#(mul0(y, y'), y'), mul0^#(y, 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^#(C(x, y), y') ->
      c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) }
  Weak Trs:
    { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
    , mul0(Z(), y) -> Z()
    , add0(C(x, y), y') -> add0(y, C(S(), y'))
    , add0(Z(), 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^#(C(x, y), y') ->
    c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) }
  
  We are left with following problem, upon which TcT provides the
  certificate YES(O(1),O(1)).
  
  Weak Trs:
    { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
    , mul0(Z(), y) -> Z()
    , add0(C(x, y), y') -> add0(y, C(S(), y'))
    , add0(Z(), 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^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) }
Weak DPs:
  { mul0^#(C(x, y), y') -> mul0^#(y, y')
  , mul0^#(C(x, y), y') -> add0^#(mul0(y, y'), y') }
Weak Trs:
  { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
  , mul0(Z(), y) -> Z()
  , add0(C(x, y), y') -> add0(y, C(S(), y'))
  , add0(Z(), 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^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y')))
  , 2: mul0^#(C(x, y), y') -> mul0^#(y, y')
  , 3: mul0^#(C(x, y), y') -> add0^#(mul0(y, y'), y') }
Trs: { add0(Z(), 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
                                                  
       [C](x1, x2) = 1 + x2                       
                                                  
    [add0](x1, x2) = 2 + x1 + x2                  
                                                  
             [Z]() = 0                            
                                                  
             [S]() = 1                            
                                                  
  [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(C(x, y), y')] =  2 + 3*y + 2*y' + y*y' + y^2 + y'^2      
                          >= 2 + y + y*y' + y^2 + 2*y' + y'^2        
                          =  [add0(mul0(y, y'), y')]                 
                                                                     
           [mul0(Z(), y)] =  y + y^2                                 
                          >=                                         
                          =  [Z()]                                   
                                                                     
      [add0(C(x, y), y')] =  3 + y + y'                              
                          >= 3 + y + y'                              
                          =  [add0(y, C(S(), y'))]                   
                                                                     
           [add0(Z(), y)] =  2 + y                                   
                          >  y                                       
                          =  [y]                                     
                                                                     
    [mul0^#(C(x, y), y')] =  3 + 3*y' + 3*y*y' + 4*y + 2*y^2 + 3*y'^2
                          >  1 + 3*y*y' + 2*y^2 + 3*y'^2             
                          =  [mul0^#(y, y')]                         
                                                                     
    [mul0^#(C(x, y), y')] =  3 + 3*y' + 3*y*y' + 4*y + 2*y^2 + 3*y'^2
                          >  1 + 2*y + 2*y*y' + 2*y^2 + 3*y' + 2*y'^2
                          =  [add0^#(mul0(y, y'), y')]               
                                                                     
    [add0^#(C(x, y), y')] =  3 + 2*y + y'                            
                          >  2 + 2*y + y'                            
                          =  [c_3(add0^#(y, C(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^#(C(x, y), y') -> mul0^#(y, y')
  , mul0^#(C(x, y), y') -> add0^#(mul0(y, y'), y')
  , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) }
Weak Trs:
  { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
  , mul0(Z(), y) -> Z()
  , add0(C(x, y), y') -> add0(y, C(S(), y'))
  , add0(Z(), 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^#(C(x, y), y') -> mul0^#(y, y')
, mul0^#(C(x, y), y') -> add0^#(mul0(y, y'), y')
, add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) }

We are left with following problem, upon which TcT provides the
certificate YES(O(1),O(1)).

Weak Trs:
  { mul0(C(x, y), y') -> add0(mul0(y, y'), y')
  , mul0(Z(), y) -> Z()
  , add0(C(x, y), y') -> add0(y, C(S(), y'))
  , add0(Z(), 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))