YES Problem: app(app(map(),f),nil()) -> nil() app(app(map(),f),app(app(cons(),x),xs)) -> app(app(cons(),app(f,x)),app(app(map(),f),xs)) app(app(append(),xs),nil()) -> xs app(app(append(),nil()),ys) -> ys app(app(append(),app(app(cons(),x),xs)),ys) -> app(app(cons(),x),app(app(append(),xs),ys)) app(app(zip(),nil()),yss) -> yss app(app(zip(),xss),nil()) -> xss app(app(zip(),app(app(cons(),xs),xss)),app(app(cons(),ys),yss)) -> app(app(cons(),app(app(append(),xs),ys)),app(app(zip(),xss),yss)) app(app(combine(),xs),nil()) -> xs app(app(combine(),xs),app(app(cons(),ys),yss)) -> app(app(combine(),app(app(zip(),xs),ys)),yss) app(levels(),app(app(node(),x),xs)) -> app(app(cons(),app(app(cons(),x),nil())),app(app(combine(),nil()),app(app(map(),levels()),xs))) Proof: Uncurry Processor: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) DP Processor: DPs: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> zip{2,#}(xss,yss) zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> append{2,#}(xs,ys) combine{2,#}(xs,cons2(ys,yss)) -> zip{2,#}(xs,ys) combine{2,#}(xs,cons2(ys,yss)) -> combine{2,#}(zip2(xs,ys),yss) levels{1,#}(node2(x,xs)) -> map{2,#}(levels(),xs) levels{1,#}(node2(x,xs)) -> combine{2,#}(nil(),map2(levels(),xs)) app#(map1(x6),x7) -> map{2,#}(x6,x7) app#(append1(x6),x7) -> append{2,#}(x6,x7) app#(zip1(x6),x7) -> zip{2,#}(x6,x7) app#(combine1(x6),x7) -> combine{2,#}(x6,x7) app#(levels(),x7) -> levels{1,#}(x7) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) TDG Processor: DPs: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> zip{2,#}(xss,yss) zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> append{2,#}(xs,ys) combine{2,#}(xs,cons2(ys,yss)) -> zip{2,#}(xs,ys) combine{2,#}(xs,cons2(ys,yss)) -> combine{2,#}(zip2(xs,ys),yss) levels{1,#}(node2(x,xs)) -> map{2,#}(levels(),xs) levels{1,#}(node2(x,xs)) -> combine{2,#}(nil(),map2(levels(),xs)) app#(map1(x6),x7) -> map{2,#}(x6,x7) app#(append1(x6),x7) -> append{2,#}(x6,x7) app#(zip1(x6),x7) -> zip{2,#}(x6,x7) app#(combine1(x6),x7) -> combine{2,#}(x6,x7) app#(levels(),x7) -> levels{1,#}(x7) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) graph: levels{1,#}(node2(x,xs)) -> combine{2,#}(nil(),map2(levels(),xs)) -> combine{2,#}(xs,cons2(ys,yss)) -> combine{2,#}(zip2(xs,ys),yss) levels{1,#}(node2(x,xs)) -> combine{2,#}(nil(),map2(levels(),xs)) -> combine{2,#}(xs,cons2(ys,yss)) -> zip{2,#}(xs,ys) levels{1,#}(node2(x,xs)) -> map{2,#}(levels(),xs) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) levels{1,#}(node2(x,xs)) -> map{2,#}(levels(),xs) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) combine{2,#}(xs,cons2(ys,yss)) -> combine{2,#}(zip2(xs,ys),yss) -> combine{2,#}(xs,cons2(ys,yss)) -> combine{2,#}(zip2(xs,ys),yss) combine{2,#}(xs,cons2(ys,yss)) -> combine{2,#}(zip2(xs,ys),yss) -> combine{2,#}(xs,cons2(ys,yss)) -> zip{2,#}(xs,ys) combine{2,#}(xs,cons2(ys,yss)) -> zip{2,#}(xs,ys) -> zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> append{2,#}(xs,ys) combine{2,#}(xs,cons2(ys,yss)) -> zip{2,#}(xs,ys) -> zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> zip{2,#}(xss,yss) zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> zip{2,#}(xss,yss) -> zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> append{2,#}(xs,ys) zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> zip{2,#}(xss,yss) -> zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> zip{2,#}(xss,yss) zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> append{2,#}(xs,ys) -> append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) -> append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) app#(combine1(x6),x7) -> combine{2,#}(x6,x7) -> combine{2,#}(xs,cons2(ys,yss)) -> combine{2,#}(zip2(xs,ys),yss) app#(combine1(x6),x7) -> combine{2,#}(x6,x7) -> combine{2,#}(xs,cons2(ys,yss)) -> zip{2,#}(xs,ys) app#(zip1(x6),x7) -> zip{2,#}(x6,x7) -> zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> append{2,#}(xs,ys) app#(zip1(x6),x7) -> zip{2,#}(x6,x7) -> zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> zip{2,#}(xss,yss) app#(append1(x6),x7) -> append{2,#}(x6,x7) -> append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) app#(map1(x6),x7) -> map{2,#}(x6,x7) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) app#(map1(x6),x7) -> map{2,#}(x6,x7) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) app#(levels(),x7) -> levels{1,#}(x7) -> levels{1,#}(node2(x,xs)) -> combine{2,#}(nil(),map2(levels(),xs)) app#(levels(),x7) -> levels{1,#}(x7) -> levels{1,#}(node2(x,xs)) -> map{2,#}(levels(),xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(levels(),x7) -> levels{1,#}(x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(combine1(x6),x7) -> combine{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(zip1(x6),x7) -> zip{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(append1(x6),x7) -> append{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(map1(x6),x7) -> map{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) SCC Processor: #sccs: 4 #rules: 8 #arcs: 28/196 DPs: levels{1,#}(node2(x,xs)) -> map{2,#}(levels(),xs) map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) app#(map1(x6),x7) -> map{2,#}(x6,x7) app#(levels(),x7) -> levels{1,#}(x7) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) Subterm Criterion Processor: simple projection: pi(map{2,#}) = 1 pi(app#) = 1 pi(levels{1,#}) = 0 problem: DPs: app#(map1(x6),x7) -> map{2,#}(x6,x7) app#(levels(),x7) -> levels{1,#}(x7) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) SCC Processor: #sccs: 0 #rules: 0 #arcs: 9/4 DPs: combine{2,#}(xs,cons2(ys,yss)) -> combine{2,#}(zip2(xs,ys),yss) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) Subterm Criterion Processor: simple projection: pi(combine{2,#}) = 1 problem: DPs: TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) Qed DPs: zip{2,#}(cons2(xs,xss),cons2(ys,yss)) -> zip{2,#}(xss,yss) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) Subterm Criterion Processor: simple projection: pi(zip{2,#}) = 1 problem: DPs: TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) Qed DPs: append{2,#}(cons2(x,xs),ys) -> append{2,#}(xs,ys) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) Subterm Criterion Processor: simple projection: pi(append{2,#}) = 0 problem: DPs: TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) append2(xs,nil()) -> xs append2(nil(),ys) -> ys append2(cons2(x,xs),ys) -> cons2(x,append2(xs,ys)) zip2(nil(),yss) -> yss zip2(xss,nil()) -> xss zip2(cons2(xs,xss),cons2(ys,yss)) -> cons2(append2(xs,ys),zip2(xss,yss)) combine2(xs,nil()) -> xs combine2(xs,cons2(ys,yss)) -> combine2(zip2(xs,ys),yss) levels1(node2(x,xs)) -> cons2(cons2(x,nil()),combine2(nil(),map2(levels(),xs))) 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(append1(x6),x7) -> append2(x6,x7) app(append(),x7) -> append1(x7) app(zip1(x6),x7) -> zip2(x6,x7) app(zip(),x7) -> zip1(x7) app(combine1(x6),x7) -> combine2(x6,x7) app(combine(),x7) -> combine1(x7) app(levels(),x7) -> levels1(x7) app(node1(x6),x7) -> node2(x6,x7) app(node(),x7) -> node1(x7) Qed