Problem dyade.raml

tct

Execution Time (secs)
3.885
Answer
YES(O(1),O(n^2))
Inputdyade.raml
YES(O(1),O(n^2))

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

Strict Trs:
  { *(@x, @y) -> #mult(@x, @y)
  , dyade(@l1, @l2) -> dyade#1(@l1, @l2)
  , dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2))
  , dyade#1(nil(), @l2) -> nil()
  , mult(@n, @l) -> mult#1(@l, @n)
  , mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs))
  , mult#1(nil(), @n) -> nil() }
Weak Trs:
  { #mult(#0(), #0()) -> #0()
  , #mult(#0(), #neg(@y)) -> #0()
  , #mult(#0(), #pos(@y)) -> #0()
  , #mult(#neg(@x), #0()) -> #0()
  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
  , #mult(#pos(@x), #0()) -> #0()
  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
  , #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We add following dependency pairs

Strict DPs:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
  , mult#1^#(nil(), @n) -> c_7() }
Weak DPs:
  { #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }

and replace the set of basic marked basic terms accordingly.

We apply the transformation 'usablerules' on the sub-problem:

Strict DPs:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
  , mult#1^#(nil(), @n) -> c_7() }
Strict Trs:
  { *(@x, @y) -> #mult(@x, @y)
  , dyade(@l1, @l2) -> dyade#1(@l1, @l2)
  , dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2))
  , dyade#1(nil(), @l2) -> nil()
  , mult(@n, @l) -> mult#1(@l, @n)
  , mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs))
  , mult#1(nil(), @n) -> nil() }
