MAYBE Problem: app(f(),app(f(),x)) -> app(g(),app(f(),x)) app(g(),app(g(),x)) -> app(f(),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: DP Processor: DPs: app#(f(),app(f(),x)) -> app#(g(),app(f(),x)) app#(g(),app(g(),x)) -> app#(f(),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#(cons(),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(filter(),fun),app(app(cons(),x),xs)) -> app#(filter2(),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#(app(app(filter2(),app(fun,x)),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#(filter(),fun) 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#(app(cons(),x),app(app(filter(),fun),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) TRS: app(f(),app(f(),x)) -> app(g(),app(f(),x)) app(g(),app(g(),x)) -> app(f(),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) EDG Processor: DPs: app#(f(),app(f(),x)) -> app#(g(),app(f(),x)) app#(g(),app(g(),x)) -> app#(f(),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#(cons(),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(filter(),fun),app(app(cons(),x),xs)) -> app#(filter2(),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#(app(app(filter2(),app(fun,x)),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#(filter(),fun) 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#(app(cons(),x),app(app(filter(),fun),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) TRS: app(f(),app(f(),x)) -> app(g(),app(f(),x)) app(g(),app(g(),x)) -> app(f(),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) graph: app#(g(),app(g(),x)) -> app#(f(),x) -> app#(f(),app(f(),x)) -> app#(g(),app(f(),x)) app#(app(filter(),fun),app(app(cons(),x),xs)) -> app#(fun,x) -> app#(f(),app(f(),x)) -> app#(g(),app(f(),x)) app#(app(filter(),fun),app(app(cons(),x),xs)) -> app#(fun,x) -> app#(g(),app(g(),x)) -> app#(f(),x) 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#(fun,x) 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(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(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#(filter2(),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(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#(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(app(app(filter2(),app(fun,x)),fun),x),xs) 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(),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#(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(),false()),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(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(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(cons(),app(fun,x)),app(app(map(),fun),xs)) app#(app(map(),fun),app(app(cons(),x),xs)) -> app#(fun,x) -> app#(f(),app(f(),x)) -> app#(g(),app(f(),x)) app#(app(map(),fun),app(app(cons(),x),xs)) -> app#(fun,x) -> app#(g(),app(g(),x)) -> app#(f(),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#(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(cons(),app(fun,x)),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#(fun,x) 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(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#(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#(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(cons(),x),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#(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(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#(filter2(),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(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#(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(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(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#(f(),app(f(),x)) -> app#(g(),app(f(),x)) -> app#(g(),app(g(),x)) -> app#(f(),x) SCC Processor: #sccs: 2 #rules: 7 #arcs: 50/289 DPs: 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(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(map(),fun),app(app(cons(),x),xs)) -> app#(app(map(),fun),xs) TRS: app(f(),app(f(),x)) -> app(g(),app(f(),x)) app(g(),app(g(),x)) -> app(f(),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) Open DPs: app#(g(),app(g(),x)) -> app#(f(),x) app#(f(),app(f(),x)) -> app#(g(),app(f(),x)) TRS: app(f(),app(f(),x)) -> app(g(),app(f(),x)) app(g(),app(g(),x)) -> app(f(),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) Matrix Interpretation Processor: dim=2 interpretation: [app#](x0, x1) = [0 1]x0 + [0 2]x1, [0] [false] = [0], [0] [true] = [0], [0] [filter2] = [0], [0] [filter] = [0], [0] [cons] = [0], [0] [nil] = [0], [0] [map] = [0], [1] [g] = [2], [1 0] [0 0] [app](x0, x1) = [1 0]x0 + [0 1]x1, [1] [f] = [3] orientation: app#(g(),app(g(),x)) = [0 2]x + [4] >= [0 2]x + [3] = app#(f(),x) app#(f(),app(f(),x)) = [0 2]x + [5] >= [0 2]x + [4] = app#(g(),app(f(),x)) [0 0] [1] [0 0] [1] app(f(),app(f(),x)) = [0 1]x + [2] >= [0 1]x + [2] = app(g(),app(f(),x)) [0 0] [1] [0 0] [1] app(g(),app(g(),x)) = [0 1]x + [2] >= [0 1]x + [1] = app(f(),x) [0] [0] app(app(map(),fun),nil()) = [0] >= [0] = nil() [0 0] [0 0] app(app(map(),fun),app(app(cons(),x),xs)) = [0 1]xs >= [0 1]xs = app(app(cons(),app(fun,x)),app(app(map(),fun),xs)) [0] [0] app(app(filter(),fun),nil()) = [0] >= [0] = nil() [0 0] [0 0] app(app(filter(),fun),app(app(cons(),x),xs)) = [0 1]xs >= [0 1]xs = app(app(app(app(filter2(),app(fun,x)),fun),x),xs) [0 0] [0 0] app(app(app(app(filter2(),true()),fun),x),xs) = [0 1]xs >= [0 1]xs = app(app(cons(),x),app(app(filter(),fun),xs)) [0 0] [0 0] app(app(app(app(filter2(),false()),fun),x),xs) = [0 1]xs >= [0 1]xs = app(app(filter(),fun),xs) problem: DPs: TRS: app(f(),app(f(),x)) -> app(g(),app(f(),x)) app(g(),app(g(),x)) -> app(f(),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) Qed