YES Problem: app(app(filter(),f),nil()) -> nil() app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) Proof: DP Processor: DPs: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(filtersub(),app(f,y)) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(filtersub(),app(f,y)),f) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(filter(),f) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(cons(),y),app(app(filter(),f),ys)) app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(filter(),f) app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) TRS: app(app(filter(),f),nil()) -> nil() app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) EDG Processor: DPs: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(filtersub(),app(f,y)) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(filtersub(),app(f,y)),f) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(filter(),f) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(cons(),y),app(app(filter(),f),ys)) app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(filter(),f) app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) TRS: app(app(filter(),f),nil()) -> nil() app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) graph: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(filtersub(),app(f,y)) app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(filtersub(),app(f,y)),f) app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(filtersub(),app(f,y)) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(filtersub(),app(f,y)),f) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(filtersub(),app(f,y)) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(filtersub(),app(f,y)),f) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) -> app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) -> app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(filter(),f) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) -> app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) -> app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(cons(),y),app(app(filter(),f),ys)) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) -> app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(filter(),f) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) -> app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) SCC Processor: #sccs: 1 #rules: 3 #arcs: 17/81 DPs: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) TRS: app(app(filter(),f),nil()) -> nil() app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) Matrix Interpretation Processor: dim=2 interpretation: [app#](x0, x1) = [1 0]x0, [0] [false] = [1], [1] [true] = [1], [0] [filtersub] = [0], [0] [cons] = [1], [3] [nil] = [0], [0 3] [1] [app](x0, x1) = [0 0]x0 + x1 + [0], [0] [filter] = [0] orientation: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) = [1 0]f + [4] >= [1 0]f + [1] = app#(app(filter(),f),ys) app#(app(filter(),f),app(app(cons(),y),ys)) = [1 0]f + [1] >= [1 0]f = app#(f,y) app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) = [1 0]f + [4] >= [1 0]f + [1] = app#(app(filter(),f),ys) [0 3] [4] [3] app(app(filter(),f),nil()) = [0 0]f + [0] >= [0] = nil() [0 3] [0 3] [2] [0 3] [0 3] [2] app(app(filter(),f),app(app(cons(),y),ys)) = [0 0]f + [0 0]y + ys + [0] >= [0 0]f + [0 0]y + ys + [0] = app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) [0 3] [0 3] [2] [0 3] [0 3] [2] app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) = [0 0]f + [0 0]y + ys + [0] >= [0 0]f + [0 0]y + ys + [0] = app(app(cons(),y),app(app(filter(),f),ys)) [0 3] [0 3] [2] [0 3] [1] app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) = [0 0]f + [0 0]y + ys + [0] >= [0 0]f + ys + [0] = app(app(filter(),f),ys) problem: DPs: TRS: app(app(filter(),f),nil()) -> nil() app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) Qed