YES

Problem:
 app(app(minus(),x),0()) -> x
 app(app(minus(),app(s(),x)),app(s(),y)) -> app(app(minus(),x),y)
 app(f(),0()) -> app(s(),0())
 app(f(),app(s(),x)) -> app(app(minus(),app(s(),x)),app(g(),app(f(),x)))
 app(g(),0()) -> 0()
 app(g(),app(s(),x)) -> app(app(minus(),app(s(),x)),app(f(),app(g(),x)))
 app(app(map(),fun),nil()) -> nil()
 app(app(map(),fun),app(app(cons(),x),xs)) -> app(app(cons(),app(fun,x)),app(app(map(),fun),xs))
 app(app(filter(),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(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)

Proof:
 Uncurry Processor:
  minus2(x,0()) -> x
  minus2(s1(x),s1(y)) -> minus2(x,y)
  f1(0()) -> s1(0())
  f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
  g1(0()) -> 0()
  g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
  map2(fun,nil()) -> nil()
  map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
  filter2(fun,nil()) -> nil()
  filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
  filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
  filter24(false(),fun,x,xs) -> filter2(fun,xs)
  app(minus1(x6),x7) -> minus2(x6,x7)
  app(minus(),x7) -> minus1(x7)
  app(s(),x7) -> s1(x7)
  app(f(),x7) -> f1(x7)
  app(g(),x7) -> g1(x7)
  app(map1(x6),x7) -> map2(x6,x7)
  app(map(),x7) -> map1(x7)
  app(cons1(x6),x7) -> cons2(x6,x7)
  app(cons(),x7) -> cons1(x7)
  app(filter1(x6),x7) -> filter2(x6,x7)
  app(filter(),x7) -> filter1(x7)
  app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
  app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
  app(filter21(x6),x7) -> filter22(x6,x7)
  app(filter2(),x7) -> filter21(x7)
  DP Processor:
   DPs:
    minus{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y)
    f{1,#}(s1(x)) -> f{1,#}(x)
    f{1,#}(s1(x)) -> g{1,#}(f1(x))
    f{1,#}(s1(x)) -> minus{2,#}(s1(x),g1(f1(x)))
    g{1,#}(s1(x)) -> g{1,#}(x)
    g{1,#}(s1(x)) -> f{1,#}(g1(x))
    g{1,#}(s1(x)) -> minus{2,#}(s1(x),f1(g1(x)))
    map{2,#}(fun,cons2(x,xs)) -> map{2,#}(fun,xs)
    map{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
    filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
    filter{2,#}(fun,cons2(x,xs)) -> filter2{4,#}(app(fun,x),fun,x,xs)
    filter2{4,#}(true(),fun,x,xs) -> filter{2,#}(fun,xs)
    filter2{4,#}(false(),fun,x,xs) -> filter{2,#}(fun,xs)
    app#(minus1(x6),x7) -> minus{2,#}(x6,x7)
    app#(f(),x7) -> f{1,#}(x7)
    app#(g(),x7) -> g{1,#}(x7)
    app#(map1(x6),x7) -> map{2,#}(x6,x7)
    app#(filter1(x6),x7) -> filter{2,#}(x6,x7)
    app#(filter23(x6,x5,x4),x7) -> filter2{4,#}(x6,x5,x4,x7)
   TRS:
    minus2(x,0()) -> x
    minus2(s1(x),s1(y)) -> minus2(x,y)
    f1(0()) -> s1(0())
    f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
    g1(0()) -> 0()
    g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
    map2(fun,nil()) -> nil()
    map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
    filter2(fun,nil()) -> nil()
    filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
    filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
    filter24(false(),fun,x,xs) -> filter2(fun,xs)
    app(minus1(x6),x7) -> minus2(x6,x7)
    app(minus(),x7) -> minus1(x7)
    app(s(),x7) -> s1(x7)
    app(f(),x7) -> f1(x7)
    app(g(),x7) -> g1(x7)
    app(map1(x6),x7) -> map2(x6,x7)
    app(map(),x7) -> map1(x7)
    app(cons1(x6),x7) -> cons2(x6,x7)
    app(cons(),x7) -> cons1(x7)
    app(filter1(x6),x7) -> filter2(x6,x7)
    app(filter(),x7) -> filter1(x7)
    app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
    app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
    app(filter21(x6),x7) -> filter22(x6,x7)
    app(filter2(),x7) -> filter21(x7)
   TDG Processor:
    DPs:
     minus{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y)
     f{1,#}(s1(x)) -> f{1,#}(x)
     f{1,#}(s1(x)) -> g{1,#}(f1(x))
     f{1,#}(s1(x)) -> minus{2,#}(s1(x),g1(f1(x)))
     g{1,#}(s1(x)) -> g{1,#}(x)
     g{1,#}(s1(x)) -> f{1,#}(g1(x))
     g{1,#}(s1(x)) -> minus{2,#}(s1(x),f1(g1(x)))
     map{2,#}(fun,cons2(x,xs)) -> map{2,#}(fun,xs)
     map{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
     filter{2,#}(fun,cons2(x,xs)) -> filter2{4,#}(app(fun,x),fun,x,xs)
     filter2{4,#}(true(),fun,x,xs) -> filter{2,#}(fun,xs)
     filter2{4,#}(false(),fun,x,xs) -> filter{2,#}(fun,xs)
     app#(minus1(x6),x7) -> minus{2,#}(x6,x7)
     app#(f(),x7) -> f{1,#}(x7)
     app#(g(),x7) -> g{1,#}(x7)
     app#(map1(x6),x7) -> map{2,#}(x6,x7)
     app#(filter1(x6),x7) -> filter{2,#}(x6,x7)
     app#(filter23(x6,x5,x4),x7) -> filter2{4,#}(x6,x5,x4,x7)
    TRS:
     minus2(x,0()) -> x
     minus2(s1(x),s1(y)) -> minus2(x,y)
     f1(0()) -> s1(0())
     f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
     g1(0()) -> 0()
     g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
     map2(fun,nil()) -> nil()
     map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
     filter2(fun,nil()) -> nil()
     filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
     filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
     filter24(false(),fun,x,xs) -> filter2(fun,xs)
     app(minus1(x6),x7) -> minus2(x6,x7)
     app(minus(),x7) -> minus1(x7)
     app(s(),x7) -> s1(x7)
     app(f(),x7) -> f1(x7)
     app(g(),x7) -> g1(x7)
     app(map1(x6),x7) -> map2(x6,x7)
     app(map(),x7) -> map1(x7)
     app(cons1(x6),x7) -> cons2(x6,x7)
     app(cons(),x7) -> cons1(x7)
     app(filter1(x6),x7) -> filter2(x6,x7)
     app(filter(),x7) -> filter1(x7)
     app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
     app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
     app(filter21(x6),x7) -> filter22(x6,x7)
     app(filter2(),x7) -> filter21(x7)
    graph:
     filter2{4,#}(false(),fun,x,xs) -> filter{2,#}(fun,xs) ->
     filter{2,#}(fun,cons2(x,xs)) -> filter2{4,#}(app(fun,x),fun,x,xs)
     filter2{4,#}(false(),fun,x,xs) -> filter{2,#}(fun,xs) ->
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
     filter2{4,#}(true(),fun,x,xs) -> filter{2,#}(fun,xs) ->
     filter{2,#}(fun,cons2(x,xs)) -> filter2{4,#}(app(fun,x),fun,x,xs)
     filter2{4,#}(true(),fun,x,xs) -> filter{2,#}(fun,xs) ->
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
     filter{2,#}(fun,cons2(x,xs)) -> filter2{4,#}(app(fun,x),fun,x,xs) ->
     filter2{4,#}(false(),fun,x,xs) -> filter{2,#}(fun,xs)
     filter{2,#}(fun,cons2(x,xs)) -> filter2{4,#}(app(fun,x),fun,x,xs) ->
     filter2{4,#}(true(),fun,x,xs) -> filter{2,#}(fun,xs)
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(filter23(x6,x5,x4),x7) -> filter2{4,#}(x6,x5,x4,x7)
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(filter1(x6),x7) -> filter{2,#}(x6,x7)
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(map1(x6),x7) -> map{2,#}(x6,x7)
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(g(),x7) -> g{1,#}(x7)
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(f(),x7) -> f{1,#}(x7)
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(minus1(x6),x7) -> minus{2,#}(x6,x7)
     app#(filter23(x6,x5,x4),x7) -> filter2{4,#}(x6,x5,x4,x7) ->
     filter2{4,#}(false(),fun,x,xs) -> filter{2,#}(fun,xs)
     app#(filter23(x6,x5,x4),x7) -> filter2{4,#}(x6,x5,x4,x7) ->
     filter2{4,#}(true(),fun,x,xs) -> filter{2,#}(fun,xs)
     app#(filter1(x6),x7) -> filter{2,#}(x6,x7) ->
     filter{2,#}(fun,cons2(x,xs)) -> filter2{4,#}(app(fun,x),fun,x,xs)
     app#(filter1(x6),x7) -> filter{2,#}(x6,x7) ->
     filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
     app#(map1(x6),x7) -> map{2,#}(x6,x7) ->
     map{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
     app#(map1(x6),x7) -> map{2,#}(x6,x7) ->
     map{2,#}(fun,cons2(x,xs)) -> map{2,#}(fun,xs)
     app#(minus1(x6),x7) -> minus{2,#}(x6,x7) ->
     minus{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y)
     app#(g(),x7) -> g{1,#}(x7) ->
     g{1,#}(s1(x)) -> minus{2,#}(s1(x),f1(g1(x)))
     app#(g(),x7) -> g{1,#}(x7) -> g{1,#}(s1(x)) -> f{1,#}(g1(x))
     app#(g(),x7) -> g{1,#}(x7) -> g{1,#}(s1(x)) -> g{1,#}(x)
     app#(f(),x7) -> f{1,#}(x7) ->
     f{1,#}(s1(x)) -> minus{2,#}(s1(x),g1(f1(x)))
     app#(f(),x7) -> f{1,#}(x7) -> f{1,#}(s1(x)) -> g{1,#}(f1(x))
     app#(f(),x7) -> f{1,#}(x7) ->
     f{1,#}(s1(x)) -> f{1,#}(x)
     map{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(filter23(x6,x5,x4),x7) -> filter2{4,#}(x6,x5,x4,x7)
     map{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(filter1(x6),x7) -> filter{2,#}(x6,x7)
     map{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(map1(x6),x7) -> map{2,#}(x6,x7)
     map{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(g(),x7) -> g{1,#}(x7)
     map{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(f(),x7) -> f{1,#}(x7)
     map{2,#}(fun,cons2(x,xs)) -> app#(fun,x) ->
     app#(minus1(x6),x7) -> minus{2,#}(x6,x7)
     map{2,#}(fun,cons2(x,xs)) -> map{2,#}(fun,xs) ->
     map{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
     map{2,#}(fun,cons2(x,xs)) -> map{2,#}(fun,xs) ->
     map{2,#}(fun,cons2(x,xs)) -> map{2,#}(fun,xs)
     g{1,#}(s1(x)) -> g{1,#}(x) ->
     g{1,#}(s1(x)) -> minus{2,#}(s1(x),f1(g1(x)))
     g{1,#}(s1(x)) -> g{1,#}(x) -> g{1,#}(s1(x)) -> f{1,#}(g1(x))
     g{1,#}(s1(x)) -> g{1,#}(x) -> g{1,#}(s1(x)) -> g{1,#}(x)
     g{1,#}(s1(x)) -> f{1,#}(g1(x)) ->
     f{1,#}(s1(x)) -> minus{2,#}(s1(x),g1(f1(x)))
     g{1,#}(s1(x)) -> f{1,#}(g1(x)) -> f{1,#}(s1(x)) -> g{1,#}(f1(x))
     g{1,#}(s1(x)) -> f{1,#}(g1(x)) ->
     f{1,#}(s1(x)) -> f{1,#}(x)
     g{1,#}(s1(x)) -> minus{2,#}(s1(x),f1(g1(x))) ->
     minus{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y)
     f{1,#}(s1(x)) -> g{1,#}(f1(x)) ->
     g{1,#}(s1(x)) -> minus{2,#}(s1(x),f1(g1(x)))
     f{1,#}(s1(x)) -> g{1,#}(f1(x)) -> g{1,#}(s1(x)) -> f{1,#}(g1(x))
     f{1,#}(s1(x)) -> g{1,#}(f1(x)) -> g{1,#}(s1(x)) -> g{1,#}(x)
     f{1,#}(s1(x)) -> f{1,#}(x) ->
     f{1,#}(s1(x)) -> minus{2,#}(s1(x),g1(f1(x)))
     f{1,#}(s1(x)) -> f{1,#}(x) -> f{1,#}(s1(x)) -> g{1,#}(f1(x))
     f{1,#}(s1(x)) -> f{1,#}(x) ->
     f{1,#}(s1(x)) -> f{1,#}(x)
     f{1,#}(s1(x)) -> minus{2,#}(s1(x),g1(f1(x))) ->
     minus{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y)
     minus{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y) -> minus{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y)
    SCC Processor:
     #sccs: 3
     #rules: 14
     #arcs: 48/361
     DPs:
      filter2{4,#}(false(),fun,x,xs) -> filter{2,#}(fun,xs)
      filter{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
      app#(map1(x6),x7) -> map{2,#}(x6,x7)
      map{2,#}(fun,cons2(x,xs)) -> map{2,#}(fun,xs)
      map{2,#}(fun,cons2(x,xs)) -> app#(fun,x)
      app#(filter1(x6),x7) -> filter{2,#}(x6,x7)
      filter{2,#}(fun,cons2(x,xs)) -> filter2{4,#}(app(fun,x),fun,x,xs)
      filter2{4,#}(true(),fun,x,xs) -> filter{2,#}(fun,xs)
      app#(filter23(x6,x5,x4),x7) -> filter2{4,#}(x6,x5,x4,x7)
     TRS:
      minus2(x,0()) -> x
      minus2(s1(x),s1(y)) -> minus2(x,y)
      f1(0()) -> s1(0())
      f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
      g1(0()) -> 0()
      g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
      map2(fun,nil()) -> nil()
      map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
      filter2(fun,nil()) -> nil()
      filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
      filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
      filter24(false(),fun,x,xs) -> filter2(fun,xs)
      app(minus1(x6),x7) -> minus2(x6,x7)
      app(minus(),x7) -> minus1(x7)
      app(s(),x7) -> s1(x7)
      app(f(),x7) -> f1(x7)
      app(g(),x7) -> g1(x7)
      app(map1(x6),x7) -> map2(x6,x7)
      app(map(),x7) -> map1(x7)
      app(cons1(x6),x7) -> cons2(x6,x7)
      app(cons(),x7) -> cons1(x7)
      app(filter1(x6),x7) -> filter2(x6,x7)
      app(filter(),x7) -> filter1(x7)
      app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
      app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
      app(filter21(x6),x7) -> filter22(x6,x7)
      app(filter2(),x7) -> filter21(x7)
     Subterm Criterion Processor:
      simple projection:
       pi(map{2,#}) = 1
       pi(app#) = 1
       pi(filter{2,#}) = 1
       pi(filter2{4,#}) = 3
      problem:
       DPs:
        filter2{4,#}(false(),fun,x,xs) -> filter{2,#}(fun,xs)
        app#(map1(x6),x7) -> map{2,#}(x6,x7)
        app#(filter1(x6),x7) -> filter{2,#}(x6,x7)
        filter2{4,#}(true(),fun,x,xs) -> filter{2,#}(fun,xs)
        app#(filter23(x6,x5,x4),x7) -> filter2{4,#}(x6,x5,x4,x7)
       TRS:
        minus2(x,0()) -> x
        minus2(s1(x),s1(y)) -> minus2(x,y)
        f1(0()) -> s1(0())
        f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
        g1(0()) -> 0()
        g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
        map2(fun,nil()) -> nil()
        map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
        filter2(fun,nil()) -> nil()
        filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
        filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
        filter24(false(),fun,x,xs) -> filter2(fun,xs)
        app(minus1(x6),x7) -> minus2(x6,x7)
        app(minus(),x7) -> minus1(x7)
        app(s(),x7) -> s1(x7)
        app(f(),x7) -> f1(x7)
        app(g(),x7) -> g1(x7)
        app(map1(x6),x7) -> map2(x6,x7)
        app(map(),x7) -> map1(x7)
        app(cons1(x6),x7) -> cons2(x6,x7)
        app(cons(),x7) -> cons1(x7)
        app(filter1(x6),x7) -> filter2(x6,x7)
        app(filter(),x7) -> filter1(x7)
        app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
        app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
        app(filter21(x6),x7) -> filter22(x6,x7)
        app(filter2(),x7) -> filter21(x7)
      SCC Processor:
       #sccs: 0
       #rules: 0
       #arcs: 20/25
       
     
     DPs:
      f{1,#}(s1(x)) -> f{1,#}(x)
      f{1,#}(s1(x)) -> g{1,#}(f1(x))
      g{1,#}(s1(x)) -> g{1,#}(x)
      g{1,#}(s1(x)) -> f{1,#}(g1(x))
     TRS:
      minus2(x,0()) -> x
      minus2(s1(x),s1(y)) -> minus2(x,y)
      f1(0()) -> s1(0())
      f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
      g1(0()) -> 0()
      g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
      map2(fun,nil()) -> nil()
      map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
      filter2(fun,nil()) -> nil()
      filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
      filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
      filter24(false(),fun,x,xs) -> filter2(fun,xs)
      app(minus1(x6),x7) -> minus2(x6,x7)
      app(minus(),x7) -> minus1(x7)
      app(s(),x7) -> s1(x7)
      app(f(),x7) -> f1(x7)
      app(g(),x7) -> g1(x7)
      app(map1(x6),x7) -> map2(x6,x7)
      app(map(),x7) -> map1(x7)
      app(cons1(x6),x7) -> cons2(x6,x7)
      app(cons(),x7) -> cons1(x7)
      app(filter1(x6),x7) -> filter2(x6,x7)
      app(filter(),x7) -> filter1(x7)
      app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
      app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
      app(filter21(x6),x7) -> filter22(x6,x7)
      app(filter2(),x7) -> filter21(x7)
     Arctic Interpretation Processor:
      dimension: 1
      interpretation:
       [g{1,#}](x0) = x0,
       
       [f{1,#}](x0) = x0 + 0,
       
       [filter21](x0) = 4x0,
       
       [filter22](x0, x1) = 2x0 + x1,
       
       [filter24](x0, x1, x2, x3) = x1 + x2 + x3,
       
       [filter23](x0, x1, x2) = 2x0 + x1 + x2,
       
       [filter2](x0, x1) = x0 + x1,
       
       [filter1](x0) = x0,
       
       [cons2](x0, x1) = x0 + x1,
       
       [cons1](x0) = 2x0,
       
       [map2](x0, x1) = 5x0 + 5x1 + 1,
       
       [map1](x0) = 5x0 + 2,
       
       [g1](x0) = 1x0 + 0,
       
       [f1](x0) = 2x0,
       
       [s1](x0) = 2x0 + 0,
       
       [minus2](x0, x1) = x0 + 0,
       
       [minus1](x0) = 4x0,
       
       [false] = 2,
       
       [true] = 1,
       
       [filter2] = 6,
       
       [filter] = 0,
       
       [cons] = 0,
       
       [nil] = 0,
       
       [map] = 3,
       
       [g] = 2,
       
       [f] = 4,
       
       [s] = 0,
       
       [0] = 1,
       
       [app](x0, x1) = x0 + 5x1 + 1,
       
       [minus] = 1
      orientation:
       f{1,#}(s1(x)) = 2x + 0 >= x + 0 = f{1,#}(x)
       
       f{1,#}(s1(x)) = 2x + 0 >= 2x = g{1,#}(f1(x))
       
       g{1,#}(s1(x)) = 2x + 0 >= x = g{1,#}(x)
       
       g{1,#}(s1(x)) = 2x + 0 >= 1x + 0 = f{1,#}(g1(x))
       
       minus2(x,0()) = x + 0 >= x = x
       
       minus2(s1(x),s1(y)) = 2x + 0 >= x + 0 = minus2(x,y)
       
       f1(0()) = 3 >= 3 = s1(0())
       
       f1(s1(x)) = 4x + 2 >= 2x + 0 = minus2(s1(x),g1(f1(x)))
       
       g1(0()) = 2 >= 1 = 0()
       
       g1(s1(x)) = 3x + 1 >= 2x + 0 = minus2(s1(x),f1(g1(x)))
       
       map2(fun,nil()) = 5fun + 5 >= 0 = nil()
       
       map2(fun,cons2(x,xs)) = 5fun + 5x + 5xs + 1 >= 5fun + 5x + 5xs + 1 = cons2(app(fun,x),map2(fun,xs))
       
       filter2(fun,nil()) = fun + 0 >= 0 = nil()
       
       filter2(fun,cons2(x,xs)) = fun + x + xs >= fun + x + xs = filter24(app(fun,x),fun,x,xs)
       
       filter24(true(),fun,x,xs) = fun + x + xs >= fun + x + xs = cons2(x,filter2(fun,xs))
       
       filter24(false(),fun,x,xs) = fun + x + xs >= fun + xs = filter2(fun,xs)
       
       app(minus1(x6),x7) = 4x6 + 5x7 + 1 >= x6 + 0 = minus2(x6,x7)
       
       app(minus(),x7) = 5x7 + 1 >= 4x7 = minus1(x7)
       
       app(s(),x7) = 5x7 + 1 >= 2x7 + 0 = s1(x7)
       
       app(f(),x7) = 5x7 + 4 >= 2x7 = f1(x7)
       
       app(g(),x7) = 5x7 + 2 >= 1x7 + 0 = g1(x7)
       
       app(map1(x6),x7) = 5x6 + 5x7 + 2 >= 5x6 + 5x7 + 1 = map2(x6,x7)
       
       app(map(),x7) = 5x7 + 3 >= 5x7 + 2 = map1(x7)
       
       app(cons1(x6),x7) = 2x6 + 5x7 + 1 >= x6 + x7 = cons2(x6,x7)
       
       app(cons(),x7) = 5x7 + 1 >= 2x7 = cons1(x7)
       
       app(filter1(x6),x7) = x6 + 5x7 + 1 >= x6 + x7 = filter2(x6,x7)
       
       app(filter(),x7) = 5x7 + 1 >= x7 = filter1(x7)
       
       app(filter23(x6,x5,x4),x7) = x4 + x5 + 2x6 + 5x7 + 1 >= x4 + x5 + x7 = filter24(x6,x5,x4,x7)
       
       app(filter22(x6,x5),x7) = x5 + 2x6 + 5x7 + 1 >= x5 + 2x6 + x7 = filter23(x6,x5,x7)
       
       app(filter21(x6),x7) = 4x6 + 5x7 + 1 >= 2x6 + x7 = filter22(x6,x7)
       
       app(filter2(),x7) = 5x7 + 6 >= 4x7 = filter21(x7)
      problem:
       DPs:
        f{1,#}(s1(x)) -> f{1,#}(x)
        f{1,#}(s1(x)) -> g{1,#}(f1(x))
        g{1,#}(s1(x)) -> f{1,#}(g1(x))
       TRS:
        minus2(x,0()) -> x
        minus2(s1(x),s1(y)) -> minus2(x,y)
        f1(0()) -> s1(0())
        f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
        g1(0()) -> 0()
        g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
        map2(fun,nil()) -> nil()
        map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
        filter2(fun,nil()) -> nil()
        filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
        filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
        filter24(false(),fun,x,xs) -> filter2(fun,xs)
        app(minus1(x6),x7) -> minus2(x6,x7)
        app(minus(),x7) -> minus1(x7)
        app(s(),x7) -> s1(x7)
        app(f(),x7) -> f1(x7)
        app(g(),x7) -> g1(x7)
        app(map1(x6),x7) -> map2(x6,x7)
        app(map(),x7) -> map1(x7)
        app(cons1(x6),x7) -> cons2(x6,x7)
        app(cons(),x7) -> cons1(x7)
        app(filter1(x6),x7) -> filter2(x6,x7)
        app(filter(),x7) -> filter1(x7)
        app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
        app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
        app(filter21(x6),x7) -> filter22(x6,x7)
        app(filter2(),x7) -> filter21(x7)
      Matrix Interpretation Processor: dim=1
       
       interpretation:
        [g{1,#}](x0) = 3x0 + 4,
        
        [f{1,#}](x0) = 4x0 + 1,
        
        [filter21](x0) = x0 + 5,
        
        [filter22](x0, x1) = 5x0 + x1 + 2,
        
        [filter24](x0, x1, x2, x3) = x1 + 2,
        
        [filter23](x0, x1, x2) = 4x0 + 4x1 + 4x2 + 6,
        
        [filter2](x0, x1) = x0 + 2,
        
        [filter1](x0) = 2x0 + 3,
        
        [cons2](x0, x1) = 0,
        
        [cons1](x0) = x0,
        
        [map2](x0, x1) = 2,
        
        [map1](x0) = 3x0 + 4,
        
        [g1](x0) = 3x0 + 3,
        
        [f1](x0) = 4x0 + 3,
        
        [s1](x0) = 4x0 + 3,
        
        [minus2](x0, x1) = 3x0 + 1,
        
        [minus1](x0) = 3x0 + 4,
        
        [false] = 0,
        
        [true] = 0,
        
        [filter2] = 6,
        
        [filter] = 6,
        
        [cons] = 2,
        
        [nil] = 2,
        
        [map] = 4,
        
        [g] = 2,
        
        [f] = 1,
        
        [s] = 6,
        
        [0] = 0,
        
        [app](x0, x1) = 5x0 + 4x1,
        
        [minus] = 5
       orientation:
        f{1,#}(s1(x)) = 16x + 13 >= 4x + 1 = f{1,#}(x)
        
        f{1,#}(s1(x)) = 16x + 13 >= 12x + 13 = g{1,#}(f1(x))
        
        g{1,#}(s1(x)) = 12x + 13 >= 12x + 13 = f{1,#}(g1(x))
        
        minus2(x,0()) = 3x + 1 >= x = x
        
        minus2(s1(x),s1(y)) = 12x + 10 >= 3x + 1 = minus2(x,y)
        
        f1(0()) = 3 >= 3 = s1(0())
        
        f1(s1(x)) = 16x + 15 >= 12x + 10 = minus2(s1(x),g1(f1(x)))
        
        g1(0()) = 3 >= 0 = 0()
        
        g1(s1(x)) = 12x + 12 >= 12x + 10 = minus2(s1(x),f1(g1(x)))
        
        map2(fun,nil()) = 2 >= 2 = nil()
        
        map2(fun,cons2(x,xs)) = 2 >= 0 = cons2(app(fun,x),map2(fun,xs))
        
        filter2(fun,nil()) = fun + 2 >= 2 = nil()
        
        filter2(fun,cons2(x,xs)) = fun + 2 >= fun + 2 = filter24(app(fun,x),fun,x,xs)
        
        filter24(true(),fun,x,xs) = fun + 2 >= 0 = cons2(x,filter2(fun,xs))
        
        filter24(false(),fun,x,xs) = fun + 2 >= fun + 2 = filter2(fun,xs)
        
        app(minus1(x6),x7) = 15x6 + 4x7 + 20 >= 3x6 + 1 = minus2(x6,x7)
        
        app(minus(),x7) = 4x7 + 25 >= 3x7 + 4 = minus1(x7)
        
        app(s(),x7) = 4x7 + 30 >= 4x7 + 3 = s1(x7)
        
        app(f(),x7) = 4x7 + 5 >= 4x7 + 3 = f1(x7)
        
        app(g(),x7) = 4x7 + 10 >= 3x7 + 3 = g1(x7)
        
        app(map1(x6),x7) = 15x6 + 4x7 + 20 >= 2 = map2(x6,x7)
        
        app(map(),x7) = 4x7 + 20 >= 3x7 + 4 = map1(x7)
        
        app(cons1(x6),x7) = 5x6 + 4x7 >= 0 = cons2(x6,x7)
        
        app(cons(),x7) = 4x7 + 10 >= x7 = cons1(x7)
        
        app(filter1(x6),x7) = 10x6 + 4x7 + 15 >= x6 + 2 = filter2(x6,x7)
        
        app(filter(),x7) = 4x7 + 30 >= 2x7 + 3 = filter1(x7)
        
        app(filter23(x6,x5,x4),x7) = 20x4 + 20x5 + 20x6 + 4x7 + 30 >= x5 + 2 = filter24(x6,x5,x4,x7)
        
        app(filter22(x6,x5),x7) = 5x5 + 25x6 + 4x7 + 10 >= 4x5 + 4x6 + 4x7 + 6 = filter23(x6,x5,x7)
        
        app(filter21(x6),x7) = 5x6 + 4x7 + 25 >= 5x6 + x7 + 2 = filter22(x6,x7)
        
        app(filter2(),x7) = 4x7 + 30 >= x7 + 5 = filter21(x7)
       problem:
        DPs:
         f{1,#}(s1(x)) -> g{1,#}(f1(x))
         g{1,#}(s1(x)) -> f{1,#}(g1(x))
        TRS:
         minus2(x,0()) -> x
         minus2(s1(x),s1(y)) -> minus2(x,y)
         f1(0()) -> s1(0())
         f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
         g1(0()) -> 0()
         g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
         map2(fun,nil()) -> nil()
         map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
         filter2(fun,nil()) -> nil()
         filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
         filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
         filter24(false(),fun,x,xs) -> filter2(fun,xs)
         app(minus1(x6),x7) -> minus2(x6,x7)
         app(minus(),x7) -> minus1(x7)
         app(s(),x7) -> s1(x7)
         app(f(),x7) -> f1(x7)
         app(g(),x7) -> g1(x7)
         app(map1(x6),x7) -> map2(x6,x7)
         app(map(),x7) -> map1(x7)
         app(cons1(x6),x7) -> cons2(x6,x7)
         app(cons(),x7) -> cons1(x7)
         app(filter1(x6),x7) -> filter2(x6,x7)
         app(filter(),x7) -> filter1(x7)
         app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
         app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
         app(filter21(x6),x7) -> filter22(x6,x7)
         app(filter2(),x7) -> filter21(x7)
       Arctic Interpretation Processor:
        dimension: 1
        interpretation:
         [g{1,#}](x0) = x0 + 0,
         
         [f{1,#}](x0) = x0,
         
         [filter21](x0) = 0,
         
         [filter22](x0, x1) = 1x1,
         
         [filter24](x0, x1, x2, x3) = 1x3,
         
         [filter23](x0, x1, x2) = 1x1 + x2,
         
         [filter2](x0, x1) = 1x1,
         
         [filter1](x0) = x0,
         
         [cons2](x0, x1) = x1,
         
         [cons1](x0) = 1x0,
         
         [map2](x0, x1) = 1x0 + x1,
         
         [map1](x0) = 1x0 + 0,
         
         [g1](x0) = x0,
         
         [f1](x0) = 1x0 + 0,
         
         [s1](x0) = 1x0 + 0,
         
         [minus2](x0, x1) = x0 + x1 + 0,
         
         [minus1](x0) = x0 + 6,
         
         [false] = 5,
         
         [true] = 1,
         
         [filter2] = 2,
         
         [filter] = 1,
         
         [cons] = 6,
         
         [nil] = 0,
         
         [map] = 0,
         
         [g] = 7,
         
         [f] = 0,
         
         [s] = 5,
         
         [0] = 0,
         
         [app](x0, x1) = x0 + 1x1,
         
         [minus] = 6
        orientation:
         f{1,#}(s1(x)) = 1x + 0 >= 1x + 0 = g{1,#}(f1(x))
         
         g{1,#}(s1(x)) = 1x + 0 >= x = f{1,#}(g1(x))
         
         minus2(x,0()) = x + 0 >= x = x
         
         minus2(s1(x),s1(y)) = 1x + 1y + 0 >= x + y + 0 = minus2(x,y)
         
         f1(0()) = 1 >= 1 = s1(0())
         
         f1(s1(x)) = 2x + 1 >= 1x + 0 = minus2(s1(x),g1(f1(x)))
         
         g1(0()) = 0 >= 0 = 0()
         
         g1(s1(x)) = 1x + 0 >= 1x + 0 = minus2(s1(x),f1(g1(x)))
         
         map2(fun,nil()) = 1fun + 0 >= 0 = nil()
         
         map2(fun,cons2(x,xs)) = 1fun + xs >= 1fun + xs = cons2(app(fun,x),map2(fun,xs))
         
         filter2(fun,nil()) = 1 >= 0 = nil()
         
         filter2(fun,cons2(x,xs)) = 1xs >= 1xs = filter24(app(fun,x),fun,x,xs)
         
         filter24(true(),fun,x,xs) = 1xs >= 1xs = cons2(x,filter2(fun,xs))
         
         filter24(false(),fun,x,xs) = 1xs >= 1xs = filter2(fun,xs)
         
         app(minus1(x6),x7) = x6 + 1x7 + 6 >= x6 + x7 + 0 = minus2(x6,x7)
         
         app(minus(),x7) = 1x7 + 6 >= x7 + 6 = minus1(x7)
         
         app(s(),x7) = 1x7 + 5 >= 1x7 + 0 = s1(x7)
         
         app(f(),x7) = 1x7 + 0 >= 1x7 + 0 = f1(x7)
         
         app(g(),x7) = 1x7 + 7 >= x7 = g1(x7)
         
         app(map1(x6),x7) = 1x6 + 1x7 + 0 >= 1x6 + x7 = map2(x6,x7)
         
         app(map(),x7) = 1x7 + 0 >= 1x7 + 0 = map1(x7)
         
         app(cons1(x6),x7) = 1x6 + 1x7 >= x7 = cons2(x6,x7)
         
         app(cons(),x7) = 1x7 + 6 >= 1x7 = cons1(x7)
         
         app(filter1(x6),x7) = x6 + 1x7 >= 1x7 = filter2(x6,x7)
         
         app(filter(),x7) = 1x7 + 1 >= x7 = filter1(x7)
         
         app(filter23(x6,x5,x4),x7) = x4 + 1x5 + 1x7 >= 1x7 = filter24(x6,x5,x4,x7)
         
         app(filter22(x6,x5),x7) = 1x5 + 1x7 >= 1x5 + x7 = filter23(x6,x5,x7)
         
         app(filter21(x6),x7) = 1x7 + 0 >= 1x7 = filter22(x6,x7)
         
         app(filter2(),x7) = 1x7 + 2 >= 0 = filter21(x7)
        problem:
         DPs:
          f{1,#}(s1(x)) -> g{1,#}(f1(x))
         TRS:
          minus2(x,0()) -> x
          minus2(s1(x),s1(y)) -> minus2(x,y)
          f1(0()) -> s1(0())
          f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
          g1(0()) -> 0()
          g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
          map2(fun,nil()) -> nil()
          map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
          filter2(fun,nil()) -> nil()
          filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
          filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
          filter24(false(),fun,x,xs) -> filter2(fun,xs)
          app(minus1(x6),x7) -> minus2(x6,x7)
          app(minus(),x7) -> minus1(x7)
          app(s(),x7) -> s1(x7)
          app(f(),x7) -> f1(x7)
          app(g(),x7) -> g1(x7)
          app(map1(x6),x7) -> map2(x6,x7)
          app(map(),x7) -> map1(x7)
          app(cons1(x6),x7) -> cons2(x6,x7)
          app(cons(),x7) -> cons1(x7)
          app(filter1(x6),x7) -> filter2(x6,x7)
          app(filter(),x7) -> filter1(x7)
          app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
          app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
          app(filter21(x6),x7) -> filter22(x6,x7)
          app(filter2(),x7) -> filter21(x7)
        SCC Processor:
         #sccs: 0
         #rules: 0
         #arcs: 8/1
         
     
     DPs:
      minus{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y)
     TRS:
      minus2(x,0()) -> x
      minus2(s1(x),s1(y)) -> minus2(x,y)
      f1(0()) -> s1(0())
      f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
      g1(0()) -> 0()
      g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
      map2(fun,nil()) -> nil()
      map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
      filter2(fun,nil()) -> nil()
      filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
      filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
      filter24(false(),fun,x,xs) -> filter2(fun,xs)
      app(minus1(x6),x7) -> minus2(x6,x7)
      app(minus(),x7) -> minus1(x7)
      app(s(),x7) -> s1(x7)
      app(f(),x7) -> f1(x7)
      app(g(),x7) -> g1(x7)
      app(map1(x6),x7) -> map2(x6,x7)
      app(map(),x7) -> map1(x7)
      app(cons1(x6),x7) -> cons2(x6,x7)
      app(cons(),x7) -> cons1(x7)
      app(filter1(x6),x7) -> filter2(x6,x7)
      app(filter(),x7) -> filter1(x7)
      app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
      app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
      app(filter21(x6),x7) -> filter22(x6,x7)
      app(filter2(),x7) -> filter21(x7)
     Subterm Criterion Processor:
      simple projection:
       pi(minus{2,#}) = 1
      problem:
       DPs:
        
       TRS:
        minus2(x,0()) -> x
        minus2(s1(x),s1(y)) -> minus2(x,y)
        f1(0()) -> s1(0())
        f1(s1(x)) -> minus2(s1(x),g1(f1(x)))
        g1(0()) -> 0()
        g1(s1(x)) -> minus2(s1(x),f1(g1(x)))
        map2(fun,nil()) -> nil()
        map2(fun,cons2(x,xs)) -> cons2(app(fun,x),map2(fun,xs))
        filter2(fun,nil()) -> nil()
        filter2(fun,cons2(x,xs)) -> filter24(app(fun,x),fun,x,xs)
        filter24(true(),fun,x,xs) -> cons2(x,filter2(fun,xs))
        filter24(false(),fun,x,xs) -> filter2(fun,xs)
        app(minus1(x6),x7) -> minus2(x6,x7)
        app(minus(),x7) -> minus1(x7)
        app(s(),x7) -> s1(x7)
        app(f(),x7) -> f1(x7)
        app(g(),x7) -> g1(x7)
        app(map1(x6),x7) -> map2(x6,x7)
        app(map(),x7) -> map1(x7)
        app(cons1(x6),x7) -> cons2(x6,x7)
        app(cons(),x7) -> cons1(x7)
        app(filter1(x6),x7) -> filter2(x6,x7)
        app(filter(),x7) -> filter1(x7)
        app(filter23(x6,x5,x4),x7) -> filter24(x6,x5,x4,x7)
        app(filter22(x6,x5),x7) -> filter23(x6,x5,x7)
        app(filter21(x6),x7) -> filter22(x6,x7)
        app(filter2(),x7) -> filter21(x7)
      Qed