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

Strict Trs:
  { 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))
  , f(Z()) -> Z()
  , f(C(x1, x2)) -> C(f(x1), f(x2))
  , first(C(x1, x2)) -> x1
  , g(x) -> x }
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:
  { second^#(C(x1, x2)) -> c_1()
  , eqZList^#(Z(), Z()) -> c_2()
  , eqZList^#(Z(), C(y1, y2)) -> c_3()
  , eqZList^#(C(x1, x2), Z()) -> c_4()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_5(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , f^#(Z()) -> c_6()
  , f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(x2))
  , first^#(C(x1, x2)) -> c_8()
  , g^#(x) -> c_9() }
Weak DPs:
  { and^#(True(), True()) -> c_10()
  , and^#(True(), False()) -> c_11()
  , and^#(False(), True()) -> c_12()
  , and^#(False(), False()) -> c_13() }

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:
  { second^#(C(x1, x2)) -> c_1()
  , eqZList^#(Z(), Z()) -> c_2()
  , eqZList^#(Z(), C(y1, y2)) -> c_3()
  , eqZList^#(C(x1, x2), Z()) -> c_4()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_5(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , f^#(Z()) -> c_6()
  , f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(x2))
  , first^#(C(x1, x2)) -> c_8()
  , g^#(x) -> c_9() }
Strict Trs:
  { 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))
  , f(Z()) -> Z()
  , f(C(x1, x2)) -> C(f(x1), f(x2))
  , first(C(x1, x2)) -> x1
  , g(x) -> x }
