YES(O(1),O(n^1))

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

Strict Trs:
  { or(x, true()) -> true()
  , or(true(), y) -> true()
  , or(false(), false()) -> false()
  , mem(x, nil()) -> false()
  , mem(x, set(y)) -> =(x, y)
  , mem(x, union(y, z)) -> or(mem(x, y), mem(x, z)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(O(1),O(n^1))

We add following weak dependency pairs:

Strict DPs:
  { or^#(x, true()) -> c_1()
  , or^#(true(), y) -> c_2()
  , or^#(false(), false()) -> c_3()
  , mem^#(x, nil()) -> c_4()
  , mem^#(x, set(y)) -> c_5()
  , mem^#(x, union(y, z)) -> c_6(or^#(mem(x, y), mem(x, z))) }

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:
  { or^#(x, true()) -> c_1()
  , or^#(true(), y) -> c_2()
  , or^#(false(), false()) -> c_3()
  , mem^#(x, nil()) -> c_4()
  , mem^#(x, set(y)) -> c_5()
  , mem^#(x, union(y, z)) -> c_6(or^#(mem(x, y), mem(x, z))) }
Strict Trs:
  { or(x, true()) -> true()
  , or(true(), y) -> true()
  , or(false(), false()) -> false()
  , mem(x, nil()) -> false()
  , mem(x, set(y)) -> =(x, y)
  , mem(x, union(y, z)) -> or(mem(x, y), mem(x, z)) }
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(or) = {1, 2}, Uargs(or^#) = {1, 2}, Uargs(c_6) = {1}

TcT has computed following constructor-restricted matrix
interpretation.

     [or](x1, x2) = [1] x1 + [1] x2 + [2]
                                         
           [true] = [2]                  
                                         
          [false] = [1]                  
                                         
    [mem](x1, x2) = [2] x2 + [0]         
                                         
            [nil] = [2]                  
                                         
        [set](x1) = [1] x1 + [2]         
                                         
      [=](x1, x2) = [1] x2 + [1]         
                                         
  [union](x1, x2) = [1] x1 + [1] x2 + [2]
                                         
   [or^#](x1, x2) = [1] x1 + [1] x2 + [2]
                                         
            [c_1] = [1]                  
                                         
            [c_2] = [1]                  
                                         
            [c_3] = [1]                  
                                         
  [mem^#](x1, x2) = [2] x1 + [2] x2 + [2]
                                         
            [c_4] = [2]                  
                                         
            [c_5] = [1]                  
                                         
        [c_6](x1) = [1] x1 + [2]         

This order satisfies following ordering constraints:

         [or(x, true())] = [1] x + [4]               
                         > [2]                       
                         = [true()]                  
                                                     
         [or(true(), y)] = [1] y + [4]               
                         > [2]                       
                         = [true()]                  
                                                     
  [or(false(), false())] = [4]                       
                         > [1]                       
                         = [false()]                 
                                                     
         [mem(x, nil())] = [4]                       
                         > [1]                       
                         = [false()]                 
                                                     
        [mem(x, set(y))] = [2] y + [4]               
                         > [1] y + [1]               
                         = [=(x, y)]                 
                                                     
   [mem(x, union(y, z))] = [2] y + [2] z + [4]       
                         > [2] y + [2] z + [2]       
                         = [or(mem(x, y), mem(x, z))]
                                                     

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)).

Weak DPs:
  { or^#(x, true()) -> c_1()
  , or^#(true(), y) -> c_2()
  , or^#(false(), false()) -> c_3()
  , mem^#(x, nil()) -> c_4()
  , mem^#(x, set(y)) -> c_5()
  , mem^#(x, union(y, z)) -> c_6(or^#(mem(x, y), mem(x, z))) }
Weak Trs:
  { or(x, true()) -> true()
  , or(true(), y) -> true()
  , or(false(), false()) -> false()
  , mem(x, nil()) -> false()
  , mem(x, set(y)) -> =(x, y)
  , mem(x, union(y, z)) -> or(mem(x, y), mem(x, z)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(?,O(1))

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

{ or^#(x, true()) -> c_1()
, or^#(true(), y) -> c_2()
, or^#(false(), false()) -> c_3()
, mem^#(x, nil()) -> c_4()
, mem^#(x, set(y)) -> c_5()
, mem^#(x, union(y, z)) -> c_6(or^#(mem(x, y), mem(x, z))) }

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

Weak Trs:
  { or(x, true()) -> true()
  , or(true(), y) -> true()
  , or(false(), false()) -> false()
  , mem(x, nil()) -> false()
  , mem(x, set(y)) -> =(x, y)
  , mem(x, union(y, z)) -> or(mem(x, y), mem(x, z)) }
Obligation:
  innermost runtime complexity
Answer:
  YES(?,O(1))

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

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

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

The input was oriented with the instance of 'Small Polynomial Path
Order (PS)' as induced by the safe mapping


and precedence

 empty .

Following symbols are considered recursive:

 {}

The recursion depth is 0.

Further, following argument filtering is employed:

 empty

Usable defined function symbols are a subset of:

 {}

For your convenience, here are the satisfied ordering constraints:


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