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(le(),0()),y) -> true() app(app(le(),app(s(),x)),0()) -> false() app(app(le(),app(s(),x)),app(s(),y)) -> app(app(le(),x),y) app(app(maxlist(),x),app(app(cons(),y),ys)) -> app(app(if(),app(app(le(),x),y)),app(app(maxlist(),y),ys)) app(app(maxlist(),x),nil()) -> x app(height(),app(app(node(),x),xs)) -> app(s(),app(app(maxlist(),0()),app(app(map(),height()),xs))) Proof: Uncurry Processor: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) le2(0(),y) -> true() le2(s1(x),0()) -> false() le2(s1(x),s1(y)) -> le2(x,y) maxlist2(x,cons2(y,ys)) -> if2(le2(x,y),maxlist2(y,ys)) maxlist2(x,nil()) -> x height1(node2(x,xs)) -> s1(maxlist2(0(),map2(height(),xs))) app(map1(x5),x6) -> map2(x5,x6) app(map(),x6) -> map1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(le1(x5),x6) -> le2(x5,x6) app(le(),x6) -> le1(x6) app(s(),x6) -> s1(x6) app(maxlist1(x5),x6) -> maxlist2(x5,x6) app(maxlist(),x6) -> maxlist1(x6) app(if1(x5),x6) -> if2(x5,x6) app(if(),x6) -> if1(x6) app(height(),x6) -> height1(x6) app(node1(x5),x6) -> node2(x5,x6) app(node(),x6) -> node1(x6) DP Processor: DPs: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) le{2,#}(s1(x),s1(y)) -> le{2,#}(x,y) maxlist{2,#}(x,cons2(y,ys)) -> maxlist{2,#}(y,ys) maxlist{2,#}(x,cons2(y,ys)) -> le{2,#}(x,y) height{1,#}(node2(x,xs)) -> map{2,#}(height(),xs) height{1,#}(node2(x,xs)) -> maxlist{2,#}(0(),map2(height(),xs)) app#(map1(x5),x6) -> map{2,#}(x5,x6) app#(le1(x5),x6) -> le{2,#}(x5,x6) app#(maxlist1(x5),x6) -> maxlist{2,#}(x5,x6) app#(height(),x6) -> height{1,#}(x6) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) le2(0(),y) -> true() le2(s1(x),0()) -> false() le2(s1(x),s1(y)) -> le2(x,y) maxlist2(x,cons2(y,ys)) -> if2(le2(x,y),maxlist2(y,ys)) maxlist2(x,nil()) -> x height1(node2(x,xs)) -> s1(maxlist2(0(),map2(height(),xs))) app(map1(x5),x6) -> map2(x5,x6) app(map(),x6) -> map1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(le1(x5),x6) -> le2(x5,x6) app(le(),x6) -> le1(x6) app(s(),x6) -> s1(x6) app(maxlist1(x5),x6) -> maxlist2(x5,x6) app(maxlist(),x6) -> maxlist1(x6) app(if1(x5),x6) -> if2(x5,x6) app(if(),x6) -> if1(x6) app(height(),x6) -> height1(x6) app(node1(x5),x6) -> node2(x5,x6) app(node(),x6) -> node1(x6) TDG Processor: DPs: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) le{2,#}(s1(x),s1(y)) -> le{2,#}(x,y) maxlist{2,#}(x,cons2(y,ys)) -> maxlist{2,#}(y,ys) maxlist{2,#}(x,cons2(y,ys)) -> le{2,#}(x,y) height{1,#}(node2(x,xs)) -> map{2,#}(height(),xs) height{1,#}(node2(x,xs)) -> maxlist{2,#}(0(),map2(height(),xs)) app#(map1(x5),x6) -> map{2,#}(x5,x6) app#(le1(x5),x6) -> le{2,#}(x5,x6) app#(maxlist1(x5),x6) -> maxlist{2,#}(x5,x6) app#(height(),x6) -> height{1,#}(x6) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) le2(0(),y) -> true() le2(s1(x),0()) -> false() le2(s1(x),s1(y)) -> le2(x,y) maxlist2(x,cons2(y,ys)) -> if2(le2(x,y),maxlist2(y,ys)) maxlist2(x,nil()) -> x height1(node2(x,xs)) -> s1(maxlist2(0(),map2(height(),xs))) app(map1(x5),x6) -> map2(x5,x6) app(map(),x6) -> map1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(le1(x5),x6) -> le2(x5,x6) app(le(),x6) -> le1(x6) app(s(),x6) -> s1(x6) app(maxlist1(x5),x6) -> maxlist2(x5,x6) app(maxlist(),x6) -> maxlist1(x6) app(if1(x5),x6) -> if2(x5,x6) app(if(),x6) -> if1(x6) app(height(),x6) -> height1(x6) app(node1(x5),x6) -> node2(x5,x6) app(node(),x6) -> node1(x6) graph: height{1,#}(node2(x,xs)) -> maxlist{2,#}(0(),map2(height(),xs)) -> maxlist{2,#}(x,cons2(y,ys)) -> le{2,#}(x,y) height{1,#}(node2(x,xs)) -> maxlist{2,#}(0(),map2(height(),xs)) -> maxlist{2,#}(x,cons2(y,ys)) -> maxlist{2,#}(y,ys) height{1,#}(node2(x,xs)) -> map{2,#}(height(),xs) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) height{1,#}(node2(x,xs)) -> map{2,#}(height(),xs) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) maxlist{2,#}(x,cons2(y,ys)) -> maxlist{2,#}(y,ys) -> maxlist{2,#}(x,cons2(y,ys)) -> le{2,#}(x,y) maxlist{2,#}(x,cons2(y,ys)) -> maxlist{2,#}(y,ys) -> maxlist{2,#}(x,cons2(y,ys)) -> maxlist{2,#}(y,ys) maxlist{2,#}(x,cons2(y,ys)) -> le{2,#}(x,y) -> le{2,#}(s1(x),s1(y)) -> le{2,#}(x,y) le{2,#}(s1(x),s1(y)) -> le{2,#}(x,y) -> le{2,#}(s1(x),s1(y)) -> le{2,#}(x,y) app#(maxlist1(x5),x6) -> maxlist{2,#}(x5,x6) -> maxlist{2,#}(x,cons2(y,ys)) -> le{2,#}(x,y) app#(maxlist1(x5),x6) -> maxlist{2,#}(x5,x6) -> maxlist{2,#}(x,cons2(y,ys)) -> maxlist{2,#}(y,ys) app#(le1(x5),x6) -> le{2,#}(x5,x6) -> le{2,#}(s1(x),s1(y)) -> le{2,#}(x,y) app#(map1(x5),x6) -> map{2,#}(x5,x6) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) app#(map1(x5),x6) -> map{2,#}(x5,x6) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) app#(height(),x6) -> height{1,#}(x6) -> height{1,#}(node2(x,xs)) -> maxlist{2,#}(0(),map2(height(),xs)) app#(height(),x6) -> height{1,#}(x6) -> height{1,#}(node2(x,xs)) -> map{2,#}(height(),xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(height(),x6) -> height{1,#}(x6) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(maxlist1(x5),x6) -> maxlist{2,#}(x5,x6) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(le1(x5),x6) -> le{2,#}(x5,x6) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(map1(x5),x6) -> map{2,#}(x5,x6) 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: 3 #rules: 7 #arcs: 21/121 DPs: height{1,#}(node2(x,xs)) -> map{2,#}(height(),xs) map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) app#(map1(x5),x6) -> map{2,#}(x5,x6) app#(height(),x6) -> height{1,#}(x6) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) le2(0(),y) -> true() le2(s1(x),0()) -> false() le2(s1(x),s1(y)) -> le2(x,y) maxlist2(x,cons2(y,ys)) -> if2(le2(x,y),maxlist2(y,ys)) maxlist2(x,nil()) -> x height1(node2(x,xs)) -> s1(maxlist2(0(),map2(height(),xs))) app(map1(x5),x6) -> map2(x5,x6) app(map(),x6) -> map1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(le1(x5),x6) -> le2(x5,x6) app(le(),x6) -> le1(x6) app(s(),x6) -> s1(x6) app(maxlist1(x5),x6) -> maxlist2(x5,x6) app(maxlist(),x6) -> maxlist1(x6) app(if1(x5),x6) -> if2(x5,x6) app(if(),x6) -> if1(x6) app(height(),x6) -> height1(x6) app(node1(x5),x6) -> node2(x5,x6) app(node(),x6) -> node1(x6) Subterm Criterion Processor: simple projection: pi(map{2,#}) = 1 pi(app#) = 1 pi(height{1,#}) = 0 problem: DPs: app#(map1(x5),x6) -> map{2,#}(x5,x6) app#(height(),x6) -> height{1,#}(x6) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) le2(0(),y) -> true() le2(s1(x),0()) -> false() le2(s1(x),s1(y)) -> le2(x,y) maxlist2(x,cons2(y,ys)) -> if2(le2(x,y),maxlist2(y,ys)) maxlist2(x,nil()) -> x height1(node2(x,xs)) -> s1(maxlist2(0(),map2(height(),xs))) app(map1(x5),x6) -> map2(x5,x6) app(map(),x6) -> map1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(le1(x5),x6) -> le2(x5,x6) app(le(),x6) -> le1(x6) app(s(),x6) -> s1(x6) app(maxlist1(x5),x6) -> maxlist2(x5,x6) app(maxlist(),x6) -> maxlist1(x6) app(if1(x5),x6) -> if2(x5,x6) app(if(),x6) -> if1(x6) app(height(),x6) -> height1(x6) app(node1(x5),x6) -> node2(x5,x6) app(node(),x6) -> node1(x6) SCC Processor: #sccs: 0 #rules: 0 #arcs: 9/4 DPs: maxlist{2,#}(x,cons2(y,ys)) -> maxlist{2,#}(y,ys) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) le2(0(),y) -> true() le2(s1(x),0()) -> false() le2(s1(x),s1(y)) -> le2(x,y) maxlist2(x,cons2(y,ys)) -> if2(le2(x,y),maxlist2(y,ys)) maxlist2(x,nil()) -> x height1(node2(x,xs)) -> s1(maxlist2(0(),map2(height(),xs))) app(map1(x5),x6) -> map2(x5,x6) app(map(),x6) -> map1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(le1(x5),x6) -> le2(x5,x6) app(le(),x6) -> le1(x6) app(s(),x6) -> s1(x6) app(maxlist1(x5),x6) -> maxlist2(x5,x6) app(maxlist(),x6) -> maxlist1(x6) app(if1(x5),x6) -> if2(x5,x6) app(if(),x6) -> if1(x6) app(height(),x6) -> height1(x6) app(node1(x5),x6) -> node2(x5,x6) app(node(),x6) -> node1(x6) Subterm Criterion Processor: simple projection: pi(maxlist{2,#}) = 1 problem: DPs: TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) le2(0(),y) -> true() le2(s1(x),0()) -> false() le2(s1(x),s1(y)) -> le2(x,y) maxlist2(x,cons2(y,ys)) -> if2(le2(x,y),maxlist2(y,ys)) maxlist2(x,nil()) -> x height1(node2(x,xs)) -> s1(maxlist2(0(),map2(height(),xs))) app(map1(x5),x6) -> map2(x5,x6) app(map(),x6) -> map1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(le1(x5),x6) -> le2(x5,x6) app(le(),x6) -> le1(x6) app(s(),x6) -> s1(x6) app(maxlist1(x5),x6) -> maxlist2(x5,x6) app(maxlist(),x6) -> maxlist1(x6) app(if1(x5),x6) -> if2(x5,x6) app(if(),x6) -> if1(x6) app(height(),x6) -> height1(x6) app(node1(x5),x6) -> node2(x5,x6) app(node(),x6) -> node1(x6) Qed DPs: le{2,#}(s1(x),s1(y)) -> le{2,#}(x,y) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) le2(0(),y) -> true() le2(s1(x),0()) -> false() le2(s1(x),s1(y)) -> le2(x,y) maxlist2(x,cons2(y,ys)) -> if2(le2(x,y),maxlist2(y,ys)) maxlist2(x,nil()) -> x height1(node2(x,xs)) -> s1(maxlist2(0(),map2(height(),xs))) app(map1(x5),x6) -> map2(x5,x6) app(map(),x6) -> map1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(le1(x5),x6) -> le2(x5,x6) app(le(),x6) -> le1(x6) app(s(),x6) -> s1(x6) app(maxlist1(x5),x6) -> maxlist2(x5,x6) app(maxlist(),x6) -> maxlist1(x6) app(if1(x5),x6) -> if2(x5,x6) app(if(),x6) -> if1(x6) app(height(),x6) -> height1(x6) app(node1(x5),x6) -> node2(x5,x6) app(node(),x6) -> node1(x6) Subterm Criterion Processor: simple projection: pi(le{2,#}) = 1 problem: DPs: TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) le2(0(),y) -> true() le2(s1(x),0()) -> false() le2(s1(x),s1(y)) -> le2(x,y) maxlist2(x,cons2(y,ys)) -> if2(le2(x,y),maxlist2(y,ys)) maxlist2(x,nil()) -> x height1(node2(x,xs)) -> s1(maxlist2(0(),map2(height(),xs))) app(map1(x5),x6) -> map2(x5,x6) app(map(),x6) -> map1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(le1(x5),x6) -> le2(x5,x6) app(le(),x6) -> le1(x6) app(s(),x6) -> s1(x6) app(maxlist1(x5),x6) -> maxlist2(x5,x6) app(maxlist(),x6) -> maxlist1(x6) app(if1(x5),x6) -> if2(x5,x6) app(if(),x6) -> if1(x6) app(height(),x6) -> height1(x6) app(node1(x5),x6) -> node2(x5,x6) app(node(),x6) -> node1(x6) Qed