Weak DPs:
  { and^#(True(), True()) -> c_10()
  , and^#(True(), False()) -> c_11()
  , and^#(False(), True()) -> c_12()
  , and^#(False(), False()) -> c_13() }
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:
  { second^#(C(x1, x2)) -> c_1()
  , eqZList^#(Z(), Z()) -> c_2()
  , eqZList^#(Z(), C(y1, y2)) -> c_3()
  , eqZList^#(C(x1, x2), Z()) -> c_4()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_5(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , f^#(Z()) -> c_6()
  , f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(x2))
  , first^#(C(x1, x2)) -> c_8()
  , g^#(x) -> c_9() }
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_10()
  , and^#(True(), False()) -> c_11()
  , and^#(False(), True()) -> c_12()
  , and^#(False(), False()) -> c_13() }
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_5) = {1}, Uargs(and^#) = {1, 2},
  Uargs(c_7) = {1, 2}

TcT has computed the following constructor-restricted matrix
interpretation.

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

The order satisfies the following ordering constraints:

                [eqZList(Z(), Z())] =  [1]                                           
                                       [0]                                           
                                    >  [0]                                           
                                       [0]                                           
                                    =  [True()]                                      
                                                                                     
          [eqZList(Z(), C(y1, y2))] =  [0 1] y1 + [0 1] y2 + [1]                     
                                       [0 0]      [0 0]      [0]                     
                                    >  [0]                                           
                                       [0]                                           
                                    =  [False()]                                     
                                                                                     
          [eqZList(C(x1, x2), Z())] =  [1]                                           
                                       [0]                                           
                                    >  [0]                                           
                                       [0]                                           
                                    =  [False()]                                     
                                                                                     
    [eqZList(C(x1, x2), C(y1, y2))] =  [0 1] y1 + [0 1] y2 + [1]                     
                                       [0 0]      [0 0]      [0]                     
                                    >  [0 1] y1 + [0 1] y2 + [0]                     
                                       [0 0]      [0 0]      [0]                     
                                    =  [and(eqZList(x1, y1), eqZList(x2, y2))]       
                                                                                     
              [and(True(), True())] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [True()]                                      
                                                                                     
             [and(True(), False())] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [False()]                                     
                                                                                     
             [and(False(), True())] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [False()]                                     
                                                                                     
            [and(False(), False())] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [False()]                                     
                                                                                     
              [second^#(C(x1, x2))] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [c_1()]                                       
                                                                                     
              [eqZList^#(Z(), Z())] =  [1]                                           
                                       [0]                                           
                                    >  [0]                                           
                                       [0]                                           
                                    =  [c_2()]                                       
                                                                                     
        [eqZList^#(Z(), C(y1, y2))] =  [0 1] y1 + [0 1] y2 + [1]                     
                                       [0 0]      [0 0]      [0]                     
                                    >  [0]                                           
                                       [0]                                           
                                    =  [c_3()]                                       
                                                                                     
        [eqZList^#(C(x1, x2), Z())] =  [1]                                           
                                       [0]                                           
                                    >  [0]                                           
                                       [0]                                           
                                    =  [c_4()]                                       
                                                                                     
  [eqZList^#(C(x1, x2), C(y1, y2))] =  [0 1] y1 + [0 1] y2 + [1]                     
                                       [0 0]      [0 0]      [0]                     
                                    >  [0 1] y1 + [0 1] y2 + [0]                     
                                       [0 0]      [0 0]      [0]                     
                                    =  [c_5(and^#(eqZList(x1, y1), eqZList(x2, y2)))]
                                                                                     
            [and^#(True(), True())] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [c_10()]                                      
                                                                                     
           [and^#(True(), False())] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [c_11()]                                      
                                                                                     
           [and^#(False(), True())] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [c_12()]                                      
                                                                                     
          [and^#(False(), False())] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [c_13()]                                      
                                                                                     
                         [f^#(Z())] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [c_6()]                                       
                                                                                     
                   [f^#(C(x1, x2))] =  [0]                                           
                                       [0]                                           
                                    ?  [2]                                           
                                       [2]                                           
                                    =  [c_7(f^#(x1), f^#(x2))]                       
                                                                                     
               [first^#(C(x1, x2))] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [c_8()]                                       
                                                                                     
                           [g^#(x)] =  [0]                                           
                                       [0]                                           
                                    >= [0]                                           
                                       [0]                                           
                                    =  [c_9()]                                       
                                                                                     

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:
  { second^#(C(x1, x2)) -> c_1()
  , f^#(Z()) -> c_6()
  , f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(x2))
  , first^#(C(x1, x2)) -> c_8()
  , g^#(x) -> c_9() }
Weak DPs:
  { eqZList^#(Z(), Z()) -> c_2()
  , eqZList^#(Z(), C(y1, y2)) -> c_3()
  , eqZList^#(C(x1, x2), Z()) -> c_4()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_5(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , and^#(True(), True()) -> c_10()
  , and^#(True(), False()) -> c_11()
  , and^#(False(), True()) -> c_12()
  , and^#(False(), False()) -> c_13() }
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,2,4,5} by applications
of Pre({1,2,4,5}) = {3}. Here rules are labeled as follows:

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

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

Strict DPs: { f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(x2)) }
Weak DPs:
  { second^#(C(x1, x2)) -> c_1()
  , eqZList^#(Z(), Z()) -> c_2()
  , eqZList^#(Z(), C(y1, y2)) -> c_3()
  , eqZList^#(C(x1, x2), Z()) -> c_4()
  , eqZList^#(C(x1, x2), C(y1, y2)) ->
    c_5(and^#(eqZList(x1, y1), eqZList(x2, y2)))
  , and^#(True(), True()) -> c_10()
  , and^#(True(), False()) -> c_11()
  , and^#(False(), True()) -> c_12()
  , and^#(False(), False()) -> c_13()
  , f^#(Z()) -> c_6()
  , first^#(C(x1, x2)) -> c_8()
  , g^#(x) -> c_9() }
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.

{ second^#(C(x1, x2)) -> c_1()
, eqZList^#(Z(), Z()) -> c_2()
, eqZList^#(Z(), C(y1, y2)) -> c_3()
, eqZList^#(C(x1, x2), Z()) -> c_4()
, eqZList^#(C(x1, x2), C(y1, y2)) ->
  c_5(and^#(eqZList(x1, y1), eqZList(x2, y2)))
, and^#(True(), True()) -> c_10()
, and^#(True(), False()) -> c_11()
, and^#(False(), True()) -> c_12()
, and^#(False(), False()) -> c_13()
, f^#(Z()) -> c_6()
, first^#(C(x1, x2)) -> c_8()
, g^#(x) -> c_9() }

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

Strict DPs: { f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(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: { f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(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: f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(x2)) }

Sub-proof:
----------
  The following argument positions are usable:
    Uargs(c_7) = {1, 2}
  
  TcT has computed the following constructor-based matrix
  interpretation satisfying not(EDA).
  
      [C](x1, x2) = [1] x1 + [1] x2 + [4]
                                         
        [f^#](x1) = [2] x1 + [0]         
                                         
    [c_7](x1, x2) = [1] x1 + [1] x2 + [1]
  
  The order satisfies the following ordering constraints:
  
    [f^#(C(x1, x2))] = [2] x1 + [2] x2 + [8]  
                     > [2] x1 + [2] x2 + [1]  
                     = [c_7(f^#(x1), f^#(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: { f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(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.

{ f^#(C(x1, x2)) -> c_7(f^#(x1), f^#(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))