MAYBE
TRS:
 {                  app(app(app(app(filter2(), true()), fun), x), xs) -> app(app(cons(), x), app(app(filter(), fun), xs)),
                   app(app(app(app(filter2(), false()), fun), x), xs) -> app(app(filter(), fun), xs),
                             app(app(app(copy(), app(s(), x)), y), z) -> app(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)),
                                     app(app(app(copy(), 0()), y), z) -> app(f(), z),
                        app(app(map(), fun), app(app(cons(), x), xs)) -> app(app(cons(), app(fun, x)), app(app(map(), fun), xs)),
                                          app(app(map(), fun), nil()) -> nil(),
                     app(app(filter(), fun), app(app(cons(), x), xs)) -> app(app(app(app(filter2(), app(fun, x)), fun), x), xs),
                                       app(app(filter(), fun), nil()) -> nil(),
  app(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app(app(app(copy(), n()), y), z),
                                 app(f(), app(app(cons(), nil()), y)) -> y}
 DP:
  Strict:
   {                  app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(cons(), x), app(app(filter(), fun), xs)),
                      app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs),
                      app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(cons(), x),
                      app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(filter(), fun),
                     app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs),
                     app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(filter(), fun),
                               app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)),
                               app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(cons(), app(f(), y)), z),
                               app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(copy(), x), y),
                               app#(app(app(copy(), app(s(), x)), y), z) -> app#(f(), y),
                               app#(app(app(copy(), app(s(), x)), y), z) -> app#(cons(), app(f(), y)),
                               app#(app(app(copy(), app(s(), x)), y), z) -> app#(copy(), x),
                                       app#(app(app(copy(), 0()), y), z) -> app#(f(), z),
                          app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x),
                          app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(cons(), app(fun, x)), app(app(map(), fun), xs)),
                          app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs),
                          app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(cons(), app(fun, x)),
                       app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x),
                       app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs),
                       app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(filter2(), app(fun, x)), fun), x),
                       app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(filter2(), app(fun, x)), fun),
                       app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(filter2(), app(fun, x)),
    app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(app(copy(), n()), y), z),
    app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(copy(), n()), y),
    app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(copy(), n())}
  Weak:
  {                  app(app(app(app(filter2(), true()), fun), x), xs) -> app(app(cons(), x), app(app(filter(), fun), xs)),
                    app(app(app(app(filter2(), false()), fun), x), xs) -> app(app(filter(), fun), xs),
                              app(app(app(copy(), app(s(), x)), y), z) -> app(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)),
                                      app(app(app(copy(), 0()), y), z) -> app(f(), z),
                         app(app(map(), fun), app(app(cons(), x), xs)) -> app(app(cons(), app(fun, x)), app(app(map(), fun), xs)),
                                           app(app(map(), fun), nil()) -> nil(),
                      app(app(filter(), fun), app(app(cons(), x), xs)) -> app(app(app(app(filter2(), app(fun, x)), fun), x), xs),
                                        app(app(filter(), fun), nil()) -> nil(),
   app(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app(app(app(copy(), n()), y), z),
                                  app(f(), app(app(cons(), nil()), y)) -> y}
  EDG:
   {
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(copy(), n()))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(copy(), n()), y))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(app(copy(), n()), y), z))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(filter2(), app(fun, x)))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(filter2(), app(fun, x)), fun))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(filter2(), app(fun, x)), fun), x))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(cons(), app(fun, x)))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(cons(), app(fun, x)), app(app(map(), fun), xs)))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), 0()), y), z) -> app#(f(), z))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(copy(), x))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(cons(), app(f(), y)))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(f(), y))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(copy(), x), y))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(cons(), app(f(), y)), z))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(filter(), fun))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(filter(), fun))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(cons(), x))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(cons(), x), app(app(filter(), fun), xs)))
    (app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(filter2(), app(fun, x)))
    (app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(filter2(), app(fun, x)), fun))
    (app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(filter2(), app(fun, x)), fun), x))
    (app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs))
    (app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(cons(), app(fun, x)))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(cons(), app(fun, x)), app(app(map(), fun), xs)))
    (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(cons(), x), app(app(filter(), fun), xs)))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(cons(), x))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(filter(), fun))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs), app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs), app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(filter(), fun))
    (app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x))
    (app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs))
    (app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(filter2(), app(fun, x)), fun), x))
    (app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(filter2(), app(fun, x)), fun))
    (app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(filter2(), app(fun, x)))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(cons(), x), app(app(filter(), fun), xs)))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(cons(), x))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(filter(), fun))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(filter(), fun))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(cons(), app(f(), y)), z))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(copy(), x), y))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(f(), y))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(cons(), app(f(), y)))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), app(s(), x)), y), z) -> app#(copy(), x))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(copy(), 0()), y), z) -> app#(f(), z))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(cons(), app(fun, x)), app(app(map(), fun), xs)))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(cons(), app(fun, x)))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(filter2(), app(fun, x)), fun), x))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(filter2(), app(fun, x)), fun))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(filter2(), app(fun, x)))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(app(copy(), n()), y), z))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(copy(), n()), y))
    (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(copy(), n()))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)), app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)), app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(cons(), app(f(), y)), z))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)), app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(copy(), x), y))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)), app#(app(app(copy(), app(s(), x)), y), z) -> app#(f(), y))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)), app#(app(app(copy(), app(s(), x)), y), z) -> app#(cons(), app(f(), y)))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)), app#(app(app(copy(), app(s(), x)), y), z) -> app#(copy(), x))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)), app#(app(app(copy(), 0()), y), z) -> app#(f(), z))
    (app#(app(app(copy(), 0()), y), z) -> app#(f(), z), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(app(copy(), n()), y), z))
    (app#(app(app(copy(), 0()), y), z) -> app#(f(), z), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(copy(), n()), y))
    (app#(app(app(copy(), 0()), y), z) -> app#(f(), z), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(copy(), n()))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(f(), y), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(app(copy(), n()), y), z))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(f(), y), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(app(copy(), n()), y))
    (app#(app(app(copy(), app(s(), x)), y), z) -> app#(f(), y), app#(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app#(copy(), n()))
   }
   SCCS:
    Scc:
     {app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z))}
    Scc:
     { app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs),
      app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs),
           app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x),
           app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs),
        app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x),
        app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs)}
    SCC:
     Strict:
      {app#(app(app(copy(), app(s(), x)), y), z) -> app#(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z))}
     Weak:
     {                  app(app(app(app(filter2(), true()), fun), x), xs) -> app(app(cons(), x), app(app(filter(), fun), xs)),
                       app(app(app(app(filter2(), false()), fun), x), xs) -> app(app(filter(), fun), xs),
                                 app(app(app(copy(), app(s(), x)), y), z) -> app(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)),
                                         app(app(app(copy(), 0()), y), z) -> app(f(), z),
                            app(app(map(), fun), app(app(cons(), x), xs)) -> app(app(cons(), app(fun, x)), app(app(map(), fun), xs)),
                                              app(app(map(), fun), nil()) -> nil(),
                         app(app(filter(), fun), app(app(cons(), x), xs)) -> app(app(app(app(filter2(), app(fun, x)), fun), x), xs),
                                           app(app(filter(), fun), nil()) -> nil(),
      app(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app(app(app(copy(), n()), y), z),
                                     app(f(), app(app(cons(), nil()), y)) -> y}
     Fail
    SCC:
     Strict:
      { app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs),
       app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs),
            app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x),
            app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs),
         app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(fun, x),
         app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs)}
     Weak:
     {                  app(app(app(app(filter2(), true()), fun), x), xs) -> app(app(cons(), x), app(app(filter(), fun), xs)),
                       app(app(app(app(filter2(), false()), fun), x), xs) -> app(app(filter(), fun), xs),
                                 app(app(app(copy(), app(s(), x)), y), z) -> app(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)),
                                         app(app(app(copy(), 0()), y), z) -> app(f(), z),
                            app(app(map(), fun), app(app(cons(), x), xs)) -> app(app(cons(), app(fun, x)), app(app(map(), fun), xs)),
                                              app(app(map(), fun), nil()) -> nil(),
                         app(app(filter(), fun), app(app(cons(), x), xs)) -> app(app(app(app(filter2(), app(fun, x)), fun), x), xs),
                                           app(app(filter(), fun), nil()) -> nil(),
      app(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app(app(app(copy(), n()), y), z),
                                     app(f(), app(app(cons(), nil()), y)) -> y}
     SPSC:
      Simple Projection:
       pi(app#) = 1
      Strict:
       { app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs),
        app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs),
             app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x),
             app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs),
          app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs)}
      EDG:
       {(app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs))
        (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs))
        (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x))
        (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs))
        (app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs), app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs))
        (app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs))
        (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs))
        (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs))
        (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x))
        (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs))
        (app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x), app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs))}
       SCCS:
        Scc:
         {app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x),
          app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs)}
        Scc:
         { app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs),
          app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs),
            app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs)}
        SCC:
         Strict:
          {app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(fun, x),
           app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs)}
         Weak:
         {                  app(app(app(app(filter2(), true()), fun), x), xs) -> app(app(cons(), x), app(app(filter(), fun), xs)),
                           app(app(app(app(filter2(), false()), fun), x), xs) -> app(app(filter(), fun), xs),
                                     app(app(app(copy(), app(s(), x)), y), z) -> app(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)),
                                             app(app(app(copy(), 0()), y), z) -> app(f(), z),
                                app(app(map(), fun), app(app(cons(), x), xs)) -> app(app(cons(), app(fun, x)), app(app(map(), fun), xs)),
                                                  app(app(map(), fun), nil()) -> nil(),
                             app(app(filter(), fun), app(app(cons(), x), xs)) -> app(app(app(app(filter2(), app(fun, x)), fun), x), xs),
                                               app(app(filter(), fun), nil()) -> nil(),
          app(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app(app(app(copy(), n()), y), z),
                                         app(f(), app(app(cons(), nil()), y)) -> y}
         SPSC:
          Simple Projection:
           pi(app#) = 0
          Strict:
           {app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs)}
          EDG:
           {(app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs), app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs))}
           SCCS:
            Scc:
             {app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs)}
            SCC:
             Strict:
              {app#(app(map(), fun), app(app(cons(), x), xs)) -> app#(app(map(), fun), xs)}
             Weak:
             {                  app(app(app(app(filter2(), true()), fun), x), xs) -> app(app(cons(), x), app(app(filter(), fun), xs)),
                               app(app(app(app(filter2(), false()), fun), x), xs) -> app(app(filter(), fun), xs),
                                         app(app(app(copy(), app(s(), x)), y), z) -> app(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)),
                                                 app(app(app(copy(), 0()), y), z) -> app(f(), z),
                                    app(app(map(), fun), app(app(cons(), x), xs)) -> app(app(cons(), app(fun, x)), app(app(map(), fun), xs)),
                                                      app(app(map(), fun), nil()) -> nil(),
                                 app(app(filter(), fun), app(app(cons(), x), xs)) -> app(app(app(app(filter2(), app(fun, x)), fun), x), xs),
                                                   app(app(filter(), fun), nil()) -> nil(),
              app(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app(app(app(copy(), n()), y), z),
                                             app(f(), app(app(cons(), nil()), y)) -> y}
             SPSC:
              Simple Projection:
               pi(app#) = 1
              Strict:
               {}
              Qed
        SCC:
         Strict:
          { app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs),
           app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs),
             app#(app(filter(), fun), app(app(cons(), x), xs)) -> app#(app(app(app(filter2(), app(fun, x)), fun), x), xs)}
         Weak:
         {                  app(app(app(app(filter2(), true()), fun), x), xs) -> app(app(cons(), x), app(app(filter(), fun), xs)),
                           app(app(app(app(filter2(), false()), fun), x), xs) -> app(app(filter(), fun), xs),
                                     app(app(app(copy(), app(s(), x)), y), z) -> app(app(app(copy(), x), y), app(app(cons(), app(f(), y)), z)),
                                             app(app(app(copy(), 0()), y), z) -> app(f(), z),
                                app(app(map(), fun), app(app(cons(), x), xs)) -> app(app(cons(), app(fun, x)), app(app(map(), fun), xs)),
                                                  app(app(map(), fun), nil()) -> nil(),
                             app(app(filter(), fun), app(app(cons(), x), xs)) -> app(app(app(app(filter2(), app(fun, x)), fun), x), xs),
                                               app(app(filter(), fun), nil()) -> nil(),
          app(f(), app(app(cons(), app(f(), app(app(cons(), nil()), y))), z)) -> app(app(app(copy(), n()), y), z),
                                         app(f(), app(app(cons(), nil()), y)) -> y}
         SPSC:
          Simple Projection:
           pi(app#) = 1
          Strict:
           { app#(app(app(app(filter2(), true()), fun), x), xs) -> app#(app(filter(), fun), xs),
            app#(app(app(app(filter2(), false()), fun), x), xs) -> app#(app(filter(), fun), xs)}
          EDG:
           {}
           SCCS:
            
            Qed