Weak DPs:
  { #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }
Weak Trs:
  { #mult(#0(), #0()) -> #0()
  , #mult(#0(), #neg(@y)) -> #0()
  , #mult(#0(), #pos(@y)) -> #0()
  , #mult(#neg(@x), #0()) -> #0()
  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
  , #mult(#pos(@x), #0()) -> #0()
  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
  , #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
StartTerms: basic terms
Strategy: innermost

We replace strict/weak-rules by the corresponding usable rules:
  Weak Usable Rules:
    { #add(#0(), @y) -> @y
    , #add(#neg(#s(#0())), @y) -> #pred(@y)
    , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
    , #add(#pos(#s(#0())), @y) -> #succ(@y)
    , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
    , #pred(#0()) -> #neg(#s(#0()))
    , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
    , #pred(#pos(#s(#0()))) -> #0()
    , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
    , #succ(#0()) -> #pos(#s(#0()))
    , #succ(#neg(#s(#0()))) -> #0()
    , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
    , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
    , #natmult(#0(), @y) -> #0()
    , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }

We apply the transformation 'compose (addition)' on the
sub-problem:

Strict DPs:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
  , mult#1^#(nil(), @n) -> c_7() }
Weak DPs:
  { #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
StartTerms: basic terms
Strategy: innermost

We use the processor 'weightgap of dimension 2, maximal degree 1,
cbits 3' to orient following rules strictly.

DPs: { mult#1^#(nil(), @n) -> c_7() }

The induced complexity on above rules (modulo remaining rules) is
YES(?,O(n^1)). These rulesare moved into the corresponding weak
component(s).

Sub-proof:
----------
  The weightgap principle applies (using the following constant
  growth matrix-interpretation)
  
  The following argument positions are usable:
    Uargs(::) = {}, Uargs(#add) = {2}, Uargs(#s) = {},
    Uargs(#neg) = {}, Uargs(#pred) = {1}, Uargs(#pos) = {},
    Uargs(#succ) = {1}, Uargs(#natmult) = {}, Uargs(*^#) = {},
    Uargs(#mult^#) = {}, Uargs(dyade^#) = {}, Uargs(dyade#1^#) = {},
    Uargs(c_3) = {1, 2}, Uargs(mult^#) = {}, Uargs(mult#1^#) = {},
    Uargs(c_6) = {1, 2}, Uargs(#natmult^#) = {}, Uargs(#add^#) = {2},
    Uargs(#pred^#) = {1}, Uargs(#succ^#) = {1}
  
  TcT has computed following constructor-restricted matrix
  interpretation. Note that the diagonal of the component-wise maxima
  of interpretation-entries (of constructors) contains no more than 1
  non-zero entries.
  
            [::](x1, x2) = [1 0] x1 + [1 0] x2 + [0]
                           [0 0]      [0 0]      [0]
                                                    
                   [nil] = [0]
                           [1]
                              
                    [#0] = [0]
                           [0]
                              
          [#add](x1, x2) = [1 0] x2 + [0]
                           [0 2]      [0]
                                         
                [#s](x1) = [0]
                           [0]
                              
              [#neg](x1) = [0]
                           [0]
                              
             [#pred](x1) = [1 0] x1 + [0]
                           [0 0]      [0]
                                         
              [#pos](x1) = [0]
                           [0]
                              
             [#succ](x1) = [1 0] x1 + [0]
                           [0 0]      [0]
                                         
      [#natmult](x1, x2) = [0]
                           [0]
                              
           [*^#](x1, x2) = [0 0] x1 + [0 0] x2 + [0]
                           [2 2]      [2 2]      [0]
                                                    
       [#mult^#](x1, x2) = [2]
                           [0]
                              
       [dyade^#](x1, x2) = [0 0] x1 + [0 0] x2 + [0]
                           [2 2]      [1 1]      [0]
                                                    
     [dyade#1^#](x1, x2) = [0]
                           [0]
                              
           [c_3](x1, x2) = [1 0] x1 + [1 0] x2 + [0]
                           [0 1]      [0 1]      [0]
                                                    
        [mult^#](x1, x2) = [0 0] x2 + [0]
                           [1 1]      [1]
                                         
                   [c_4] = [0]
                           [0]
                              
      [mult#1^#](x1, x2) = [1]
                           [0]
                              
           [c_6](x1, x2) = [1 0] x1 + [1 0] x2 + [0]
                           [0 1]      [0 1]      [2]
                                                    
                   [c_7] = [0]
                           [0]
                              
                   [c_8] = [0]
                           [0]
                              
                   [c_9] = [0]
                           [0]
                              
                  [c_10] = [0]
                           [0]
                              
                  [c_11] = [0]
                           [0]
                              
    [#natmult^#](x1, x2) = [2]
                           [0]
                              
                  [c_14] = [0]
                           [0]
                              
        [#add^#](x1, x2) = [2 0] x2 + [0]
                           [0 0]      [0]
                                         
                  [c_17] = [0]
                           [0]
                              
           [#pred^#](x1) = [2 0] x1 + [0]
                           [0 0]      [0]
                                         
           [#succ^#](x1) = [2 0] x1 + [0]
                           [0 0]      [0]
                                         
                  [c_22] = [0]
                           [0]
                              
                  [c_23] = [0]
                           [0]
                              
                  [c_24] = [0]
                           [0]
                              
                  [c_25] = [0]
                           [0]
                              
                  [c_26] = [0]
                           [0]
                              
                  [c_27] = [0]
                           [0]
                              
                  [c_28] = [0]
                           [0]
                              
                  [c_29] = [0]
                           [0]
                              
                  [c_30] = [0]
                           [0]
  
  This order satisfies following ordering constraints
  
                  [#add(#0(), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 1]      [0]                           
                                   =  [@y]                                     
                                                                               
        [#add(#neg(#s(#0())), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#pred(@y)]                              
                                                                               
      [#add(#neg(#s(#s(@x))), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#pred(#add(#pos(#s(@x)), @y))]          
                                                                               
        [#add(#pos(#s(#0())), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#succ(@y)]                              
                                                                               
      [#add(#pos(#s(#s(@x))), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#succ(#add(#pos(#s(@x)), @y))]          
                                                                               
                     [#pred(#0())] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#neg(#s(#0()))]                         
                                                                               
             [#pred(#neg(#s(@x)))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#neg(#s(#s(@x)))]                       
                                                                               
           [#pred(#pos(#s(#0())))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#0()]                                   
                                                                               
         [#pred(#pos(#s(#s(@x))))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#pos(#s(@x))]                           
                                                                               
                     [#succ(#0())] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#pos(#s(#0()))]                         
                                                                               
           [#succ(#neg(#s(#0())))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#0()]                                   
                                                                               
         [#succ(#neg(#s(#s(@x))))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#neg(#s(@x))]                           
                                                                               
             [#succ(#pos(#s(@x)))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#pos(#s(#s(@x)))]                       
                                                                               
              [#natmult(#0(), @y)] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#0()]                                   
                                                                               
            [#natmult(#s(@x), @y)] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#add(#pos(@y), #natmult(@x, @y))]       
                                                                               
                     [*^#(@x, @y)] =  [0 0] @x + [0 0] @y + [0]                
                                      [2 2]      [2 2]      [0]                
                                   ?  [2]                                      
                                      [0]                                      
                                   =  [#mult^#(@x, @y)]                        
                                                                               
             [#mult^#(#0(), #0())] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_8()]                                  
                                                                               
         [#mult^#(#0(), #neg(@y))] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_9()]                                  
                                                                               
         [#mult^#(#0(), #pos(@y))] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_10()]                                 
                                                                               
         [#mult^#(#neg(@x), #0())] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_11()]                                 
                                                                               
     [#mult^#(#neg(@x), #neg(@y))] =  [2]                                      
                                      [0]                                      
                                   >= [2]                                      
                                      [0]                                      
                                   =  [#natmult^#(@x, @y)]                     
                                                                               
     [#mult^#(#neg(@x), #pos(@y))] =  [2]                                      
                                      [0]                                      
                                   >= [2]                                      
                                      [0]                                      
                                   =  [#natmult^#(@x, @y)]                     
                                                                               
         [#mult^#(#pos(@x), #0())] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_14()]                                 
                                                                               
     [#mult^#(#pos(@x), #neg(@y))] =  [2]                                      
                                      [0]                                      
                                   >= [2]                                      
                                      [0]                                      
                                   =  [#natmult^#(@x, @y)]                     
                                                                               
     [#mult^#(#pos(@x), #pos(@y))] =  [2]                                      
                                      [0]                                      
                                   >= [2]                                      
                                      [0]                                      
                                   =  [#natmult^#(@x, @y)]                     
                                                                               
               [dyade^#(@l1, @l2)] =  [0 0] @l1 + [0 0] @l2 + [0]              
                                      [2 2]       [1 1]       [0]              
                                   >= [0]                                      
                                      [0]                                      
                                   =  [dyade#1^#(@l1, @l2)]                    
                                                                               
     [dyade#1^#(::(@x, @xs), @l2)] =  [0]                                      
                                      [0]                                      
                                   ?  [0 0] @l2 + [0 0] @xs + [0]              
                                      [2 2]       [2 2]       [1]              
                                   =  [c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))]
                                                                               
           [dyade#1^#(nil(), @l2)] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_4()]                                  
                                                                               
                  [mult^#(@n, @l)] =  [0 0] @l + [0]                           
                                      [1 1]      [1]                           
                                   ?  [1]                                      
                                      [0]                                      
                                   =  [mult#1^#(@l, @n)]                       
                                                                               
       [mult#1^#(::(@x, @xs), @n)] =  [1]                                      
                                      [0]                                      
                                   ?  [0 0] @n + [0 0] @x + [0 0] @xs + [0]    
                                      [2 2]      [2 2]      [1 1]       [3]    
                                   =  [c_6(*^#(@n, @x), mult^#(@n, @xs))]      
                                                                               
             [mult#1^#(nil(), @n)] =  [1]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_7()]                                  
                                                                               
            [#natmult^#(#0(), @y)] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_30()]                                 
                                                                               
          [#natmult^#(#s(@x), @y)] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [#add^#(#pos(@y), #natmult(@x, @y))]     
                                                                               
                [#add^#(#0(), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_17()]                                 
                                                                               
      [#add^#(#neg(#s(#0())), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#pred^#(@y)]                            
                                                                               
    [#add^#(#neg(#s(#s(@x))), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#pred^#(#add(#pos(#s(@x)), @y))]        
                                                                               
      [#add^#(#pos(#s(#0())), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#succ^#(@y)]                            
                                                                               
    [#add^#(#pos(#s(#s(@x))), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#succ^#(#add(#pos(#s(@x)), @y))]        
                                                                               
                   [#pred^#(#0())] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_22()]                                 
                                                                               
           [#pred^#(#neg(#s(@x)))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_23()]                                 
                                                                               
         [#pred^#(#pos(#s(#0())))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_24()]                                 
                                                                               
       [#pred^#(#pos(#s(#s(@x))))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_25()]                                 
                                                                               
                   [#succ^#(#0())] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_26()]                                 
                                                                               
         [#succ^#(#neg(#s(#0())))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_27()]                                 
                                                                               
       [#succ^#(#neg(#s(#s(@x))))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_28()]                                 
                                                                               
           [#succ^#(#pos(#s(@x)))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_29()]                                 
                                                                               

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:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs)) }
Weak DPs:
  { #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , mult#1^#(nil(), @n) -> c_7()
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the (estimated) dependency graph

  1: *^#(@x, @y) -> #mult^#(@x, @y)
     -->_1 #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y) :15
     -->_1 #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y) :14
     -->_1 #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y) :12
     -->_1 #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y) :11
     -->_1 #mult^#(#pos(@x), #0()) -> c_14() :13
     -->_1 #mult^#(#neg(@x), #0()) -> c_11() :10
     -->_1 #mult^#(#0(), #pos(@y)) -> c_10() :9
     -->_1 #mult^#(#0(), #neg(@y)) -> c_9() :8
     -->_1 #mult^#(#0(), #0()) -> c_8() :7
  
  2: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_3(mult^#(@x, @l2), dyade^#(@xs, @l2)) :3
     -->_1 dyade#1^#(nil(), @l2) -> c_4() :4
  
  3: dyade#1^#(::(@x, @xs), @l2) ->
     c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :5
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :2
  
  4: dyade#1^#(nil(), @l2) -> c_4()
  
  5: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) ->
           c_6(*^#(@n, @x), mult^#(@n, @xs)) :6
     -->_1 mult#1^#(nil(), @n) -> c_7() :16
  
  6: mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
     -->_2 mult^#(@n, @l) -> mult#1^#(@l, @n) :5
     -->_1 *^#(@x, @y) -> #mult^#(@x, @y) :1
  
  7: #mult^#(#0(), #0()) -> c_8()
  
  8: #mult^#(#0(), #neg(@y)) -> c_9()
  
  9: #mult^#(#0(), #pos(@y)) -> c_10()
  
  10: #mult^#(#neg(@x), #0()) -> c_11()
  
  11: #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
     -->_1 #natmult^#(#s(@x), @y) ->
           #add^#(#pos(@y), #natmult(@x, @y)) :18
     -->_1 #natmult^#(#0(), @y) -> c_30() :17
  
  12: #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
     -->_1 #natmult^#(#s(@x), @y) ->
           #add^#(#pos(@y), #natmult(@x, @y)) :18
     -->_1 #natmult^#(#0(), @y) -> c_30() :17
  
  13: #mult^#(#pos(@x), #0()) -> c_14()
  
  14: #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
     -->_1 #natmult^#(#s(@x), @y) ->
           #add^#(#pos(@y), #natmult(@x, @y)) :18
     -->_1 #natmult^#(#0(), @y) -> c_30() :17
  
  15: #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
     -->_1 #natmult^#(#s(@x), @y) ->
           #add^#(#pos(@y), #natmult(@x, @y)) :18
     -->_1 #natmult^#(#0(), @y) -> c_30() :17
  
  16: mult#1^#(nil(), @n) -> c_7()
  
  17: #natmult^#(#0(), @y) -> c_30()
  
  18: #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
     -->_1 #add^#(#pos(#s(#s(@x))), @y) ->
           #succ^#(#add(#pos(#s(@x)), @y)) :23
     -->_1 #add^#(#pos(#s(#0())), @y) -> #succ^#(@y) :22
  
  19: #add^#(#0(), @y) -> c_17()
  
  20: #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
     -->_1 #pred^#(#pos(#s(#s(@x)))) -> c_25() :27
     -->_1 #pred^#(#pos(#s(#0()))) -> c_24() :26
     -->_1 #pred^#(#neg(#s(@x))) -> c_23() :25
     -->_1 #pred^#(#0()) -> c_22() :24
  
  21: #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
     -->_1 #pred^#(#pos(#s(#s(@x)))) -> c_25() :27
     -->_1 #pred^#(#pos(#s(#0()))) -> c_24() :26
     -->_1 #pred^#(#neg(#s(@x))) -> c_23() :25
     -->_1 #pred^#(#0()) -> c_22() :24
  
  22: #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
     -->_1 #succ^#(#pos(#s(@x))) -> c_29() :31
     -->_1 #succ^#(#neg(#s(#s(@x)))) -> c_28() :30
     -->_1 #succ^#(#neg(#s(#0()))) -> c_27() :29
     -->_1 #succ^#(#0()) -> c_26() :28
  
  23: #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
     -->_1 #succ^#(#pos(#s(@x))) -> c_29() :31
     -->_1 #succ^#(#neg(#s(#s(@x)))) -> c_28() :30
     -->_1 #succ^#(#neg(#s(#0()))) -> c_27() :29
     -->_1 #succ^#(#0()) -> c_26() :28
  
  24: #pred^#(#0()) -> c_22()
  
  25: #pred^#(#neg(#s(@x))) -> c_23()
  
  26: #pred^#(#pos(#s(#0()))) -> c_24()
  
  27: #pred^#(#pos(#s(#s(@x)))) -> c_25()
  
  28: #succ^#(#0()) -> c_26()
  
  29: #succ^#(#neg(#s(#0()))) -> c_27()
  
  30: #succ^#(#neg(#s(#s(@x)))) -> c_28()
  
  31: #succ^#(#pos(#s(@x))) -> c_29()
  
We estimate the application of rules based on the application of
their predecessors as follows:
- We remove {4} and add Pre({4}) = {2} to the strict component.
- We remove {1} and add Pre({1}) = {6} to the strict component.


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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs)) }
Weak DPs:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult#1^#(nil(), @n) -> c_7()
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the the dependency graph

  ->8:{1,2}
     |
     |->10:{3,4}
     |   |
     |   |->12:{5}                             Weak SCC
     |   |   |
     |   |   |->13:{6}                         Weak SCC
     |   |   |
     |   |   |->14:{7}                         Weak SCC
     |   |   |
     |   |   |->15:{8}                         Weak SCC
     |   |   |
     |   |   |->16:{9}                         Weak SCC
     |   |   |
     |   |   |->18:{10}                        Weak SCC
     |   |   |   |
     |   |   |   |->22:{17}                    Weak SCC
     |   |   |   |
     |   |   |   `->23:{18}                    Weak SCC
     |   |   |       |
     |   |   |       |->24:{22}                Weak SCC
     |   |   |       |   |
     |   |   |       |   |->26:{28}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->27:{29}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->28:{30}            Weak SCC
     |   |   |       |   |
     |   |   |       |   `->29:{31}            Weak SCC
     |   |   |       |
     |   |   |       `->25:{23}                Weak SCC
     |   |   |           |
     |   |   |           |->26:{28}            Weak SCC
     |   |   |           |
     |   |   |           |->27:{29}            Weak SCC
     |   |   |           |
     |   |   |           |->28:{30}            Weak SCC
     |   |   |           |
     |   |   |           `->29:{31}            Weak SCC
     |   |   |
     |   |   |->19:{11}                        Weak SCC
     |   |   |   |
     |   |   |   |->22:{17}                    Weak SCC
     |   |   |   |
     |   |   |   `->23:{18}                    Weak SCC
     |   |   |       |
     |   |   |       |->24:{22}                Weak SCC
     |   |   |       |   |
     |   |   |       |   |->26:{28}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->27:{29}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->28:{30}            Weak SCC
     |   |   |       |   |
     |   |   |       |   `->29:{31}            Weak SCC
     |   |   |       |
     |   |   |       `->25:{23}                Weak SCC
     |   |   |           |
     |   |   |           |->26:{28}            Weak SCC
     |   |   |           |
     |   |   |           |->27:{29}            Weak SCC
     |   |   |           |
     |   |   |           |->28:{30}            Weak SCC
     |   |   |           |
     |   |   |           `->29:{31}            Weak SCC
     |   |   |
     |   |   |->17:{12}                        Weak SCC
     |   |   |
     |   |   |->20:{13}                        Weak SCC
     |   |   |   |
     |   |   |   |->22:{17}                    Weak SCC
     |   |   |   |
     |   |   |   `->23:{18}                    Weak SCC
     |   |   |       |
     |   |   |       |->24:{22}                Weak SCC
     |   |   |       |   |
     |   |   |       |   |->26:{28}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->27:{29}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->28:{30}            Weak SCC
     |   |   |       |   |
     |   |   |       |   `->29:{31}            Weak SCC
     |   |   |       |
     |   |   |       `->25:{23}                Weak SCC
     |   |   |           |
     |   |   |           |->26:{28}            Weak SCC
     |   |   |           |
     |   |   |           |->27:{29}            Weak SCC
     |   |   |           |
     |   |   |           |->28:{30}            Weak SCC
     |   |   |           |
     |   |   |           `->29:{31}            Weak SCC
     |   |   |
     |   |   `->21:{14}                        Weak SCC
     |   |       |
     |   |       |->22:{17}                    Weak SCC
     |   |       |
     |   |       `->23:{18}                    Weak SCC
     |   |           |
     |   |           |->24:{22}                Weak SCC
     |   |           |   |
     |   |           |   |->26:{28}            Weak SCC
     |   |           |   |
     |   |           |   |->27:{29}            Weak SCC
     |   |           |   |
     |   |           |   |->28:{30}            Weak SCC
     |   |           |   |
     |   |           |   `->29:{31}            Weak SCC
     |   |           |
     |   |           `->25:{23}                Weak SCC
     |   |               |
     |   |               |->26:{28}            Weak SCC
     |   |               |
     |   |               |->27:{29}            Weak SCC
     |   |               |
     |   |               |->28:{30}            Weak SCC
     |   |               |
     |   |               `->29:{31}            Weak SCC
     |   |
     |   `->11:{16}                            Weak SCC
     |
     `->9:{15}                                 Weak SCC
  
  ->7:{19}                                     Weak SCC
  
  ->2:{20}                                     Weak SCC
     |
     |->3:{24}                                 Weak SCC
     |
     |->4:{25}                                 Weak SCC
     |
     |->5:{26}                                 Weak SCC
     |
     `->6:{27}                                 Weak SCC
  
  ->1:{21}                                     Weak SCC
     |
     |->3:{24}                                 Weak SCC
     |
     |->4:{25}                                 Weak SCC
     |
     |->5:{26}                                 Weak SCC
     |
     `->6:{27}                                 Weak SCC
  
  
  Here dependency-pairs are as follows:
  
  Strict DPs:
    { 1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
    , 2: dyade#1^#(::(@x, @xs), @l2) ->
         c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
    , 3: mult^#(@n, @l) -> mult#1^#(@l, @n)
    , 4: mult#1^#(::(@x, @xs), @n) ->
         c_6(*^#(@n, @x), mult^#(@n, @xs)) }
  Weak DPs:
    { 5: *^#(@x, @y) -> #mult^#(@x, @y)
    , 6: #mult^#(#0(), #0()) -> c_8()
    , 7: #mult^#(#0(), #neg(@y)) -> c_9()
    , 8: #mult^#(#0(), #pos(@y)) -> c_10()
    , 9: #mult^#(#neg(@x), #0()) -> c_11()
    , 10: #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
    , 11: #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
    , 12: #mult^#(#pos(@x), #0()) -> c_14()
    , 13: #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
    , 14: #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
    , 15: dyade#1^#(nil(), @l2) -> c_4()
    , 16: mult#1^#(nil(), @n) -> c_7()
    , 17: #natmult^#(#0(), @y) -> c_30()
    , 18: #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
    , 19: #add^#(#0(), @y) -> c_17()
    , 20: #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
    , 21: #add^#(#neg(#s(#s(@x))), @y) ->
          #pred^#(#add(#pos(#s(@x)), @y))
    , 22: #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
    , 23: #add^#(#pos(#s(#s(@x))), @y) ->
          #succ^#(#add(#pos(#s(@x)), @y))
    , 24: #pred^#(#0()) -> c_22()
    , 25: #pred^#(#neg(#s(@x))) -> c_23()
    , 26: #pred^#(#pos(#s(#0()))) -> c_24()
    , 27: #pred^#(#pos(#s(#s(@x)))) -> c_25()
    , 28: #succ^#(#0()) -> c_26()
    , 29: #succ^#(#neg(#s(#0()))) -> c_27()
    , 30: #succ^#(#neg(#s(#s(@x)))) -> c_28()
    , 31: #succ^#(#pos(#s(@x))) -> c_29() }

The following rules are part of trailing weak paths, and thus they
can be removed:

  { 21: #add^#(#neg(#s(#s(@x))), @y) ->
        #pred^#(#add(#pos(#s(@x)), @y))
  , 20: #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , 24: #pred^#(#0()) -> c_22()
  , 25: #pred^#(#neg(#s(@x))) -> c_23()
  , 26: #pred^#(#pos(#s(#0()))) -> c_24()
  , 27: #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , 19: #add^#(#0(), @y) -> c_17()
  , 15: dyade#1^#(nil(), @l2) -> c_4()
  , 16: mult#1^#(nil(), @n) -> c_7()
  , 5: *^#(@x, @y) -> #mult^#(@x, @y)
  , 6: #mult^#(#0(), #0()) -> c_8()
  , 7: #mult^#(#0(), #neg(@y)) -> c_9()
  , 8: #mult^#(#0(), #pos(@y)) -> c_10()
  , 9: #mult^#(#neg(@x), #0()) -> c_11()
  , 12: #mult^#(#pos(@x), #0()) -> c_14()
  , 10: #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , 11: #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , 13: #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , 14: #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , 17: #natmult^#(#0(), @y) -> c_30()
  , 18: #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , 22: #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , 23: #add^#(#pos(#s(#s(@x))), @y) ->
        #succ^#(#add(#pos(#s(@x)), @y))
  , 28: #succ^#(#0()) -> c_26()
  , 29: #succ^#(#neg(#s(#0()))) -> c_27()
  , 30: #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , 31: #succ^#(#pos(#s(@x))) -> c_29() }

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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs)) }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the following dependency-graph

  1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_3(mult^#(@x, @l2), dyade^#(@xs, @l2)) :2
  
  2: dyade#1^#(::(@x, @xs), @l2) ->
     c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :1
  
  3: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) ->
           c_6(*^#(@n, @x), mult^#(@n, @xs)) :4
  
  4: mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
     -->_2 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
  
Due to missing edges in the dependency-graph, the right-hand sides
of following rules could be simplified:

  { mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs)) }

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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the (estimated) dependency graph

  1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_1(mult^#(@x, @l2), dyade^#(@xs, @l2)) :2
  
  2: dyade#1^#(::(@x, @xs), @l2) ->
     c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :1
  
  3: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) :4
  
  4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs)
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
  
We estimate the application of rules based on the application of
their predecessors as follows:
- We remove {4} and add Pre({4}) = {3} to the strict component.


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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n) }
Weak DPs: { mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the (estimated) dependency graph

  1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_1(mult^#(@x, @l2), dyade^#(@xs, @l2)) :2
  
  2: dyade#1^#(::(@x, @xs), @l2) ->
     c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :1
  
  3: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) :4
  
  4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs)
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
  
We estimate the application of rules based on the application of
their predecessors as follows:
- We remove {2} and add Pre({2}) = {1} to the strict component.


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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , mult^#(@n, @l) -> mult#1^#(@l, @n) }
Weak DPs:
  { dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

No rule is usable.

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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , mult^#(@n, @l) -> mult#1^#(@l, @n) }
Weak DPs:
  { dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
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:
  { 2: mult^#(@n, @l) -> mult#1^#(@l, @n)
  , 3: dyade#1^#(::(@x, @xs), @l2) ->
       c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , 4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(::) = {}, Uargs(#s) = {}, Uargs(#neg) = {}, Uargs(#pos) = {},
    Uargs(*^#) = {}, Uargs(#mult^#) = {}, Uargs(dyade^#) = {},
    Uargs(dyade#1^#) = {}, Uargs(mult^#) = {}, Uargs(mult#1^#) = {},
    Uargs(#natmult^#) = {}, Uargs(#add^#) = {}, Uargs(#pred^#) = {},
    Uargs(#succ^#) = {}, Uargs(c_1) = {1, 2}
  TcT has computed following constructor-restricted polynomial
  interpretation.
          [::](x1, x2) = 3 + x2           
                                          
               [nil]() = 0                
                                          
                [#0]() = 0                
                                          
              [#s](x1) = 0                
                                          
            [#neg](x1) = 0                
                                          
            [#pos](x1) = 0                
                                          
         [*^#](x1, x2) = 0                
                                          
     [#mult^#](x1, x2) = 0                
                                          
     [dyade^#](x1, x2) = x1 + x1*x2 + x1^2
                                          
   [dyade#1^#](x1, x2) = x1 + x1*x2 + x1^2
                                          
      [mult^#](x1, x2) = 1 + x2           
                                          
    [mult#1^#](x1, x2) = x1               
                                          
  [#natmult^#](x1, x2) = 0                
                                          
      [#add^#](x1, x2) = 0                
                                          
         [#pred^#](x1) = 0                
                                          
         [#succ^#](x1) = 0                
                                          
         [c_1](x1, x2) = 2 + 3*x1 + x2    
                                          
  
  This order satisfies following ordering constraints
  
              [dyade^#(@l1, @l2)] =  @l1 + @l1*@l2 + @l1^2                    
                                  >= @l1 + @l1*@l2 + @l1^2                    
                                  =  [dyade#1^#(@l1, @l2)]                    
                                                                              
    [dyade#1^#(::(@x, @xs), @l2)] =  12 + 7*@xs + 3*@l2 + @xs*@l2 + @xs^2     
                                  >  5 + 3*@l2 + @xs + @xs*@l2 + @xs^2        
                                  =  [c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))]
                                                                              
                 [mult^#(@n, @l)] =  1 + @l                                   
                                  >  @l                                       
                                  =  [mult#1^#(@l, @n)]                       
                                                                              
      [mult#1^#(::(@x, @xs), @n)] =  3 + @xs                                  
                                  >  1 + @xs                                  
                                  =  [mult^#(@n, @xs)]                        
                                                                              

Processor 'custom shape polynomial interpretation' induces the
complexity certificate YES(?,O(n^2)) on application of rules
{2,3,4}. Here rules are labeled according to the (estimated)
dependency graph

  1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_1(mult^#(@x, @l2), dyade^#(@xs, @l2)) :3
  
  2: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) :4
  
  3: dyade#1^#(::(@x, @xs), @l2) ->
     c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :2
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :1
  
  4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs)
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :2
  

- The rules {2,3,4} have known complexity. These cover all
  predecessors of {1}, their complexity is equally bounded.


Overall, we obtain that the number of applications of rules
{1,2,3,4} is given by YES(?,O(n^2)).

We apply the transformation 'removetails' on the sub-problem:

Weak DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
StartTerms: basic terms
Strategy: innermost

We consider the the dependency graph

  ->1:{1,2}                                    Weak SCC
     |
     `->2:{3,4}                                Weak SCC
  
  
  Here dependency-pairs are as follows:
  
  Weak DPs:
    { 1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
    , 2: dyade#1^#(::(@x, @xs), @l2) ->
         c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
    , 3: mult^#(@n, @l) -> mult#1^#(@l, @n)
    , 4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }

The following rules are part of trailing weak paths, and thus they
can be removed:

  { 1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , 2: dyade#1^#(::(@x, @xs), @l2) ->
       c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , 3: mult^#(@n, @l) -> mult#1^#(@l, @n)
  , 4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }


We apply the transformation 'usablerules' on the sub-problem:

Rules: Empty
StartTerms: basic terms
Strategy: innermost

We apply the transformation 'trivial' on the sub-problem:

Rules: Empty
StartTerms: basic terms
Strategy: innermost

We consider the dependency graph

  empty

All SCCs are trivial and dependency pairs can be removed.


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^2))

tct-popstar

Execution Time (secs)
3.116
Answer
YES(O(1),O(n^2))
Inputdyade.raml
YES(O(1),O(n^2))

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

Strict Trs:
  { *(@x, @y) -> #mult(@x, @y)
  , dyade(@l1, @l2) -> dyade#1(@l1, @l2)
  , dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2))
  , dyade#1(nil(), @l2) -> nil()
  , mult(@n, @l) -> mult#1(@l, @n)
  , mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs))
  , mult#1(nil(), @n) -> nil() }
Weak Trs:
  { #mult(#0(), #0()) -> #0()
  , #mult(#0(), #neg(@y)) -> #0()
  , #mult(#0(), #pos(@y)) -> #0()
  , #mult(#neg(@x), #0()) -> #0()
  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
  , #mult(#pos(@x), #0()) -> #0()
  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
  , #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We add following dependency pairs

Strict DPs:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
  , mult#1^#(nil(), @n) -> c_7() }
Weak DPs:
  { #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }

and replace the set of basic marked basic terms accordingly.

We apply the transformation 'usablerules' on the sub-problem:

Strict DPs:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
  , mult#1^#(nil(), @n) -> c_7() }
Strict Trs:
  { *(@x, @y) -> #mult(@x, @y)
  , dyade(@l1, @l2) -> dyade#1(@l1, @l2)
  , dyade#1(::(@x, @xs), @l2) -> ::(mult(@x, @l2), dyade(@xs, @l2))
  , dyade#1(nil(), @l2) -> nil()
  , mult(@n, @l) -> mult#1(@l, @n)
  , mult#1(::(@x, @xs), @n) -> ::(*(@n, @x), mult(@n, @xs))
  , mult#1(nil(), @n) -> nil() }
Weak DPs:
  { #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }
Weak Trs:
  { #mult(#0(), #0()) -> #0()
  , #mult(#0(), #neg(@y)) -> #0()
  , #mult(#0(), #pos(@y)) -> #0()
  , #mult(#neg(@x), #0()) -> #0()
  , #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y))
  , #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y))
  , #mult(#pos(@x), #0()) -> #0()
  , #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y))
  , #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y))
  , #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
StartTerms: basic terms
Strategy: innermost

We replace strict/weak-rules by the corresponding usable rules:
  Weak Usable Rules:
    { #add(#0(), @y) -> @y
    , #add(#neg(#s(#0())), @y) -> #pred(@y)
    , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
    , #add(#pos(#s(#0())), @y) -> #succ(@y)
    , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
    , #pred(#0()) -> #neg(#s(#0()))
    , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
    , #pred(#pos(#s(#0()))) -> #0()
    , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
    , #succ(#0()) -> #pos(#s(#0()))
    , #succ(#neg(#s(#0()))) -> #0()
    , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
    , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
    , #natmult(#0(), @y) -> #0()
    , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }

We apply the transformation 'compose (addition)' on the
sub-problem:

Strict DPs:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
  , mult#1^#(nil(), @n) -> c_7() }
Weak DPs:
  { #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
StartTerms: basic terms
Strategy: innermost

We use the processor 'weightgap of dimension 2, maximal degree 1,
cbits 3' to orient following rules strictly.

DPs: { mult#1^#(nil(), @n) -> c_7() }

The induced complexity on above rules (modulo remaining rules) is
YES(?,O(n^1)). These rulesare moved into the corresponding weak
component(s).

Sub-proof:
----------
  The weightgap principle applies (using the following constant
  growth matrix-interpretation)
  
  The following argument positions are usable:
    Uargs(::) = {}, Uargs(#add) = {2}, Uargs(#s) = {},
    Uargs(#neg) = {}, Uargs(#pred) = {1}, Uargs(#pos) = {},
    Uargs(#succ) = {1}, Uargs(#natmult) = {}, Uargs(*^#) = {},
    Uargs(#mult^#) = {}, Uargs(dyade^#) = {}, Uargs(dyade#1^#) = {},
    Uargs(c_3) = {1, 2}, Uargs(mult^#) = {}, Uargs(mult#1^#) = {},
    Uargs(c_6) = {1, 2}, Uargs(#natmult^#) = {}, Uargs(#add^#) = {2},
    Uargs(#pred^#) = {1}, Uargs(#succ^#) = {1}
  
  TcT has computed following constructor-restricted matrix
  interpretation. Note that the diagonal of the component-wise maxima
  of interpretation-entries (of constructors) contains no more than 1
  non-zero entries.
  
            [::](x1, x2) = [1 0] x1 + [1 0] x2 + [0]
                           [0 0]      [0 0]      [0]
                                                    
                   [nil] = [0]
                           [1]
                              
                    [#0] = [0]
                           [0]
                              
          [#add](x1, x2) = [1 0] x2 + [0]
                           [0 2]      [0]
                                         
                [#s](x1) = [0]
                           [0]
                              
              [#neg](x1) = [0]
                           [0]
                              
             [#pred](x1) = [1 0] x1 + [0]
                           [0 0]      [0]
                                         
              [#pos](x1) = [0]
                           [0]
                              
             [#succ](x1) = [1 0] x1 + [0]
                           [0 0]      [0]
                                         
      [#natmult](x1, x2) = [0]
                           [0]
                              
           [*^#](x1, x2) = [0 0] x1 + [0 0] x2 + [0]
                           [2 2]      [2 2]      [0]
                                                    
       [#mult^#](x1, x2) = [2]
                           [0]
                              
       [dyade^#](x1, x2) = [0 0] x1 + [0 0] x2 + [0]
                           [2 2]      [1 1]      [0]
                                                    
     [dyade#1^#](x1, x2) = [0]
                           [0]
                              
           [c_3](x1, x2) = [1 0] x1 + [1 0] x2 + [0]
                           [0 1]      [0 1]      [0]
                                                    
        [mult^#](x1, x2) = [0 0] x2 + [0]
                           [1 1]      [1]
                                         
                   [c_4] = [0]
                           [0]
                              
      [mult#1^#](x1, x2) = [1]
                           [0]
                              
           [c_6](x1, x2) = [1 0] x1 + [1 0] x2 + [0]
                           [0 1]      [0 1]      [2]
                                                    
                   [c_7] = [0]
                           [0]
                              
                   [c_8] = [0]
                           [0]
                              
                   [c_9] = [0]
                           [0]
                              
                  [c_10] = [0]
                           [0]
                              
                  [c_11] = [0]
                           [0]
                              
    [#natmult^#](x1, x2) = [2]
                           [0]
                              
                  [c_14] = [0]
                           [0]
                              
        [#add^#](x1, x2) = [2 0] x2 + [0]
                           [0 0]      [0]
                                         
                  [c_17] = [0]
                           [0]
                              
           [#pred^#](x1) = [2 0] x1 + [0]
                           [0 0]      [0]
                                         
           [#succ^#](x1) = [2 0] x1 + [0]
                           [0 0]      [0]
                                         
                  [c_22] = [0]
                           [0]
                              
                  [c_23] = [0]
                           [0]
                              
                  [c_24] = [0]
                           [0]
                              
                  [c_25] = [0]
                           [0]
                              
                  [c_26] = [0]
                           [0]
                              
                  [c_27] = [0]
                           [0]
                              
                  [c_28] = [0]
                           [0]
                              
                  [c_29] = [0]
                           [0]
                              
                  [c_30] = [0]
                           [0]
  
  This order satisfies following ordering constraints
  
                  [#add(#0(), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 1]      [0]                           
                                   =  [@y]                                     
                                                                               
        [#add(#neg(#s(#0())), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#pred(@y)]                              
                                                                               
      [#add(#neg(#s(#s(@x))), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#pred(#add(#pos(#s(@x)), @y))]          
                                                                               
        [#add(#pos(#s(#0())), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#succ(@y)]                              
                                                                               
      [#add(#pos(#s(#s(@x))), @y)] =  [1 0] @y + [0]                           
                                      [0 2]      [0]                           
                                   >= [1 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#succ(#add(#pos(#s(@x)), @y))]          
                                                                               
                     [#pred(#0())] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#neg(#s(#0()))]                         
                                                                               
             [#pred(#neg(#s(@x)))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#neg(#s(#s(@x)))]                       
                                                                               
           [#pred(#pos(#s(#0())))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#0()]                                   
                                                                               
         [#pred(#pos(#s(#s(@x))))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#pos(#s(@x))]                           
                                                                               
                     [#succ(#0())] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#pos(#s(#0()))]                         
                                                                               
           [#succ(#neg(#s(#0())))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#0()]                                   
                                                                               
         [#succ(#neg(#s(#s(@x))))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#neg(#s(@x))]                           
                                                                               
             [#succ(#pos(#s(@x)))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#pos(#s(#s(@x)))]                       
                                                                               
              [#natmult(#0(), @y)] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#0()]                                   
                                                                               
            [#natmult(#s(@x), @y)] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [#add(#pos(@y), #natmult(@x, @y))]       
                                                                               
                     [*^#(@x, @y)] =  [0 0] @x + [0 0] @y + [0]                
                                      [2 2]      [2 2]      [0]                
                                   ?  [2]                                      
                                      [0]                                      
                                   =  [#mult^#(@x, @y)]                        
                                                                               
             [#mult^#(#0(), #0())] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_8()]                                  
                                                                               
         [#mult^#(#0(), #neg(@y))] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_9()]                                  
                                                                               
         [#mult^#(#0(), #pos(@y))] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_10()]                                 
                                                                               
         [#mult^#(#neg(@x), #0())] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_11()]                                 
                                                                               
     [#mult^#(#neg(@x), #neg(@y))] =  [2]                                      
                                      [0]                                      
                                   >= [2]                                      
                                      [0]                                      
                                   =  [#natmult^#(@x, @y)]                     
                                                                               
     [#mult^#(#neg(@x), #pos(@y))] =  [2]                                      
                                      [0]                                      
                                   >= [2]                                      
                                      [0]                                      
                                   =  [#natmult^#(@x, @y)]                     
                                                                               
         [#mult^#(#pos(@x), #0())] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_14()]                                 
                                                                               
     [#mult^#(#pos(@x), #neg(@y))] =  [2]                                      
                                      [0]                                      
                                   >= [2]                                      
                                      [0]                                      
                                   =  [#natmult^#(@x, @y)]                     
                                                                               
     [#mult^#(#pos(@x), #pos(@y))] =  [2]                                      
                                      [0]                                      
                                   >= [2]                                      
                                      [0]                                      
                                   =  [#natmult^#(@x, @y)]                     
                                                                               
               [dyade^#(@l1, @l2)] =  [0 0] @l1 + [0 0] @l2 + [0]              
                                      [2 2]       [1 1]       [0]              
                                   >= [0]                                      
                                      [0]                                      
                                   =  [dyade#1^#(@l1, @l2)]                    
                                                                               
     [dyade#1^#(::(@x, @xs), @l2)] =  [0]                                      
                                      [0]                                      
                                   ?  [0 0] @l2 + [0 0] @xs + [0]              
                                      [2 2]       [2 2]       [1]              
                                   =  [c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))]
                                                                               
           [dyade#1^#(nil(), @l2)] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_4()]                                  
                                                                               
                  [mult^#(@n, @l)] =  [0 0] @l + [0]                           
                                      [1 1]      [1]                           
                                   ?  [1]                                      
                                      [0]                                      
                                   =  [mult#1^#(@l, @n)]                       
                                                                               
       [mult#1^#(::(@x, @xs), @n)] =  [1]                                      
                                      [0]                                      
                                   ?  [0 0] @n + [0 0] @x + [0 0] @xs + [0]    
                                      [2 2]      [2 2]      [1 1]       [3]    
                                   =  [c_6(*^#(@n, @x), mult^#(@n, @xs))]      
                                                                               
             [mult#1^#(nil(), @n)] =  [1]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_7()]                                  
                                                                               
            [#natmult^#(#0(), @y)] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [c_30()]                                 
                                                                               
          [#natmult^#(#s(@x), @y)] =  [2]                                      
                                      [0]                                      
                                   >  [0]                                      
                                      [0]                                      
                                   =  [#add^#(#pos(@y), #natmult(@x, @y))]     
                                                                               
                [#add^#(#0(), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_17()]                                 
                                                                               
      [#add^#(#neg(#s(#0())), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#pred^#(@y)]                            
                                                                               
    [#add^#(#neg(#s(#s(@x))), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#pred^#(#add(#pos(#s(@x)), @y))]        
                                                                               
      [#add^#(#pos(#s(#0())), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#succ^#(@y)]                            
                                                                               
    [#add^#(#pos(#s(#s(@x))), @y)] =  [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   >= [2 0] @y + [0]                           
                                      [0 0]      [0]                           
                                   =  [#succ^#(#add(#pos(#s(@x)), @y))]        
                                                                               
                   [#pred^#(#0())] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_22()]                                 
                                                                               
           [#pred^#(#neg(#s(@x)))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_23()]                                 
                                                                               
         [#pred^#(#pos(#s(#0())))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_24()]                                 
                                                                               
       [#pred^#(#pos(#s(#s(@x))))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_25()]                                 
                                                                               
                   [#succ^#(#0())] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_26()]                                 
                                                                               
         [#succ^#(#neg(#s(#0())))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_27()]                                 
                                                                               
       [#succ^#(#neg(#s(#s(@x))))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_28()]                                 
                                                                               
           [#succ^#(#pos(#s(@x)))] =  [0]                                      
                                      [0]                                      
                                   >= [0]                                      
                                      [0]                                      
                                   =  [c_29()]                                 
                                                                               

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:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs)) }
Weak DPs:
  { #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , mult#1^#(nil(), @n) -> c_7()
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the (estimated) dependency graph

  1: *^#(@x, @y) -> #mult^#(@x, @y)
     -->_1 #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y) :15
     -->_1 #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y) :14
     -->_1 #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y) :12
     -->_1 #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y) :11
     -->_1 #mult^#(#pos(@x), #0()) -> c_14() :13
     -->_1 #mult^#(#neg(@x), #0()) -> c_11() :10
     -->_1 #mult^#(#0(), #pos(@y)) -> c_10() :9
     -->_1 #mult^#(#0(), #neg(@y)) -> c_9() :8
     -->_1 #mult^#(#0(), #0()) -> c_8() :7
  
  2: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_3(mult^#(@x, @l2), dyade^#(@xs, @l2)) :3
     -->_1 dyade#1^#(nil(), @l2) -> c_4() :4
  
  3: dyade#1^#(::(@x, @xs), @l2) ->
     c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :5
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :2
  
  4: dyade#1^#(nil(), @l2) -> c_4()
  
  5: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) ->
           c_6(*^#(@n, @x), mult^#(@n, @xs)) :6
     -->_1 mult#1^#(nil(), @n) -> c_7() :16
  
  6: mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
     -->_2 mult^#(@n, @l) -> mult#1^#(@l, @n) :5
     -->_1 *^#(@x, @y) -> #mult^#(@x, @y) :1
  
  7: #mult^#(#0(), #0()) -> c_8()
  
  8: #mult^#(#0(), #neg(@y)) -> c_9()
  
  9: #mult^#(#0(), #pos(@y)) -> c_10()
  
  10: #mult^#(#neg(@x), #0()) -> c_11()
  
  11: #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
     -->_1 #natmult^#(#s(@x), @y) ->
           #add^#(#pos(@y), #natmult(@x, @y)) :18
     -->_1 #natmult^#(#0(), @y) -> c_30() :17
  
  12: #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
     -->_1 #natmult^#(#s(@x), @y) ->
           #add^#(#pos(@y), #natmult(@x, @y)) :18
     -->_1 #natmult^#(#0(), @y) -> c_30() :17
  
  13: #mult^#(#pos(@x), #0()) -> c_14()
  
  14: #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
     -->_1 #natmult^#(#s(@x), @y) ->
           #add^#(#pos(@y), #natmult(@x, @y)) :18
     -->_1 #natmult^#(#0(), @y) -> c_30() :17
  
  15: #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
     -->_1 #natmult^#(#s(@x), @y) ->
           #add^#(#pos(@y), #natmult(@x, @y)) :18
     -->_1 #natmult^#(#0(), @y) -> c_30() :17
  
  16: mult#1^#(nil(), @n) -> c_7()
  
  17: #natmult^#(#0(), @y) -> c_30()
  
  18: #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
     -->_1 #add^#(#pos(#s(#s(@x))), @y) ->
           #succ^#(#add(#pos(#s(@x)), @y)) :23
     -->_1 #add^#(#pos(#s(#0())), @y) -> #succ^#(@y) :22
  
  19: #add^#(#0(), @y) -> c_17()
  
  20: #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
     -->_1 #pred^#(#pos(#s(#s(@x)))) -> c_25() :27
     -->_1 #pred^#(#pos(#s(#0()))) -> c_24() :26
     -->_1 #pred^#(#neg(#s(@x))) -> c_23() :25
     -->_1 #pred^#(#0()) -> c_22() :24
  
  21: #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
     -->_1 #pred^#(#pos(#s(#s(@x)))) -> c_25() :27
     -->_1 #pred^#(#pos(#s(#0()))) -> c_24() :26
     -->_1 #pred^#(#neg(#s(@x))) -> c_23() :25
     -->_1 #pred^#(#0()) -> c_22() :24
  
  22: #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
     -->_1 #succ^#(#pos(#s(@x))) -> c_29() :31
     -->_1 #succ^#(#neg(#s(#s(@x)))) -> c_28() :30
     -->_1 #succ^#(#neg(#s(#0()))) -> c_27() :29
     -->_1 #succ^#(#0()) -> c_26() :28
  
  23: #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
     -->_1 #succ^#(#pos(#s(@x))) -> c_29() :31
     -->_1 #succ^#(#neg(#s(#s(@x)))) -> c_28() :30
     -->_1 #succ^#(#neg(#s(#0()))) -> c_27() :29
     -->_1 #succ^#(#0()) -> c_26() :28
  
  24: #pred^#(#0()) -> c_22()
  
  25: #pred^#(#neg(#s(@x))) -> c_23()
  
  26: #pred^#(#pos(#s(#0()))) -> c_24()
  
  27: #pred^#(#pos(#s(#s(@x)))) -> c_25()
  
  28: #succ^#(#0()) -> c_26()
  
  29: #succ^#(#neg(#s(#0()))) -> c_27()
  
  30: #succ^#(#neg(#s(#s(@x)))) -> c_28()
  
  31: #succ^#(#pos(#s(@x))) -> c_29()
  
We estimate the application of rules based on the application of
their predecessors as follows:
- We remove {4} and add Pre({4}) = {2} to the strict component.
- We remove {1} and add Pre({1}) = {6} to the strict component.


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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs)) }
Weak DPs:
  { *^#(@x, @y) -> #mult^#(@x, @y)
  , #mult^#(#0(), #0()) -> c_8()
  , #mult^#(#0(), #neg(@y)) -> c_9()
  , #mult^#(#0(), #pos(@y)) -> c_10()
  , #mult^#(#neg(@x), #0()) -> c_11()
  , #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #0()) -> c_14()
  , #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , dyade#1^#(nil(), @l2) -> c_4()
  , mult#1^#(nil(), @n) -> c_7()
  , #natmult^#(#0(), @y) -> c_30()
  , #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , #add^#(#0(), @y) -> c_17()
  , #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , #add^#(#neg(#s(#s(@x))), @y) -> #pred^#(#add(#pos(#s(@x)), @y))
  , #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , #add^#(#pos(#s(#s(@x))), @y) -> #succ^#(#add(#pos(#s(@x)), @y))
  , #pred^#(#0()) -> c_22()
  , #pred^#(#neg(#s(@x))) -> c_23()
  , #pred^#(#pos(#s(#0()))) -> c_24()
  , #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , #succ^#(#0()) -> c_26()
  , #succ^#(#neg(#s(#0()))) -> c_27()
  , #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , #succ^#(#pos(#s(@x))) -> c_29() }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the the dependency graph

  ->8:{1,2}
     |
     |->10:{3,4}
     |   |
     |   |->12:{5}                             Weak SCC
     |   |   |
     |   |   |->13:{6}                         Weak SCC
     |   |   |
     |   |   |->14:{7}                         Weak SCC
     |   |   |
     |   |   |->15:{8}                         Weak SCC
     |   |   |
     |   |   |->16:{9}                         Weak SCC
     |   |   |
     |   |   |->18:{10}                        Weak SCC
     |   |   |   |
     |   |   |   |->22:{17}                    Weak SCC
     |   |   |   |
     |   |   |   `->23:{18}                    Weak SCC
     |   |   |       |
     |   |   |       |->24:{22}                Weak SCC
     |   |   |       |   |
     |   |   |       |   |->26:{28}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->27:{29}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->28:{30}            Weak SCC
     |   |   |       |   |
     |   |   |       |   `->29:{31}            Weak SCC
     |   |   |       |
     |   |   |       `->25:{23}                Weak SCC
     |   |   |           |
     |   |   |           |->26:{28}            Weak SCC
     |   |   |           |
     |   |   |           |->27:{29}            Weak SCC
     |   |   |           |
     |   |   |           |->28:{30}            Weak SCC
     |   |   |           |
     |   |   |           `->29:{31}            Weak SCC
     |   |   |
     |   |   |->19:{11}                        Weak SCC
     |   |   |   |
     |   |   |   |->22:{17}                    Weak SCC
     |   |   |   |
     |   |   |   `->23:{18}                    Weak SCC
     |   |   |       |
     |   |   |       |->24:{22}                Weak SCC
     |   |   |       |   |
     |   |   |       |   |->26:{28}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->27:{29}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->28:{30}            Weak SCC
     |   |   |       |   |
     |   |   |       |   `->29:{31}            Weak SCC
     |   |   |       |
     |   |   |       `->25:{23}                Weak SCC
     |   |   |           |
     |   |   |           |->26:{28}            Weak SCC
     |   |   |           |
     |   |   |           |->27:{29}            Weak SCC
     |   |   |           |
     |   |   |           |->28:{30}            Weak SCC
     |   |   |           |
     |   |   |           `->29:{31}            Weak SCC
     |   |   |
     |   |   |->17:{12}                        Weak SCC
     |   |   |
     |   |   |->20:{13}                        Weak SCC
     |   |   |   |
     |   |   |   |->22:{17}                    Weak SCC
     |   |   |   |
     |   |   |   `->23:{18}                    Weak SCC
     |   |   |       |
     |   |   |       |->24:{22}                Weak SCC
     |   |   |       |   |
     |   |   |       |   |->26:{28}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->27:{29}            Weak SCC
     |   |   |       |   |
     |   |   |       |   |->28:{30}            Weak SCC
     |   |   |       |   |
     |   |   |       |   `->29:{31}            Weak SCC
     |   |   |       |
     |   |   |       `->25:{23}                Weak SCC
     |   |   |           |
     |   |   |           |->26:{28}            Weak SCC
     |   |   |           |
     |   |   |           |->27:{29}            Weak SCC
     |   |   |           |
     |   |   |           |->28:{30}            Weak SCC
     |   |   |           |
     |   |   |           `->29:{31}            Weak SCC
     |   |   |
     |   |   `->21:{14}                        Weak SCC
     |   |       |
     |   |       |->22:{17}                    Weak SCC
     |   |       |
     |   |       `->23:{18}                    Weak SCC
     |   |           |
     |   |           |->24:{22}                Weak SCC
     |   |           |   |
     |   |           |   |->26:{28}            Weak SCC
     |   |           |   |
     |   |           |   |->27:{29}            Weak SCC
     |   |           |   |
     |   |           |   |->28:{30}            Weak SCC
     |   |           |   |
     |   |           |   `->29:{31}            Weak SCC
     |   |           |
     |   |           `->25:{23}                Weak SCC
     |   |               |
     |   |               |->26:{28}            Weak SCC
     |   |               |
     |   |               |->27:{29}            Weak SCC
     |   |               |
     |   |               |->28:{30}            Weak SCC
     |   |               |
     |   |               `->29:{31}            Weak SCC
     |   |
     |   `->11:{16}                            Weak SCC
     |
     `->9:{15}                                 Weak SCC
  
  ->7:{19}                                     Weak SCC
  
  ->2:{20}                                     Weak SCC
     |
     |->3:{24}                                 Weak SCC
     |
     |->4:{25}                                 Weak SCC
     |
     |->5:{26}                                 Weak SCC
     |
     `->6:{27}                                 Weak SCC
  
  ->1:{21}                                     Weak SCC
     |
     |->3:{24}                                 Weak SCC
     |
     |->4:{25}                                 Weak SCC
     |
     |->5:{26}                                 Weak SCC
     |
     `->6:{27}                                 Weak SCC
  
  
  Here dependency-pairs are as follows:
  
  Strict DPs:
    { 1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
    , 2: dyade#1^#(::(@x, @xs), @l2) ->
         c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
    , 3: mult^#(@n, @l) -> mult#1^#(@l, @n)
    , 4: mult#1^#(::(@x, @xs), @n) ->
         c_6(*^#(@n, @x), mult^#(@n, @xs)) }
  Weak DPs:
    { 5: *^#(@x, @y) -> #mult^#(@x, @y)
    , 6: #mult^#(#0(), #0()) -> c_8()
    , 7: #mult^#(#0(), #neg(@y)) -> c_9()
    , 8: #mult^#(#0(), #pos(@y)) -> c_10()
    , 9: #mult^#(#neg(@x), #0()) -> c_11()
    , 10: #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
    , 11: #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
    , 12: #mult^#(#pos(@x), #0()) -> c_14()
    , 13: #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
    , 14: #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
    , 15: dyade#1^#(nil(), @l2) -> c_4()
    , 16: mult#1^#(nil(), @n) -> c_7()
    , 17: #natmult^#(#0(), @y) -> c_30()
    , 18: #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
    , 19: #add^#(#0(), @y) -> c_17()
    , 20: #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
    , 21: #add^#(#neg(#s(#s(@x))), @y) ->
          #pred^#(#add(#pos(#s(@x)), @y))
    , 22: #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
    , 23: #add^#(#pos(#s(#s(@x))), @y) ->
          #succ^#(#add(#pos(#s(@x)), @y))
    , 24: #pred^#(#0()) -> c_22()
    , 25: #pred^#(#neg(#s(@x))) -> c_23()
    , 26: #pred^#(#pos(#s(#0()))) -> c_24()
    , 27: #pred^#(#pos(#s(#s(@x)))) -> c_25()
    , 28: #succ^#(#0()) -> c_26()
    , 29: #succ^#(#neg(#s(#0()))) -> c_27()
    , 30: #succ^#(#neg(#s(#s(@x)))) -> c_28()
    , 31: #succ^#(#pos(#s(@x))) -> c_29() }

The following rules are part of trailing weak paths, and thus they
can be removed:

  { 21: #add^#(#neg(#s(#s(@x))), @y) ->
        #pred^#(#add(#pos(#s(@x)), @y))
  , 20: #add^#(#neg(#s(#0())), @y) -> #pred^#(@y)
  , 24: #pred^#(#0()) -> c_22()
  , 25: #pred^#(#neg(#s(@x))) -> c_23()
  , 26: #pred^#(#pos(#s(#0()))) -> c_24()
  , 27: #pred^#(#pos(#s(#s(@x)))) -> c_25()
  , 19: #add^#(#0(), @y) -> c_17()
  , 15: dyade#1^#(nil(), @l2) -> c_4()
  , 16: mult#1^#(nil(), @n) -> c_7()
  , 5: *^#(@x, @y) -> #mult^#(@x, @y)
  , 6: #mult^#(#0(), #0()) -> c_8()
  , 7: #mult^#(#0(), #neg(@y)) -> c_9()
  , 8: #mult^#(#0(), #pos(@y)) -> c_10()
  , 9: #mult^#(#neg(@x), #0()) -> c_11()
  , 12: #mult^#(#pos(@x), #0()) -> c_14()
  , 10: #mult^#(#neg(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , 11: #mult^#(#neg(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , 13: #mult^#(#pos(@x), #neg(@y)) -> #natmult^#(@x, @y)
  , 14: #mult^#(#pos(@x), #pos(@y)) -> #natmult^#(@x, @y)
  , 17: #natmult^#(#0(), @y) -> c_30()
  , 18: #natmult^#(#s(@x), @y) -> #add^#(#pos(@y), #natmult(@x, @y))
  , 22: #add^#(#pos(#s(#0())), @y) -> #succ^#(@y)
  , 23: #add^#(#pos(#s(#s(@x))), @y) ->
        #succ^#(#add(#pos(#s(@x)), @y))
  , 28: #succ^#(#0()) -> c_26()
  , 29: #succ^#(#neg(#s(#0()))) -> c_27()
  , 30: #succ^#(#neg(#s(#s(@x)))) -> c_28()
  , 31: #succ^#(#pos(#s(@x))) -> c_29() }

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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs)) }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the following dependency-graph

  1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_3(mult^#(@x, @l2), dyade^#(@xs, @l2)) :2
  
  2: dyade#1^#(::(@x, @xs), @l2) ->
     c_3(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :1
  
  3: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) ->
           c_6(*^#(@n, @x), mult^#(@n, @xs)) :4
  
  4: mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs))
     -->_2 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
  
Due to missing edges in the dependency-graph, the right-hand sides
of following rules could be simplified:

  { mult#1^#(::(@x, @xs), @n) -> c_6(*^#(@n, @x), mult^#(@n, @xs)) }

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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the (estimated) dependency graph

  1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_1(mult^#(@x, @l2), dyade^#(@xs, @l2)) :2
  
  2: dyade#1^#(::(@x, @xs), @l2) ->
     c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :1
  
  3: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) :4
  
  4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs)
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
  
We estimate the application of rules based on the application of
their predecessors as follows:
- We remove {4} and add Pre({4}) = {3} to the strict component.


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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n) }
Weak DPs: { mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We consider the (estimated) dependency graph

  1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_1(mult^#(@x, @l2), dyade^#(@xs, @l2)) :2
  
  2: dyade#1^#(::(@x, @xs), @l2) ->
     c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :1
  
  3: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) :4
  
  4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs)
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :3
  
We estimate the application of rules based on the application of
their predecessors as follows:
- We remove {2} and add Pre({2}) = {1} to the strict component.


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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , mult^#(@n, @l) -> mult#1^#(@l, @n) }
Weak DPs:
  { dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
Weak Trs:
  { #add(#0(), @y) -> @y
  , #add(#neg(#s(#0())), @y) -> #pred(@y)
  , #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y))
  , #add(#pos(#s(#0())), @y) -> #succ(@y)
  , #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y))
  , #pred(#0()) -> #neg(#s(#0()))
  , #pred(#neg(#s(@x))) -> #neg(#s(#s(@x)))
  , #pred(#pos(#s(#0()))) -> #0()
  , #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x))
  , #succ(#0()) -> #pos(#s(#0()))
  , #succ(#neg(#s(#0()))) -> #0()
  , #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x))
  , #succ(#pos(#s(@x))) -> #pos(#s(#s(@x)))
  , #natmult(#0(), @y) -> #0()
  , #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

No rule is usable.

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

Strict DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , mult^#(@n, @l) -> mult#1^#(@l, @n) }
Weak DPs:
  { dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^2))

We use the processor 'Small Polynomial Path Order (PS,2-bounded)'
to orient following rules strictly.

DPs:
  { 3: dyade#1^#(::(@x, @xs), @l2) ->
       c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , 4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }

Sub-proof:
----------
  The input was oriented with the instance of 'Small Polynomial Path
  Order (PS,2-bounded)' as induced by the safe mapping
  
   safe(::) = {1, 2}, safe(nil) = {}, safe(#0) = {}, safe(#s) = {1},
   safe(#neg) = {1}, safe(#pos) = {1}, safe(*^#) = {},
   safe(#mult^#) = {}, safe(dyade^#) = {}, safe(dyade#1^#) = {},
   safe(mult^#) = {2}, safe(mult#1^#) = {1}, safe(#natmult^#) = {},
   safe(#add^#) = {}, safe(#pred^#) = {}, safe(#succ^#) = {},
   safe(c_1) = {}
  
  and precedence
  
   dyade#1^# > mult^#, dyade^# ~ dyade#1^#, mult^# ~ mult#1^# .
  
  Following symbols are considered recursive:
  
   {dyade^#, dyade#1^#}
  
  The recursion depth is 1.
  
  Further, following argument filtering is employed:
  
   pi(::) = [2], pi(nil) = [], pi(#0) = [], pi(#s) = [],
   pi(#neg) = [], pi(#pos) = [], pi(*^#) = [], pi(#mult^#) = [],
   pi(dyade^#) = [1, 2], pi(dyade#1^#) = [1, 2], pi(mult^#) = 2,
   pi(mult#1^#) = 1, pi(#natmult^#) = [], pi(#add^#) = [],
   pi(#pred^#) = [], pi(#succ^#) = [], pi(c_1) = [1, 2]
  
  Usable defined function symbols are a subset of:
  
   {}
  
  For your convenience, here are the satisfied ordering constraints:
  
              pi(dyade^#(@l1, @l2)) =  dyade^#(@l1,  @l2;)                        
                                    >= dyade#1^#(@l1,  @l2;)                      
                                    =  pi(dyade#1^#(@l1, @l2))                    
                                                                                  
    pi(dyade#1^#(::(@x, @xs), @l2)) =  dyade#1^#(::(; @xs),  @l2;)                
                                    >  c_1(@l2,  dyade^#(@xs,  @l2;);)            
                                    =  pi(c_1(mult^#(@x, @l2), dyade^#(@xs, @l2)))
                                                                                  
                 pi(mult^#(@n, @l)) =  @l                                         
                                    >= @l                                         
                                    =  pi(mult#1^#(@l, @n))                       
                                                                                  
      pi(mult#1^#(::(@x, @xs), @n)) =  ::(; @xs)                                  
                                    >  @xs                                        
                                    =  pi(mult^#(@n, @xs))                        
                                                                                  

Processor 'Small Polynomial Path Order (PS,2-bounded)' induces the
complexity certificate YES(?,O(n^2)) on application of rules {3,4}.
Here rules are labeled according to the (estimated) dependency
graph

  1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
     -->_1 dyade#1^#(::(@x, @xs), @l2) ->
           c_1(mult^#(@x, @l2), dyade^#(@xs, @l2)) :3
  
  2: mult^#(@n, @l) -> mult#1^#(@l, @n)
     -->_1 mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) :4
  
  3: dyade#1^#(::(@x, @xs), @l2) ->
     c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :2
     -->_2 dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2) :1
  
  4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs)
     -->_1 mult^#(@n, @l) -> mult#1^#(@l, @n) :2
  

- The rules {3,4} have known complexity. These cover all
  predecessors of {1,2}, their complexity is equally bounded.


Overall, we obtain that the number of applications of rules
{1,2,3,4} is given by YES(?,O(n^2)).

We apply the transformation 'removetails' on the sub-problem:

Weak DPs:
  { dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , dyade#1^#(::(@x, @xs), @l2) ->
    c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , mult^#(@n, @l) -> mult#1^#(@l, @n)
  , mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }
StartTerms: basic terms
Strategy: innermost

We consider the the dependency graph

  ->1:{1,2}                                    Weak SCC
     |
     `->2:{3,4}                                Weak SCC
  
  
  Here dependency-pairs are as follows:
  
  Weak DPs:
    { 1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
    , 2: dyade#1^#(::(@x, @xs), @l2) ->
         c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
    , 3: mult^#(@n, @l) -> mult#1^#(@l, @n)
    , 4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }

The following rules are part of trailing weak paths, and thus they
can be removed:

  { 1: dyade^#(@l1, @l2) -> dyade#1^#(@l1, @l2)
  , 2: dyade#1^#(::(@x, @xs), @l2) ->
       c_1(mult^#(@x, @l2), dyade^#(@xs, @l2))
  , 3: mult^#(@n, @l) -> mult#1^#(@l, @n)
  , 4: mult#1^#(::(@x, @xs), @n) -> mult^#(@n, @xs) }


We apply the transformation 'usablerules' on the sub-problem:

Rules: Empty
StartTerms: basic terms
Strategy: innermost

We apply the transformation 'trivial' on the sub-problem:

Rules: Empty
StartTerms: basic terms
Strategy: innermost

We consider the dependency graph

  empty

All SCCs are trivial and dependency pairs can be removed.


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^2))