*** 1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mem(x,nil()) -> false()
        mem(x,set(y)) -> =(x,y)
        mem(x,union(y,z)) -> or(mem(x,y),mem(x,z))
        or(x,true()) -> true()
        or(false(),false()) -> false()
        or(true(),y) -> true()
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {mem/2,or/2} / {=/2,false/0,nil/0,set/1,true/0,union/2}
      Obligation:
        Full
        basic terms: {mem,or}/{=,false,nil,set,true,union}
    Applied Processor:
      DependencyPairs {dpKind_ = DT}
    Proof:
      We add the following weak dependency pairs:
      
      Strict DPs
        mem#(x,nil()) -> c_1()
        mem#(x,set(y)) -> c_2(x,y)
        mem#(x,union(y,z)) -> c_3(or#(mem(x,y),mem(x,z)))
        or#(x,true()) -> c_4()
        or#(false(),false()) -> c_5()
        or#(true(),y) -> c_6()
      Weak DPs
        
      
      and mark the set of starting terms.
*** 1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        mem#(x,nil()) -> c_1()
        mem#(x,set(y)) -> c_2(x,y)
        mem#(x,union(y,z)) -> c_3(or#(mem(x,y),mem(x,z)))
        or#(x,true()) -> c_4()
        or#(false(),false()) -> c_5()
        or#(true(),y) -> c_6()
      Strict TRS Rules:
        mem(x,nil()) -> false()
        mem(x,set(y)) -> =(x,y)
        mem(x,union(y,z)) -> or(mem(x,y),mem(x,z))
        or(x,true()) -> true()
        or(false(),false()) -> false()
        or(true(),y) -> true()
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {mem/2,or/2,mem#/2,or#/2} / {=/2,false/0,nil/0,set/1,true/0,union/2,c_1/0,c_2/2,c_3/1,c_4/0,c_5/0,c_6/0}
      Obligation:
        Full
        basic terms: {mem#,or#}/{=,false,nil,set,true,union}
    Applied Processor:
      PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    Proof:
      We estimate the number of application of
        {1,4,5,6}
      by application of
        Pre({1,4,5,6}) = {2,3}.
      Here rules are labelled as follows:
        1: mem#(x,nil()) -> c_1()       
        2: mem#(x,set(y)) -> c_2(x,y)   
        3: mem#(x,union(y,z)) ->        
             c_3(or#(mem(x,y),mem(x,z)))
        4: or#(x,true()) -> c_4()       
        5: or#(false(),false()) -> c_5()
        6: or#(true(),y) -> c_6()       
*** 1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        mem#(x,set(y)) -> c_2(x,y)
        mem#(x,union(y,z)) -> c_3(or#(mem(x,y),mem(x,z)))
      Strict TRS Rules:
        mem(x,nil()) -> false()
        mem(x,set(y)) -> =(x,y)
        mem(x,union(y,z)) -> or(mem(x,y),mem(x,z))
        or(x,true()) -> true()
        or(false(),false()) -> false()
        or(true(),y) -> true()
      Weak DP Rules:
        mem#(x,nil()) -> c_1()
        or#(x,true()) -> c_4()
        or#(false(),false()) -> c_5()
        or#(true(),y) -> c_6()
      Weak TRS Rules:
        
      Signature:
        {mem/2,or/2,mem#/2,or#/2} / {=/2,false/0,nil/0,set/1,true/0,union/2,c_1/0,c_2/2,c_3/1,c_4/0,c_5/0,c_6/0}
      Obligation:
        Full
        basic terms: {mem#,or#}/{=,false,nil,set,true,union}
    Applied Processor:
      PredecessorEstimation {onSelection = all simple predecessor estimation selector}
    Proof:
      We estimate the number of application of
        {2}
      by application of
        Pre({2}) = {1}.
      Here rules are labelled as follows:
        1: mem#(x,set(y)) -> c_2(x,y)   
        2: mem#(x,union(y,z)) ->        
             c_3(or#(mem(x,y),mem(x,z)))
        3: mem#(x,nil()) -> c_1()       
        4: or#(x,true()) -> c_4()       
        5: or#(false(),false()) -> c_5()
        6: or#(true(),y) -> c_6()       
*** 1.1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        mem#(x,set(y)) -> c_2(x,y)
      Strict TRS Rules:
        mem(x,nil()) -> false()
        mem(x,set(y)) -> =(x,y)
        mem(x,union(y,z)) -> or(mem(x,y),mem(x,z))
        or(x,true()) -> true()
        or(false(),false()) -> false()
        or(true(),y) -> true()
      Weak DP Rules:
        mem#(x,nil()) -> c_1()
        mem#(x,union(y,z)) -> c_3(or#(mem(x,y),mem(x,z)))
        or#(x,true()) -> c_4()
        or#(false(),false()) -> c_5()
        or#(true(),y) -> c_6()
      Weak TRS Rules:
        
      Signature:
        {mem/2,or/2,mem#/2,or#/2} / {=/2,false/0,nil/0,set/1,true/0,union/2,c_1/0,c_2/2,c_3/1,c_4/0,c_5/0,c_6/0}
      Obligation:
        Full
        basic terms: {mem#,or#}/{=,false,nil,set,true,union}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 0, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(or) = {1,2},
          uargs(or#) = {1,2},
          uargs(c_3) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
              p(=) = [1] x2 + [0]         
          p(false) = [0]                  
            p(mem) = [1] x2 + [0]         
            p(nil) = [0]                  
             p(or) = [1] x1 + [1] x2 + [0]
            p(set) = [1] x1 + [1]         
           p(true) = [0]                  
          p(union) = [1] x1 + [1] x2 + [0]
           p(mem#) = [1] x2 + [0]         
            p(or#) = [1] x1 + [1] x2 + [0]
            p(c_1) = [0]                  
            p(c_2) = [1] x2 + [0]         
            p(c_3) = [1] x1 + [0]         
            p(c_4) = [0]                  
            p(c_5) = [0]                  
            p(c_6) = [0]                  
        
        Following rules are strictly oriented:
        mem#(x,set(y)) = [1] y + [1]
                       > [1] y + [0]
                       = c_2(x,y)   
        
         mem(x,set(y)) = [1] y + [1]
                       > [1] y + [0]
                       = =(x,y)     
        
        
        Following rules are (at-least) weakly oriented:
               mem#(x,nil()) =  [0]                        
                             >= [0]                        
                             =  c_1()                      
        
          mem#(x,union(y,z)) =  [1] y + [1] z + [0]        
                             >= [1] y + [1] z + [0]        
                             =  c_3(or#(mem(x,y),mem(x,z)))
        
               or#(x,true()) =  [1] x + [0]                
                             >= [0]                        
                             =  c_4()                      
        
        or#(false(),false()) =  [0]                        
                             >= [0]                        
                             =  c_5()                      
        
               or#(true(),y) =  [1] y + [0]                
                             >= [0]                        
                             =  c_6()                      
        
                mem(x,nil()) =  [0]                        
                             >= [0]                        
                             =  false()                    
        
           mem(x,union(y,z)) =  [1] y + [1] z + [0]        
                             >= [1] y + [1] z + [0]        
                             =  or(mem(x,y),mem(x,z))      
        
                or(x,true()) =  [1] x + [0]                
                             >= [0]                        
                             =  true()                     
        
         or(false(),false()) =  [0]                        
                             >= [0]                        
                             =  false()                    
        
                or(true(),y) =  [1] y + [0]                
                             >= [0]                        
                             =  true()                     
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mem(x,nil()) -> false()
        mem(x,union(y,z)) -> or(mem(x,y),mem(x,z))
        or(x,true()) -> true()
        or(false(),false()) -> false()
        or(true(),y) -> true()
      Weak DP Rules:
        mem#(x,nil()) -> c_1()
        mem#(x,set(y)) -> c_2(x,y)
        mem#(x,union(y,z)) -> c_3(or#(mem(x,y),mem(x,z)))
        or#(x,true()) -> c_4()
        or#(false(),false()) -> c_5()
        or#(true(),y) -> c_6()
      Weak TRS Rules:
        mem(x,set(y)) -> =(x,y)
      Signature:
        {mem/2,or/2,mem#/2,or#/2} / {=/2,false/0,nil/0,set/1,true/0,union/2,c_1/0,c_2/2,c_3/1,c_4/0,c_5/0,c_6/0}
      Obligation:
        Full
        basic terms: {mem#,or#}/{=,false,nil,set,true,union}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 0, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(or) = {1,2},
          uargs(or#) = {1,2},
          uargs(c_3) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
              p(=) = [10]                  
          p(false) = [0]                   
            p(mem) = [4] x2 + [10]         
            p(nil) = [0]                   
             p(or) = [1] x1 + [1] x2 + [10]
            p(set) = [0]                   
           p(true) = [0]                   
          p(union) = [1] x1 + [1] x2 + [5] 
           p(mem#) = [4] x2 + [0]          
            p(or#) = [1] x1 + [1] x2 + [0] 
            p(c_1) = [0]                   
            p(c_2) = [0]                   
            p(c_3) = [1] x1 + [0]          
            p(c_4) = [0]                   
            p(c_5) = [0]                   
            p(c_6) = [0]                   
        
        Following rules are strictly oriented:
               mem(x,nil()) = [10]        
                            > [0]         
                            = false()     
        
               or(x,true()) = [1] x + [10]
                            > [0]         
                            = true()      
        
        or(false(),false()) = [10]        
                            > [0]         
                            = false()     
        
               or(true(),y) = [1] y + [10]
                            > [0]         
                            = true()      
        
        
        Following rules are (at-least) weakly oriented:
               mem#(x,nil()) =  [0]                        
                             >= [0]                        
                             =  c_1()                      
        
              mem#(x,set(y)) =  [0]                        
                             >= [0]                        
                             =  c_2(x,y)                   
        
          mem#(x,union(y,z)) =  [4] y + [4] z + [20]       
                             >= [4] y + [4] z + [20]       
                             =  c_3(or#(mem(x,y),mem(x,z)))
        
               or#(x,true()) =  [1] x + [0]                
                             >= [0]                        
                             =  c_4()                      
        
        or#(false(),false()) =  [0]                        
                             >= [0]                        
                             =  c_5()                      
        
               or#(true(),y) =  [1] y + [0]                
                             >= [0]                        
                             =  c_6()                      
        
               mem(x,set(y)) =  [10]                       
                             >= [10]                       
                             =  =(x,y)                     
        
           mem(x,union(y,z)) =  [4] y + [4] z + [30]       
                             >= [4] y + [4] z + [30]       
                             =  or(mem(x,y),mem(x,z))      
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1 Progress [(O(1),O(n^1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        mem(x,union(y,z)) -> or(mem(x,y),mem(x,z))
      Weak DP Rules:
        mem#(x,nil()) -> c_1()
        mem#(x,set(y)) -> c_2(x,y)
        mem#(x,union(y,z)) -> c_3(or#(mem(x,y),mem(x,z)))
        or#(x,true()) -> c_4()
        or#(false(),false()) -> c_5()
        or#(true(),y) -> c_6()
      Weak TRS Rules:
        mem(x,nil()) -> false()
        mem(x,set(y)) -> =(x,y)
        or(x,true()) -> true()
        or(false(),false()) -> false()
        or(true(),y) -> true()
      Signature:
        {mem/2,or/2,mem#/2,or#/2} / {=/2,false/0,nil/0,set/1,true/0,union/2,c_1/0,c_2/2,c_3/1,c_4/0,c_5/0,c_6/0}
      Obligation:
        Full
        basic terms: {mem#,or#}/{=,false,nil,set,true,union}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 0, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    Proof:
      The weightgap principle applies using the following nonconstant growth matrix-interpretation:
        We apply a matrix interpretation of kind constructor based matrix interpretation:
        The following argument positions are considered usable:
          uargs(or) = {1,2},
          uargs(or#) = {1,2},
          uargs(c_3) = {1}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
              p(=) = [1] x2 + [5]         
          p(false) = [1]                  
            p(mem) = [7] x2 + [5]         
            p(nil) = [0]                  
             p(or) = [1] x1 + [1] x2 + [5]
            p(set) = [1] x1 + [0]         
           p(true) = [10]                 
          p(union) = [1] x1 + [1] x2 + [3]
           p(mem#) = [8] x2 + [6]         
            p(or#) = [1] x1 + [1] x2 + [1]
            p(c_1) = [6]                  
            p(c_2) = [8] x2 + [1]         
            p(c_3) = [1] x1 + [1]         
            p(c_4) = [8]                  
            p(c_5) = [3]                  
            p(c_6) = [11]                 
        
        Following rules are strictly oriented:
        mem(x,union(y,z)) = [7] y + [7] z + [26] 
                          > [7] y + [7] z + [15] 
                          = or(mem(x,y),mem(x,z))
        
        
        Following rules are (at-least) weakly oriented:
               mem#(x,nil()) =  [6]                        
                             >= [6]                        
                             =  c_1()                      
        
              mem#(x,set(y)) =  [8] y + [6]                
                             >= [8] y + [1]                
                             =  c_2(x,y)                   
        
          mem#(x,union(y,z)) =  [8] y + [8] z + [30]       
                             >= [7] y + [7] z + [12]       
                             =  c_3(or#(mem(x,y),mem(x,z)))
        
               or#(x,true()) =  [1] x + [11]               
                             >= [8]                        
                             =  c_4()                      
        
        or#(false(),false()) =  [3]                        
                             >= [3]                        
                             =  c_5()                      
        
               or#(true(),y) =  [1] y + [11]               
                             >= [11]                       
                             =  c_6()                      
        
                mem(x,nil()) =  [5]                        
                             >= [1]                        
                             =  false()                    
        
               mem(x,set(y)) =  [7] y + [5]                
                             >= [1] y + [5]                
                             =  =(x,y)                     
        
                or(x,true()) =  [1] x + [15]               
                             >= [10]                       
                             =  true()                     
        
         or(false(),false()) =  [7]                        
                             >= [1]                        
                             =  false()                    
        
                or(true(),y) =  [1] y + [15]               
                             >= [10]                       
                             =  true()                     
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1.1.1.1.1 Progress [(O(1),O(1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        
      Weak DP Rules:
        mem#(x,nil()) -> c_1()
        mem#(x,set(y)) -> c_2(x,y)
        mem#(x,union(y,z)) -> c_3(or#(mem(x,y),mem(x,z)))
        or#(x,true()) -> c_4()
        or#(false(),false()) -> c_5()
        or#(true(),y) -> c_6()
      Weak TRS Rules:
        mem(x,nil()) -> false()
        mem(x,set(y)) -> =(x,y)
        mem(x,union(y,z)) -> or(mem(x,y),mem(x,z))
        or(x,true()) -> true()
        or(false(),false()) -> false()
        or(true(),y) -> true()
      Signature:
        {mem/2,or/2,mem#/2,or#/2} / {=/2,false/0,nil/0,set/1,true/0,union/2,c_1/0,c_2/2,c_3/1,c_4/0,c_5/0,c_6/0}
      Obligation:
        Full
        basic terms: {mem#,or#}/{=,false,nil,set,true,union}
    Applied Processor:
      EmptyProcessor
    Proof:
      The problem is already closed. The intended complexity is O(1).