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

Strict Trs:
  { a(Z(), y) -> Z()
  , a(C(x1, x2), y) -> C(a(x1, y), a(x2, C(x1, x2)))
  , second(C(x1, x2)) -> x2
  , eqZList(Z(), Z()) -> True()
  , eqZList(Z(), C(y1, y2)) -> False()
  , eqZList(C(x1, x2), Z()) -> False()
  , eqZList(C(x1, x2), C(y1, y2)) ->
    and(eqZList(x1, y1), eqZList(x2, y2))
  , first(C(x1, x2)) -> x1 }
Weak Trs:
  { and(True(), True()) -> True()
  , and(True(), False()) -> False()
  , and(False(), True()) -> False()
  , and(False(), False()) -> False() }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

We add the following weak dependency pairs:

Strict DPs:
  { a^#(Z(), y) -> c_1()
  , a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2)))
  , second^#(C(x1, x2)) -> c_3()
  , eqZList^#(Z(), Z()) -> c_4()
  , eqZList^#(Z(), C(y1, y2)) -> c_5()
  , eqZList^#(C(x1, x2), Z()) -> c_6()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_7(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , first^#(C(x1, x2)) -> c_8() }
Weak DPs:
  { and^#(True(), True()) -> c_9()
  , and^#(True(), False()) -> c_10()
  , and^#(False(), True()) -> c_11()
  , and^#(False(), False()) -> c_12() }

and mark the set of starting terms.

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

Strict DPs:
  { a^#(Z(), y) -> c_1()
  , a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2)))
  , second^#(C(x1, x2)) -> c_3()
  , eqZList^#(Z(), Z()) -> c_4()
  , eqZList^#(Z(), C(y1, y2)) -> c_5()
  , eqZList^#(C(x1, x2), Z()) -> c_6()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_7(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , first^#(C(x1, x2)) -> c_8() }
Strict Trs:
  { a(Z(), y) -> Z()
  , a(C(x1, x2), y) -> C(a(x1, y), a(x2, C(x1, x2)))
  , second(C(x1, x2)) -> x2
  , eqZList(Z(), Z()) -> True()
  , eqZList(Z(), C(y1, y2)) -> False()
  , eqZList(C(x1, x2), Z()) -> False()
  , eqZList(C(x1, x2), C(y1, y2)) ->
    and(eqZList(x1, y1), eqZList(x2, y2))
  , first(C(x1, x2)) -> x1 }
Weak DPs:
  { and^#(True(), True()) -> c_9()
  , and^#(True(), False()) -> c_10()
  , and^#(False(), True()) -> c_11()
  , and^#(False(), False()) -> c_12() }
Weak Trs:
  { and(True(), True()) -> True()
  , and(True(), False()) -> False()
  , and(False(), True()) -> False()
  , and(False(), False()) -> False() }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

We replace rewrite rules by usable rules:

  Strict Usable Rules:
    { eqZList(Z(), Z()) -> True()
    , eqZList(Z(), C(y1, y2)) -> False()
    , eqZList(C(x1, x2), Z()) -> False()
    , eqZList(C(x1, x2), C(y1, y2)) ->
      and(eqZList(x1, y1), eqZList(x2, y2)) }
  Weak Usable Rules:
    { and(True(), True()) -> True()
    , and(True(), False()) -> False()
    , and(False(), True()) -> False()
    , and(False(), False()) -> False() }

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

Strict DPs:
  { a^#(Z(), y) -> c_1()
  , a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2)))
  , second^#(C(x1, x2)) -> c_3()
  , eqZList^#(Z(), Z()) -> c_4()
  , eqZList^#(Z(), C(y1, y2)) -> c_5()
  , eqZList^#(C(x1, x2), Z()) -> c_6()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_7(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , first^#(C(x1, x2)) -> c_8() }
Strict Trs:
  { eqZList(Z(), Z()) -> True()
  , eqZList(Z(), C(y1, y2)) -> False()
  , eqZList(C(x1, x2), Z()) -> False()
  , eqZList(C(x1, x2), C(y1, y2)) ->
    and(eqZList(x1, y1), eqZList(x2, y2)) }
