YES
Time: 0.170607
TRS:
 {                      minus(x, 0()) -> x,
                      minus(s x, s y) -> minus(x, y),
                       quot(0(), s y) -> 0(),
                       quot(s x, s y) -> s quot(minus(x, y), s y),
                        app(nil(), y) -> y,
                    app(add(n, x), y) -> add(n, app(x, y)),
                        reverse nil() -> nil(),
                    reverse add(n, x) -> app(reverse x, add(n, nil())),
                        shuffle nil() -> nil(),
                    shuffle add(n, x) -> add(n, shuffle reverse x),
                    concat(leaf(), y) -> y,
                concat(cons(u, v), y) -> cons(u, concat(v, y)),
               less_leaves(x, leaf()) -> false(),
      less_leaves(leaf(), cons(w, z)) -> true(),
  less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))}
 DP:
  DP:
   {                    minus#(s x, s y) -> minus#(x, y),
                         quot#(s x, s y) -> minus#(x, y),
                         quot#(s x, s y) -> quot#(minus(x, y), s y),
                      app#(add(n, x), y) -> app#(x, y),
                      reverse# add(n, x) -> app#(reverse x, add(n, nil())),
                      reverse# add(n, x) -> reverse# x,
                      shuffle# add(n, x) -> reverse# x,
                      shuffle# add(n, x) -> shuffle# reverse x,
                  concat#(cons(u, v), y) -> concat#(v, y),
    less_leaves#(cons(u, v), cons(w, z)) -> concat#(u, v),
    less_leaves#(cons(u, v), cons(w, z)) -> concat#(w, z),
    less_leaves#(cons(u, v), cons(w, z)) -> less_leaves#(concat(u, v), concat(w, z))}
  TRS:
  {                      minus(x, 0()) -> x,
                       minus(s x, s y) -> minus(x, y),
                        quot(0(), s y) -> 0(),
                        quot(s x, s y) -> s quot(minus(x, y), s y),
                         app(nil(), y) -> y,
                     app(add(n, x), y) -> add(n, app(x, y)),
                         reverse nil() -> nil(),
                     reverse add(n, x) -> app(reverse x, add(n, nil())),
                         shuffle nil() -> nil(),
                     shuffle add(n, x) -> add(n, shuffle reverse x),
                     concat(leaf(), y) -> y,
                 concat(cons(u, v), y) -> cons(u, concat(v, y)),
                less_leaves(x, leaf()) -> false(),
       less_leaves(leaf(), cons(w, z)) -> true(),
   less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))}
  UR:
   {        minus(x, 0()) -> x,
          minus(s x, s y) -> minus(x, y),
            app(nil(), y) -> y,
        app(add(n, x), y) -> add(n, app(x, y)),
            reverse nil() -> nil(),
        reverse add(n, x) -> app(reverse x, add(n, nil())),
        concat(leaf(), y) -> y,
    concat(cons(u, v), y) -> cons(u, concat(v, y)),
                  a(t, s) -> t,
                  a(t, s) -> s}
   EDG:
    {(less_leaves#(cons(u, v), cons(w, z)) -> concat#(w, z), concat#(cons(u, v), y) -> concat#(v, y))
     (less_leaves#(cons(u, v), cons(w, z)) -> less_leaves#(concat(u, v), concat(w, z)), less_leaves#(cons(u, v), cons(w, z)) -> less_leaves#(concat(u, v), concat(w, z)))
     (less_leaves#(cons(u, v), cons(w, z)) -> less_leaves#(concat(u, v), concat(w, z)), less_leaves#(cons(u, v), cons(w, z)) -> concat#(w, z))
     (less_leaves#(cons(u, v), cons(w, z)) -> less_leaves#(concat(u, v), concat(w, z)), less_leaves#(cons(u, v), cons(w, z)) -> concat#(u, v))
     (quot#(s x, s y) -> minus#(x, y), minus#(s x, s y) -> minus#(x, y))
     (concat#(cons(u, v), y) -> concat#(v, y), concat#(cons(u, v), y) -> concat#(v, y))
     (shuffle# add(n, x) -> reverse# x, reverse# add(n, x) -> reverse# x)
     (shuffle# add(n, x) -> reverse# x, reverse# add(n, x) -> app#(reverse x, add(n, nil())))
     (shuffle# add(n, x) -> shuffle# reverse x, shuffle# add(n, x) -> shuffle# reverse x)
     (shuffle# add(n, x) -> shuffle# reverse x, shuffle# add(n, x) -> reverse# x)
     (reverse# add(n, x) -> app#(reverse x, add(n, nil())), app#(add(n, x), y) -> app#(x, y))
     (reverse# add(n, x) -> reverse# x, reverse# add(n, x) -> app#(reverse x, add(n, nil())))
     (reverse# add(n, x) -> reverse# x, reverse# add(n, x) -> reverse# x)
     (app#(add(n, x), y) -> app#(x, y), app#(add(n, x), y) -> app#(x, y))
     (minus#(s x, s y) -> minus#(x, y), minus#(s x, s y) -> minus#(x, y))
     (less_leaves#(cons(u, v), cons(w, z)) -> concat#(u, v), concat#(cons(u, v), y) -> concat#(v, y))
     (quot#(s x, s y) -> quot#(minus(x, y), s y), quot#(s x, s y) -> minus#(x, y))
     (quot#(s x, s y) -> quot#(minus(x, y), s y), quot#(s x, s y) -> quot#(minus(x, y), s y))}
    STATUS:
     arrows: 0.875000
     SCCS (7):
      Scc:
       {shuffle# add(n, x) -> shuffle# reverse x}
      Scc:
       {reverse# add(n, x) -> reverse# x}
      Scc:
       {app#(add(n, x), y) -> app#(x, y)}
      Scc:
       {less_leaves#(cons(u, v), cons(w, z)) -> less_leaves#(concat(u, v), concat(w, z))}
      Scc:
       {concat#(cons(u, v), y) -> concat#(v, y)}
      Scc:
       {quot#(s x, s y) -> quot#(minus(x, y), s y)}
      Scc:
       {minus#(s x, s y) -> minus#(x, y)}
      
      SCC (1):
       Strict:
        {shuffle# add(n, x) -> shuffle# reverse x}
       Weak:
       {                      minus(x, 0()) -> x,
                            minus(s x, s y) -> minus(x, y),
                             quot(0(), s y) -> 0(),
                             quot(s x, s y) -> s quot(minus(x, y), s y),
                              app(nil(), y) -> y,
                          app(add(n, x), y) -> add(n, app(x, y)),
                              reverse nil() -> nil(),
                          reverse add(n, x) -> app(reverse x, add(n, nil())),
                              shuffle nil() -> nil(),
                          shuffle add(n, x) -> add(n, shuffle reverse x),
                          concat(leaf(), y) -> y,
                      concat(cons(u, v), y) -> cons(u, concat(v, y)),
                     less_leaves(x, leaf()) -> false(),
            less_leaves(leaf(), cons(w, z)) -> true(),
        less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))}
       POLY:
        Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true
        Interpretation:
         [minus](x0, x1) = 1,
         
         [quot](x0, x1) = x0 + x1 + 1,
         
         [app](x0, x1) = x0 + x1,
         
         [add](x0, x1) = x0 + 1,
         
         [concat](x0, x1) = x0 + 1,
         
         [cons](x0, x1) = x0 + 1,
         
         [less_leaves](x0, x1) = 0,
         
         [s](x0) = x0 + 1,
         
         [reverse](x0) = x0,
         
         [shuffle](x0) = 0,
         
         [0] = 1,
         
         [nil] = 0,
         
         [leaf] = 1,
         
         [false] = 0,
         
         [true] = 0,
         
         [shuffle#](x0) = x0
        Strict:
         shuffle# add(n, x) -> shuffle# reverse x
         1 + 1x + 0n >= 0 + 1x
        Weak:
         less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))
         0 + 0u + 0v + 0w + 0z >= 0 + 0u + 0v + 0w + 0z
         less_leaves(leaf(), cons(w, z)) -> true()
         0 + 0w + 0z >= 0
         less_leaves(x, leaf()) -> false()
         0 + 0x >= 0
         concat(cons(u, v), y) -> cons(u, concat(v, y))
         2 + 0y + 0u + 1v >= 2 + 0y + 0u + 1v
         concat(leaf(), y) -> y
         2 + 0y >= 1y
         shuffle add(n, x) -> add(n, shuffle reverse x)
         0 + 0x + 0n >= 1 + 0x + 0n
         shuffle nil() -> nil()
         0 >= 0
         reverse add(n, x) -> app(reverse x, add(n, nil()))
         1 + 1x + 0n >= 1 + 1x + 0n
         reverse nil() -> nil()
         0 >= 0
         app(add(n, x), y) -> add(n, app(x, y))
         1 + 1x + 1y + 0n >= 1 + 1x + 1y + 0n
         app(nil(), y) -> y
         0 + 1y >= 1y
         quot(s x, s y) -> s quot(minus(x, y), s y)
         3 + 1x + 1y >= 4 + 0x + 1y
         quot(0(), s y) -> 0()
         3 + 1y >= 1
         minus(s x, s y) -> minus(x, y)
         1 + 0x + 0y >= 1 + 0x + 0y
         minus(x, 0()) -> x
         1 + 0x >= 1x
       Qed
     
     SCC (1):
      Strict:
       {reverse# add(n, x) -> reverse# x}
      Weak:
      {                      minus(x, 0()) -> x,
                           minus(s x, s y) -> minus(x, y),
                            quot(0(), s y) -> 0(),
                            quot(s x, s y) -> s quot(minus(x, y), s y),
                             app(nil(), y) -> y,
                         app(add(n, x), y) -> add(n, app(x, y)),
                             reverse nil() -> nil(),
                         reverse add(n, x) -> app(reverse x, add(n, nil())),
                             shuffle nil() -> nil(),
                         shuffle add(n, x) -> add(n, shuffle reverse x),
                         concat(leaf(), y) -> y,
                     concat(cons(u, v), y) -> cons(u, concat(v, y)),
                    less_leaves(x, leaf()) -> false(),
           less_leaves(leaf(), cons(w, z)) -> true(),
       less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))}
      POLY:
       Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true
       Interpretation:
        [minus](x0, x1) = x0 + 1,
        
        [quot](x0, x1) = x0 + 1,
        
        [app](x0, x1) = x0 + 1,
        
        [add](x0, x1) = x0 + 1,
        
        [concat](x0, x1) = x0 + 1,
        
        [cons](x0, x1) = x0 + 1,
        
        [less_leaves](x0, x1) = x0 + x1 + 1,
        
        [s](x0) = 1,
        
        [reverse](x0) = x0 + 1,
        
        [shuffle](x0) = x0 + 1,
        
        [0] = 1,
        
        [nil] = 1,
        
        [leaf] = 1,
        
        [false] = 0,
        
        [true] = 0,
        
        [reverse#](x0) = x0
       Strict:
        reverse# add(n, x) -> reverse# x
        1 + 1x + 0n >= 0 + 1x
       Weak:
        less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))
        3 + 0u + 1v + 0w + 1z >= 3 + 1u + 0v + 1w + 0z
        less_leaves(leaf(), cons(w, z)) -> true()
        3 + 0w + 1z >= 0
        less_leaves(x, leaf()) -> false()
        2 + 1x >= 0
        concat(cons(u, v), y) -> cons(u, concat(v, y))
        2 + 0y + 0u + 1v >= 2 + 0y + 0u + 1v
        concat(leaf(), y) -> y
        2 + 0y >= 1y
        shuffle add(n, x) -> add(n, shuffle reverse x)
        2 + 1x + 0n >= 3 + 1x + 0n
        shuffle nil() -> nil()
        2 >= 1
        reverse add(n, x) -> app(reverse x, add(n, nil()))
        2 + 1x + 0n >= 2 + 1x + 0n
        reverse nil() -> nil()
        2 >= 1
        app(add(n, x), y) -> add(n, app(x, y))
        2 + 1x + 0y + 0n >= 2 + 1x + 0y + 0n
        app(nil(), y) -> y
        2 + 0y >= 1y
        quot(s x, s y) -> s quot(minus(x, y), s y)
        2 + 0x + 0y >= 1 + 0x + 0y
        quot(0(), s y) -> 0()
        2 + 0y >= 1
        minus(s x, s y) -> minus(x, y)
        2 + 0x + 0y >= 1 + 0x + 1y
        minus(x, 0()) -> x
        2 + 0x >= 1x
      Qed
     
     SCC (1):
      Strict:
       {app#(add(n, x), y) -> app#(x, y)}
      Weak:
      {                      minus(x, 0()) -> x,
                           minus(s x, s y) -> minus(x, y),
                            quot(0(), s y) -> 0(),
                            quot(s x, s y) -> s quot(minus(x, y), s y),
                             app(nil(), y) -> y,
                         app(add(n, x), y) -> add(n, app(x, y)),
                             reverse nil() -> nil(),
                         reverse add(n, x) -> app(reverse x, add(n, nil())),
                             shuffle nil() -> nil(),
                         shuffle add(n, x) -> add(n, shuffle reverse x),
                         concat(leaf(), y) -> y,
                     concat(cons(u, v), y) -> cons(u, concat(v, y)),
                    less_leaves(x, leaf()) -> false(),
           less_leaves(leaf(), cons(w, z)) -> true(),
       less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))}
      POLY:
       Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true
       Interpretation:
        [minus](x0, x1) = x0 + 1,
        
        [quot](x0, x1) = x0 + 1,
        
        [app](x0, x1) = x0 + 1,
        
        [add](x0, x1) = x0 + 1,
        
        [concat](x0, x1) = x0 + 1,
        
        [cons](x0, x1) = x0 + 1,
        
        [less_leaves](x0, x1) = x0 + x1 + 1,
        
        [s](x0) = 1,
        
        [reverse](x0) = x0 + 1,
        
        [shuffle](x0) = x0 + 1,
        
        [0] = 1,
        
        [nil] = 1,
        
        [leaf] = 1,
        
        [false] = 0,
        
        [true] = 0,
        
        [app#](x0, x1) = x0
       Strict:
        app#(add(n, x), y) -> app#(x, y)
        1 + 1x + 0y + 0n >= 0 + 1x + 0y
       Weak:
        less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))
        3 + 0u + 1v + 0w + 1z >= 3 + 1u + 0v + 1w + 0z
        less_leaves(leaf(), cons(w, z)) -> true()
        3 + 0w + 1z >= 0
        less_leaves(x, leaf()) -> false()
        2 + 1x >= 0
        concat(cons(u, v), y) -> cons(u, concat(v, y))
        2 + 0y + 0u + 1v >= 2 + 0y + 0u + 1v
        concat(leaf(), y) -> y
        2 + 0y >= 1y
        shuffle add(n, x) -> add(n, shuffle reverse x)
        2 + 1x + 0n >= 3 + 1x + 0n
        shuffle nil() -> nil()
        2 >= 1
        reverse add(n, x) -> app(reverse x, add(n, nil()))
        2 + 1x + 0n >= 2 + 1x + 0n
        reverse nil() -> nil()
        2 >= 1
        app(add(n, x), y) -> add(n, app(x, y))
        2 + 1x + 0y + 0n >= 2 + 1x + 0y + 0n
        app(nil(), y) -> y
        2 + 0y >= 1y
        quot(s x, s y) -> s quot(minus(x, y), s y)
        2 + 0x + 0y >= 1 + 0x + 0y
        quot(0(), s y) -> 0()
        2 + 0y >= 1
        minus(s x, s y) -> minus(x, y)
        2 + 0x + 0y >= 1 + 0x + 1y
        minus(x, 0()) -> x
        2 + 0x >= 1x
      Qed
    SCC (1):
     Strict:
      {less_leaves#(cons(u, v), cons(w, z)) -> less_leaves#(concat(u, v), concat(w, z))}
     Weak:
     {                      minus(x, 0()) -> x,
                          minus(s x, s y) -> minus(x, y),
                           quot(0(), s y) -> 0(),
                           quot(s x, s y) -> s quot(minus(x, y), s y),
                            app(nil(), y) -> y,
                        app(add(n, x), y) -> add(n, app(x, y)),
                            reverse nil() -> nil(),
                        reverse add(n, x) -> app(reverse x, add(n, nil())),
                            shuffle nil() -> nil(),
                        shuffle add(n, x) -> add(n, shuffle reverse x),
                        concat(leaf(), y) -> y,
                    concat(cons(u, v), y) -> cons(u, concat(v, y)),
                   less_leaves(x, leaf()) -> false(),
          less_leaves(leaf(), cons(w, z)) -> true(),
      less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))}
     POLY:
      Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true
      Interpretation:
       [minus](x0, x1) = x0 + 1,
       
       [quot](x0, x1) = x0 + 1,
       
       [app](x0, x1) = x0 + 1,
       
       [add](x0, x1) = x0 + 1,
       
       [concat](x0, x1) = x0 + x1,
       
       [cons](x0, x1) = x0 + x1 + 1,
       
       [less_leaves](x0, x1) = x0 + 1,
       
       [s](x0) = 0,
       
       [reverse](x0) = x0 + 1,
       
       [shuffle](x0) = x0 + 1,
       
       [0] = 1,
       
       [nil] = 1,
       
       [leaf] = 1,
       
       [false] = 0,
       
       [true] = 0,
       
       [less_leaves#](x0, x1) = x0 + 1
      Strict:
       less_leaves#(cons(u, v), cons(w, z)) -> less_leaves#(concat(u, v), concat(w, z))
       2 + 1u + 1v + 0w + 0z >= 1 + 1u + 1v + 0w + 0z
      Weak:
       less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))
       2 + 0u + 0v + 1w + 1z >= 1 + 0u + 0v + 1w + 1z
       less_leaves(leaf(), cons(w, z)) -> true()
       2 + 1w + 1z >= 0
       less_leaves(x, leaf()) -> false()
       2 + 0x >= 0
       concat(cons(u, v), y) -> cons(u, concat(v, y))
       1 + 1y + 1u + 1v >= 1 + 1y + 1u + 1v
       concat(leaf(), y) -> y
       1 + 1y >= 1y
       shuffle add(n, x) -> add(n, shuffle reverse x)
       2 + 1x + 0n >= 3 + 1x + 0n
       shuffle nil() -> nil()
       2 >= 1
       reverse add(n, x) -> app(reverse x, add(n, nil()))
       2 + 1x + 0n >= 2 + 1x + 0n
       reverse nil() -> nil()
       2 >= 1
       app(add(n, x), y) -> add(n, app(x, y))
       2 + 1x + 0y + 0n >= 2 + 1x + 0y + 0n
       app(nil(), y) -> y
       2 + 0y >= 1y
       quot(s x, s y) -> s quot(minus(x, y), s y)
       1 + 0x + 0y >= 0 + 0x + 0y
       quot(0(), s y) -> 0()
       2 + 0y >= 1
       minus(s x, s y) -> minus(x, y)
       1 + 0x + 0y >= 1 + 0x + 1y
       minus(x, 0()) -> x
       2 + 0x >= 1x
     Qed
    
    
    SCC (1):
     Strict:
      {concat#(cons(u, v), y) -> concat#(v, y)}
     Weak:
     {                      minus(x, 0()) -> x,
                          minus(s x, s y) -> minus(x, y),
                           quot(0(), s y) -> 0(),
                           quot(s x, s y) -> s quot(minus(x, y), s y),
                            app(nil(), y) -> y,
                        app(add(n, x), y) -> add(n, app(x, y)),
                            reverse nil() -> nil(),
                        reverse add(n, x) -> app(reverse x, add(n, nil())),
                            shuffle nil() -> nil(),
                        shuffle add(n, x) -> add(n, shuffle reverse x),
                        concat(leaf(), y) -> y,
                    concat(cons(u, v), y) -> cons(u, concat(v, y)),
                   less_leaves(x, leaf()) -> false(),
          less_leaves(leaf(), cons(w, z)) -> true(),
      less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))}
     POLY:
      Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true
      Interpretation:
       [minus](x0, x1) = x0 + 1,
       
       [quot](x0, x1) = x0 + 1,
       
       [app](x0, x1) = x0 + 1,
       
       [add](x0, x1) = x0 + 1,
       
       [concat](x0, x1) = x0 + 1,
       
       [cons](x0, x1) = x0 + 1,
       
       [less_leaves](x0, x1) = x0 + x1 + 1,
       
       [s](x0) = 1,
       
       [reverse](x0) = x0 + 1,
       
       [shuffle](x0) = x0 + 1,
       
       [0] = 1,
       
       [nil] = 1,
       
       [leaf] = 1,
       
       [false] = 0,
       
       [true] = 0,
       
       [concat#](x0, x1) = x0
      Strict:
       concat#(cons(u, v), y) -> concat#(v, y)
       1 + 0y + 0u + 1v >= 0 + 0y + 1v
      Weak:
       less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))
       3 + 0u + 1v + 0w + 1z >= 3 + 1u + 0v + 1w + 0z
       less_leaves(leaf(), cons(w, z)) -> true()
       3 + 0w + 1z >= 0
       less_leaves(x, leaf()) -> false()
       2 + 1x >= 0
       concat(cons(u, v), y) -> cons(u, concat(v, y))
       2 + 0y + 0u + 1v >= 2 + 0y + 0u + 1v
       concat(leaf(), y) -> y
       2 + 0y >= 1y
       shuffle add(n, x) -> add(n, shuffle reverse x)
       2 + 1x + 0n >= 3 + 1x + 0n
       shuffle nil() -> nil()
       2 >= 1
       reverse add(n, x) -> app(reverse x, add(n, nil()))
       2 + 1x + 0n >= 2 + 1x + 0n
       reverse nil() -> nil()
       2 >= 1
       app(add(n, x), y) -> add(n, app(x, y))
       2 + 1x + 0y + 0n >= 2 + 1x + 0y + 0n
       app(nil(), y) -> y
       2 + 0y >= 1y
       quot(s x, s y) -> s quot(minus(x, y), s y)
       2 + 0x + 0y >= 1 + 0x + 0y
       quot(0(), s y) -> 0()
       2 + 0y >= 1
       minus(s x, s y) -> minus(x, y)
       2 + 0x + 0y >= 1 + 0x + 1y
       minus(x, 0()) -> x
       2 + 0x >= 1x
     Qed
   SCC (1):
    Strict:
     {quot#(s x, s y) -> quot#(minus(x, y), s y)}
    Weak:
    {                      minus(x, 0()) -> x,
                         minus(s x, s y) -> minus(x, y),
                          quot(0(), s y) -> 0(),
                          quot(s x, s y) -> s quot(minus(x, y), s y),
                           app(nil(), y) -> y,
                       app(add(n, x), y) -> add(n, app(x, y)),
                           reverse nil() -> nil(),
                       reverse add(n, x) -> app(reverse x, add(n, nil())),
                           shuffle nil() -> nil(),
                       shuffle add(n, x) -> add(n, shuffle reverse x),
                       concat(leaf(), y) -> y,
                   concat(cons(u, v), y) -> cons(u, concat(v, y)),
                  less_leaves(x, leaf()) -> false(),
         less_leaves(leaf(), cons(w, z)) -> true(),
     less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))}
    POLY:
     Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true
     Interpretation:
      [minus](x0, x1) = x0,
      
      [quot](x0, x1) = x0 + 1,
      
      [app](x0, x1) = x0 + 1,
      
      [add](x0, x1) = x0 + 1,
      
      [concat](x0, x1) = x0 + 1,
      
      [cons](x0, x1) = x0 + 1,
      
      [less_leaves](x0, x1) = x0 + 1,
      
      [s](x0) = x0 + 1,
      
      [reverse](x0) = x0 + 1,
      
      [shuffle](x0) = x0 + 1,
      
      [0] = 0,
      
      [nil] = 1,
      
      [leaf] = 1,
      
      [false] = 0,
      
      [true] = 0,
      
      [quot#](x0, x1) = x0 + 1
     Strict:
      quot#(s x, s y) -> quot#(minus(x, y), s y)
      2 + 1x + 0y >= 1 + 1x + 0y
     Weak:
      less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))
      2 + 0u + 0v + 0w + 1z >= 2 + 0u + 0v + 1w + 0z
      less_leaves(leaf(), cons(w, z)) -> true()
      2 + 0w + 1z >= 0
      less_leaves(x, leaf()) -> false()
      2 + 0x >= 0
      concat(cons(u, v), y) -> cons(u, concat(v, y))
      2 + 0y + 0u + 1v >= 2 + 0y + 0u + 1v
      concat(leaf(), y) -> y
      2 + 0y >= 1y
      shuffle add(n, x) -> add(n, shuffle reverse x)
      2 + 1x + 0n >= 3 + 1x + 0n
      shuffle nil() -> nil()
      2 >= 1
      reverse add(n, x) -> app(reverse x, add(n, nil()))
      2 + 1x + 0n >= 2 + 1x + 0n
      reverse nil() -> nil()
      2 >= 1
      app(add(n, x), y) -> add(n, app(x, y))
      2 + 1x + 0y + 0n >= 2 + 1x + 0y + 0n
      app(nil(), y) -> y
      2 + 0y >= 1y
      quot(s x, s y) -> s quot(minus(x, y), s y)
      2 + 0x + 1y >= 3 + 0x + 1y
      quot(0(), s y) -> 0()
      2 + 1y >= 0
      minus(s x, s y) -> minus(x, y)
      1 + 1x + 0y >= 0 + 1x + 0y
      minus(x, 0()) -> x
      0 + 1x >= 1x
    Qed
   
   SCC (1):
    Strict:
     {minus#(s x, s y) -> minus#(x, y)}
    Weak:
    {                      minus(x, 0()) -> x,
                         minus(s x, s y) -> minus(x, y),
                          quot(0(), s y) -> 0(),
                          quot(s x, s y) -> s quot(minus(x, y), s y),
                           app(nil(), y) -> y,
                       app(add(n, x), y) -> add(n, app(x, y)),
                           reverse nil() -> nil(),
                       reverse add(n, x) -> app(reverse x, add(n, nil())),
                           shuffle nil() -> nil(),
                       shuffle add(n, x) -> add(n, shuffle reverse x),
                       concat(leaf(), y) -> y,
                   concat(cons(u, v), y) -> cons(u, concat(v, y)),
                  less_leaves(x, leaf()) -> false(),
         less_leaves(leaf(), cons(w, z)) -> true(),
     less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))}
    POLY:
     Mode: weak, max_in=1, output_bits=-1, dnum=1, ur=true
     Interpretation:
      [minus](x0, x1) = x0 + 1,
      
      [quot](x0, x1) = x0 + 1,
      
      [app](x0, x1) = x0 + 1,
      
      [add](x0, x1) = x0 + 1,
      
      [concat](x0, x1) = x0 + 1,
      
      [cons](x0, x1) = x0 + 1,
      
      [less_leaves](x0, x1) = 0,
      
      [s](x0) = x0 + 1,
      
      [reverse](x0) = x0 + 1,
      
      [shuffle](x0) = x0 + 1,
      
      [0] = 1,
      
      [nil] = 1,
      
      [leaf] = 1,
      
      [false] = 0,
      
      [true] = 0,
      
      [minus#](x0, x1) = x0
     Strict:
      minus#(s x, s y) -> minus#(x, y)
      1 + 0x + 1y >= 0 + 0x + 1y
     Weak:
      less_leaves(cons(u, v), cons(w, z)) -> less_leaves(concat(u, v), concat(w, z))
      0 + 0u + 0v + 0w + 0z >= 0 + 0u + 0v + 0w + 0z
      less_leaves(leaf(), cons(w, z)) -> true()
      0 + 0w + 0z >= 0
      less_leaves(x, leaf()) -> false()
      0 + 0x >= 0
      concat(cons(u, v), y) -> cons(u, concat(v, y))
      2 + 0y + 0u + 1v >= 2 + 0y + 0u + 1v
      concat(leaf(), y) -> y
      2 + 0y >= 1y
      shuffle add(n, x) -> add(n, shuffle reverse x)
      2 + 1x + 0n >= 3 + 1x + 0n
      shuffle nil() -> nil()
      2 >= 1
      reverse add(n, x) -> app(reverse x, add(n, nil()))
      2 + 1x + 0n >= 2 + 1x + 0n
      reverse nil() -> nil()
      2 >= 1
      app(add(n, x), y) -> add(n, app(x, y))
      2 + 1x + 0y + 0n >= 2 + 1x + 0y + 0n
      app(nil(), y) -> y
      2 + 0y >= 1y
      quot(s x, s y) -> s quot(minus(x, y), s y)
      2 + 0x + 1y >= 3 + 0x + 1y
      quot(0(), s y) -> 0()
      2 + 1y >= 1
      minus(s x, s y) -> minus(x, y)
      2 + 0x + 1y >= 1 + 0x + 1y
      minus(x, 0()) -> x
      2 + 0x >= 1x
    Qed