*** 1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        fac(0()) -> s(0())
        fac(s(x)) -> times(s(x),fac(p(s(x))))
        p(s(x)) -> x
      Weak DP Rules:
        
      Weak TRS Rules:
        
      Signature:
        {fac/1,p/1} / {0/0,s/1,times/2}
      Obligation:
        Full
        basic terms: {fac,p}/{0,s,times}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, 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(fac) = {1},
          uargs(times) = {2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
              p(0) = [0]         
            p(fac) = [1] x1 + [0]
              p(p) = [1] x1 + [3]
              p(s) = [1] x1 + [0]
          p(times) = [1] x2 + [0]
        
        Following rules are strictly oriented:
        p(s(x)) = [1] x + [3]
                > [1] x + [0]
                = x          
        
        
        Following rules are (at-least) weakly oriented:
         fac(0()) =  [0]                     
                  >= [0]                     
                  =  s(0())                  
        
        fac(s(x)) =  [1] x + [0]             
                  >= [1] x + [3]             
                  =  times(s(x),fac(p(s(x))))
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        fac(0()) -> s(0())
        fac(s(x)) -> times(s(x),fac(p(s(x))))
      Weak DP Rules:
        
      Weak TRS Rules:
        p(s(x)) -> x
      Signature:
        {fac/1,p/1} / {0/0,s/1,times/2}
      Obligation:
        Full
        basic terms: {fac,p}/{0,s,times}
    Applied Processor:
      WeightGap {wgDimension = 1, wgDegree = 1, 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(fac) = {1},
          uargs(times) = {2}
        
        Following symbols are considered usable:
          {}
        TcT has computed the following interpretation:
              p(0) = [0]          
            p(fac) = [1] x1 + [2] 
              p(p) = [1] x1 + [0] 
              p(s) = [1] x1 + [0] 
          p(times) = [1] x2 + [13]
        
        Following rules are strictly oriented:
        fac(0()) = [2]   
                 > [0]   
                 = s(0())
        
        
        Following rules are (at-least) weakly oriented:
        fac(s(x)) =  [1] x + [2]             
                  >= [1] x + [15]            
                  =  times(s(x),fac(p(s(x))))
        
          p(s(x)) =  [1] x + [0]             
                  >= [1] x + [0]             
                  =  x                       
        
      Further, it can be verified that all rules not oriented are covered by the weightgap condition.
*** 1.1.1 Progress [(O(1),O(n^2))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        fac(s(x)) -> times(s(x),fac(p(s(x))))
      Weak DP Rules:
        
      Weak TRS Rules:
        fac(0()) -> s(0())
        p(s(x)) -> x
      Signature:
        {fac/1,p/1} / {0/0,s/1,times/2}
      Obligation:
        Full
        basic terms: {fac,p}/{0,s,times}
    Applied Processor:
      NaturalMI {miDimension = 4, miDegree = 3, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules, greedy = NoGreedy}
    Proof:
      We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 3 non-zero interpretation-entries in the diagonal of the component-wise maxima):
      The following argument positions are considered usable:
        uargs(fac) = {1},
        uargs(times) = {2}
      
      Following symbols are considered usable:
        {}
      TcT has computed the following interpretation:
            p(0) = [0]               
                   [0]               
                   [0]               
                   [0]               
          p(fac) = [1 0 1 0]      [1]
                   [0 0 0 1] x1 + [1]
                   [0 0 0 1]      [1]
                   [1 1 1 0]      [1]
            p(p) = [1 0 0 0]      [0]
                   [1 0 0 1] x1 + [1]
                   [0 1 0 0]      [0]
                   [1 1 0 1]      [1]
            p(s) = [1 1 0 1]      [0]
                   [0 0 1 1] x1 + [0]
                   [0 0 1 1]      [1]
                   [0 0 0 0]      [1]
        p(times) = [1 0 0 0]      [0]
                   [0 0 0 0] x2 + [0]
                   [0 0 0 0]      [1]
                   [0 0 0 0]      [0]
      
      Following rules are strictly oriented:
      fac(s(x)) = [1 1 1 2]     [2]       
                  [0 0 0 0] x + [2]       
                  [0 0 0 0]     [2]       
                  [1 1 2 3]     [2]       
                > [1 1 1 2]     [1]       
                  [0 0 0 0] x + [0]       
                  [0 0 0 0]     [1]       
                  [0 0 0 0]     [0]       
                = times(s(x),fac(p(s(x))))
      
      
      Following rules are (at-least) weakly oriented:
      fac(0()) =  [1]              
                  [1]              
                  [1]              
                  [1]              
               >= [0]              
                  [0]              
                  [1]              
                  [1]              
               =  s(0())           
      
       p(s(x)) =  [1 1 0 1]     [0]
                  [1 1 0 1] x + [2]
                  [0 0 1 1]     [0]
                  [1 1 1 2]     [2]
               >= [1 0 0 0]     [0]
                  [0 1 0 0] x + [0]
                  [0 0 1 0]     [0]
                  [0 0 0 1]     [0]
               =  x                
      
*** 1.1.1.1 Progress [(O(1),O(1))]  ***
    Considered Problem:
      Strict DP Rules:
        
      Strict TRS Rules:
        
      Weak DP Rules:
        
      Weak TRS Rules:
        fac(0()) -> s(0())
        fac(s(x)) -> times(s(x),fac(p(s(x))))
        p(s(x)) -> x
      Signature:
        {fac/1,p/1} / {0/0,s/1,times/2}
      Obligation:
        Full
        basic terms: {fac,p}/{0,s,times}
    Applied Processor:
      EmptyProcessor
    Proof:
      The problem is already closed. The intended complexity is O(1).