Weak DPs:
  { and^#(True(), True()) -> c_9()
  , and^#(True(), False()) -> c_10()
  , and^#(False(), True()) -> c_11()
  , and^#(False(), False()) -> c_12() }
Weak Trs:
  { and(True(), True()) -> True()
  , and(True(), False()) -> False()
  , and(False(), True()) -> False()
  , and(False(), False()) -> False() }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

The weightgap principle applies (using the following constant
growth matrix-interpretation)

The following argument positions are usable:
  Uargs(and) = {1, 2}, Uargs(c_2) = {1, 2}, Uargs(c_7) = {1},
  Uargs(and^#) = {1, 2}

TcT has computed the following constructor-restricted matrix
interpretation.

    [eqZList](x1, x2) = [0 1] x1 + [0 1] x2 + [1]
                        [0 0]      [0 0]      [1]
                                                 
                  [Z] = [0]                      
                        [2]                      
                                                 
               [True] = [0]                      
                        [0]                      
                                                 
          [C](x1, x2) = [1 0] x1 + [0 0] x2 + [1]
                        [0 1]      [0 1]      [2]
                                                 
        [and](x1, x2) = [1 0] x1 + [1 1] x2 + [1]
                        [0 0]      [0 0]      [0]
                                                 
              [False] = [0]                      
                        [0]                      
                                                 
        [a^#](x1, x2) = [0]                      
                        [0]                      
                                                 
                [c_1] = [0]                      
                        [0]                      
                                                 
        [c_2](x1, x2) = [1 0] x1 + [1 0] x2 + [0]
                        [0 1]      [0 1]      [0]
                                                 
       [second^#](x1) = [0]                      
                        [0]                      
                                                 
                [c_3] = [0]                      
                        [0]                      
                                                 
  [eqZList^#](x1, x2) = [0 1] x1 + [0 1] x2 + [0]
                        [0 0]      [0 0]      [0]
                                                 
                [c_4] = [0]                      
                        [0]                      
                                                 
                [c_5] = [0]                      
                        [0]                      
                                                 
                [c_6] = [0]                      
                        [0]                      
                                                 
            [c_7](x1) = [1 0] x1 + [0]           
                        [0 1]      [0]           
                                                 
      [and^#](x1, x2) = [1 1] x1 + [1 1] x2 + [0]
                        [0 0]      [0 0]      [0]
                                                 
        [first^#](x1) = [0]                      
                        [0]                      
                                                 
                [c_8] = [0]                      
                        [0]                      
                                                 
                [c_9] = [0]                      
                        [0]                      
                                                 
               [c_10] = [0]                      
                        [0]                      
                                                 
               [c_11] = [0]                      
                        [0]                      
                                                 
               [c_12] = [0]                      
                        [0]                      

The order satisfies the following ordering constraints:

                [eqZList(Z(), Z())] =  [5]                                            
                                       [1]                                            
                                    >  [0]                                            
                                       [0]                                            
                                    =  [True()]                                       
                                                                                      
          [eqZList(Z(), C(y1, y2))] =  [0 1] y1 + [0 1] y2 + [5]                      
                                       [0 0]      [0 0]      [1]                      
                                    >  [0]                                            
                                       [0]                                            
                                    =  [False()]                                      
                                                                                      
          [eqZList(C(x1, x2), Z())] =  [0 1] x1 + [0 1] x2 + [5]                      
                                       [0 0]      [0 0]      [1]                      
                                    >  [0]                                            
                                       [0]                                            
                                    =  [False()]                                      
                                                                                      
    [eqZList(C(x1, x2), C(y1, y2))] =  [0 1] x1 + [0 1] x2 + [0 1] y1 + [0 1] y2 + [5]
                                       [0 0]      [0 0]      [0 0]      [0 0]      [1]
                                    >  [0 1] x1 + [0 1] x2 + [0 1] y1 + [0 1] y2 + [4]
                                       [0 0]      [0 0]      [0 0]      [0 0]      [0]
                                    =  [and(eqZList(x1, y1), eqZList(x2, y2))]        
                                                                                      
              [and(True(), True())] =  [1]                                            
                                       [0]                                            
                                    >  [0]                                            
                                       [0]                                            
                                    =  [True()]                                       
                                                                                      
             [and(True(), False())] =  [1]                                            
                                       [0]                                            
                                    >  [0]                                            
                                       [0]                                            
                                    =  [False()]                                      
                                                                                      
             [and(False(), True())] =  [1]                                            
                                       [0]                                            
                                    >  [0]                                            
                                       [0]                                            
                                    =  [False()]                                      
                                                                                      
            [and(False(), False())] =  [1]                                            
                                       [0]                                            
                                    >  [0]                                            
                                       [0]                                            
                                    =  [False()]                                      
                                                                                      
                      [a^#(Z(), y)] =  [0]                                            
                                       [0]                                            
                                    >= [0]                                            
                                       [0]                                            
                                    =  [c_1()]                                        
                                                                                      
                [a^#(C(x1, x2), y)] =  [0]                                            
                                       [0]                                            
                                    >= [0]                                            
                                       [0]                                            
                                    =  [c_2(a^#(x1, y), a^#(x2, C(x1, x2)))]          
                                                                                      
              [second^#(C(x1, x2))] =  [0]                                            
                                       [0]                                            
                                    >= [0]                                            
                                       [0]                                            
                                    =  [c_3()]                                        
                                                                                      
              [eqZList^#(Z(), Z())] =  [4]                                            
                                       [0]                                            
                                    >  [0]                                            
                                       [0]                                            
                                    =  [c_4()]                                        
                                                                                      
        [eqZList^#(Z(), C(y1, y2))] =  [0 1] y1 + [0 1] y2 + [4]                      
                                       [0 0]      [0 0]      [0]                      
                                    >  [0]                                            
                                       [0]                                            
                                    =  [c_5()]                                        
                                                                                      
        [eqZList^#(C(x1, x2), Z())] =  [0 1] x1 + [0 1] x2 + [4]                      
                                       [0 0]      [0 0]      [0]                      
                                    >  [0]                                            
                                       [0]                                            
                                    =  [c_6()]                                        
                                                                                      
  [eqZList^#(C(x1, x2), C(y1, y2))] =  [0 1] x1 + [0 1] x2 + [0 1] y1 + [0 1] y2 + [4]
                                       [0 0]      [0 0]      [0 0]      [0 0]      [0]
                                    >= [0 1] x1 + [0 1] x2 + [0 1] y1 + [0 1] y2 + [4]
                                       [0 0]      [0 0]      [0 0]      [0 0]      [0]
                                    =  [c_7(and^#(eqZList(x1, y1), eqZList(x2, y2)))] 
                                                                                      
            [and^#(True(), True())] =  [0]                                            
                                       [0]                                            
                                    >= [0]                                            
                                       [0]                                            
                                    =  [c_9()]                                        
                                                                                      
           [and^#(True(), False())] =  [0]                                            
                                       [0]                                            
                                    >= [0]                                            
                                       [0]                                            
                                    =  [c_10()]                                       
                                                                                      
           [and^#(False(), True())] =  [0]                                            
                                       [0]                                            
                                    >= [0]                                            
                                       [0]                                            
                                    =  [c_11()]                                       
                                                                                      
          [and^#(False(), False())] =  [0]                                            
                                       [0]                                            
                                    >= [0]                                            
                                       [0]                                            
                                    =  [c_12()]                                       
                                                                                      
               [first^#(C(x1, x2))] =  [0]                                            
                                       [0]                                            
                                    >= [0]                                            
                                       [0]                                            
                                    =  [c_8()]                                        
                                                                                      

Further, it can be verified that all rules not oriented are covered by the weightgap condition.

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

Strict DPs:
  { a^#(Z(), y) -> c_1()
  , a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2)))
  , second^#(C(x1, x2)) -> c_3()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_7(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , first^#(C(x1, x2)) -> c_8() }
Weak DPs:
  { eqZList^#(Z(), Z()) -> c_4()
  , eqZList^#(Z(), C(y1, y2)) -> c_5()
  , eqZList^#(C(x1, x2), Z()) -> c_6()
  , and^#(True(), True()) -> c_9()
  , and^#(True(), False()) -> c_10()
  , and^#(False(), True()) -> c_11()
  , and^#(False(), False()) -> c_12() }
Weak Trs:
  { eqZList(Z(), Z()) -> True()
  , eqZList(Z(), C(y1, y2)) -> False()
  , eqZList(C(x1, x2), Z()) -> False()
  , eqZList(C(x1, x2), C(y1, y2)) ->
    and(eqZList(x1, y1), eqZList(x2, y2))
  , and(True(), True()) -> True()
  , and(True(), False()) -> False()
  , and(False(), True()) -> False()
  , and(False(), False()) -> False() }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

We estimate the number of application of {1,3,4,5} by applications
of Pre({1,3,4,5}) = {2}. Here rules are labeled as follows:

  DPs:
    { 1: a^#(Z(), y) -> c_1()
    , 2: a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2)))
    , 3: second^#(C(x1, x2)) -> c_3()
    , 4: eqZList^#(C(x1, x2), C(y1, y2)) ->
         c_7(and^#(eqZList(x1, y1), eqZList(x2, y2)))
    , 5: first^#(C(x1, x2)) -> c_8()
    , 6: eqZList^#(Z(), Z()) -> c_4()
    , 7: eqZList^#(Z(), C(y1, y2)) -> c_5()
    , 8: eqZList^#(C(x1, x2), Z()) -> c_6()
    , 9: and^#(True(), True()) -> c_9()
    , 10: and^#(True(), False()) -> c_10()
    , 11: and^#(False(), True()) -> c_11()
    , 12: and^#(False(), False()) -> c_12() }

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

Strict DPs:
  { a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2))) }
Weak DPs:
  { a^#(Z(), y) -> c_1()
  , second^#(C(x1, x2)) -> c_3()
  , eqZList^#(Z(), Z()) -> c_4()
  , eqZList^#(Z(), C(y1, y2)) -> c_5()
  , eqZList^#(C(x1, x2), Z()) -> c_6()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_7(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , and^#(True(), True()) -> c_9()
  , and^#(True(), False()) -> c_10()
  , and^#(False(), True()) -> c_11()
  , and^#(False(), False()) -> c_12()
  , first^#(C(x1, x2)) -> c_8() }
Weak Trs:
  { eqZList(Z(), Z()) -> True()
  , eqZList(Z(), C(y1, y2)) -> False()
  , eqZList(C(x1, x2), Z()) -> False()
  , eqZList(C(x1, x2), C(y1, y2)) ->
    and(eqZList(x1, y1), eqZList(x2, y2))
  , and(True(), True()) -> True()
  , and(True(), False()) -> False()
  , and(False(), True()) -> False()
  , and(False(), False()) -> False() }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.

{ a^#(Z(), y) -> c_1()
, second^#(C(x1, x2)) -> c_3()
, eqZList^#(Z(), Z()) -> c_4()
, eqZList^#(Z(), C(y1, y2)) -> c_5()
, eqZList^#(C(x1, x2), Z()) -> c_6()
, eqZList^#(C(x1, x2), C(y1, y2)) ->
  c_7(and^#(eqZList(x1, y1), eqZList(x2, y2)))
, and^#(True(), True()) -> c_9()
, and^#(True(), False()) -> c_10()
, and^#(False(), True()) -> c_11()
, and^#(False(), False()) -> c_12()
, first^#(C(x1, x2)) -> c_8() }

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

Strict DPs:
  { a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2))) }
Weak Trs:
  { eqZList(Z(), Z()) -> True()
  , eqZList(Z(), C(y1, y2)) -> False()
  , eqZList(C(x1, x2), Z()) -> False()
  , eqZList(C(x1, x2), C(y1, y2)) ->
    and(eqZList(x1, y1), eqZList(x2, y2))
  , and(True(), True()) -> True()
  , and(True(), False()) -> False()
  , and(False(), True()) -> False()
  , and(False(), False()) -> False() }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

No rule is usable, rules are removed from the input problem.

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

Strict DPs:
  { a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2))) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

We use the processor 'matrix interpretation of dimension 1' to
orient following rules strictly.

DPs:
  { 1: a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2))) }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(c_2) = {1, 2}
  
  TcT has computed the following constructor-based matrix
  interpretation satisfying not(EDA).
  
      [C](x1, x2) = [1] x1 + [1] x2 + [2]
                                         
    [a^#](x1, x2) = [4] x1 + [0]         
                                         
    [c_2](x1, x2) = [1] x1 + [1] x2 + [3]
  
  The order satisfies the following ordering constraints:
  
    [a^#(C(x1, x2), y)] = [4] x1 + [4] x2 + [8]                
                        > [4] x1 + [4] x2 + [3]                
                        = [c_2(a^#(x1, y), a^#(x2, C(x1, x2)))]
                                                               

The strictly oriented rules are moved into the weak component.

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

Weak DPs:
  { a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2))) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(1))

The following weak DPs constitute a sub-graph of the DG that is
closed under successors. The DPs are removed.

{ a^#(C(x1, x2), y) -> c_2(a^#(x1, y), a^#(x2, C(x1, x2))) }

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

Rules: Empty
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(1))

Empty rules are trivially bounded

Hurray, we answered YES(O(1),O(n^1))