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(minus(),x),0()) -> x app(app(minus(),app(s(),x)),app(s(),y)) -> app(app(minus(),app(p(),app(s(),x))),app(p(),app(s(),y))) app(p(),app(s(),x)) -> x app(app(div(),0()),app(s(),y)) -> 0() app(app(div(),app(s(),x)),app(s(),y)) -> app(s(),app(app(div(),app(app(minus(),x),y)),app(s(),y))) Proof: Uncurry Processor: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x div2(0(),s1(y)) -> 0() div2(s1(x),s1(y)) -> s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) -> map2(x4,x5) app(map(),x5) -> map1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(minus1(x4),x5) -> minus2(x4,x5) app(minus(),x5) -> minus1(x5) app(s(),x5) -> s1(x5) app(p(),x5) -> p1(x5) app(div1(x4),x5) -> div2(x4,x5) app(div(),x5) -> div1(x5) DP Processor: DPs: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(y)) minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(x)) minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y) div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,y),s1(y)) app#(map1(x4),x5) -> map{2,#}(x4,x5) app#(minus1(x4),x5) -> minus{2,#}(x4,x5) app#(p(),x5) -> p{1,#}(x5) app#(div1(x4),x5) -> div{2,#}(x4,x5) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x div2(0(),s1(y)) -> 0() div2(s1(x),s1(y)) -> s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) -> map2(x4,x5) app(map(),x5) -> map1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(minus1(x4),x5) -> minus2(x4,x5) app(minus(),x5) -> minus1(x5) app(s(),x5) -> s1(x5) app(p(),x5) -> p1(x5) app(div1(x4),x5) -> div2(x4,x5) app(div(),x5) -> div1(x5) TDG Processor: DPs: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(y)) minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(x)) minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y) div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,y),s1(y)) app#(map1(x4),x5) -> map{2,#}(x4,x5) app#(minus1(x4),x5) -> minus{2,#}(x4,x5) app#(p(),x5) -> p{1,#}(x5) app#(div1(x4),x5) -> div{2,#}(x4,x5) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x div2(0(),s1(y)) -> 0() div2(s1(x),s1(y)) -> s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) -> map2(x4,x5) app(map(),x5) -> map1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(minus1(x4),x5) -> minus2(x4,x5) app(minus(),x5) -> minus1(x5) app(s(),x5) -> s1(x5) app(p(),x5) -> p1(x5) app(div1(x4),x5) -> div2(x4,x5) app(div(),x5) -> div1(x5) graph: div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,y),s1(y)) -> div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,y),s1(y)) div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,y),s1(y)) -> div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y) -> minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y) -> minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(x)) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y) -> minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(y)) minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) -> minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) -> minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(x)) minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) -> minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(y)) app#(div1(x4),x5) -> div{2,#}(x4,x5) -> div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,y),s1(y)) app#(div1(x4),x5) -> div{2,#}(x4,x5) -> div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,y) app#(minus1(x4),x5) -> minus{2,#}(x4,x5) -> minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) app#(minus1(x4),x5) -> minus{2,#}(x4,x5) -> minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(x)) app#(minus1(x4),x5) -> minus{2,#}(x4,x5) -> minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(y)) app#(map1(x4),x5) -> map{2,#}(x4,x5) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) app#(map1(x4),x5) -> map{2,#}(x4,x5) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(div1(x4),x5) -> div{2,#}(x4,x5) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(p(),x5) -> p{1,#}(x5) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(minus1(x4),x5) -> minus{2,#}(x4,x5) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(map1(x4),x5) -> map{2,#}(x4,x5) 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: 5 #arcs: 21/121 DPs: app#(map1(x4),x5) -> map{2,#}(x4,x5) map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x div2(0(),s1(y)) -> 0() div2(s1(x),s1(y)) -> s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) -> map2(x4,x5) app(map(),x5) -> map1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(minus1(x4),x5) -> minus2(x4,x5) app(minus(),x5) -> minus1(x5) app(s(),x5) -> s1(x5) app(p(),x5) -> p1(x5) app(div1(x4),x5) -> div2(x4,x5) app(div(),x5) -> div1(x5) Subterm Criterion Processor: simple projection: pi(map{2,#}) = 1 pi(app#) = 1 problem: DPs: app#(map1(x4),x5) -> map{2,#}(x4,x5) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x div2(0(),s1(y)) -> 0() div2(s1(x),s1(y)) -> s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) -> map2(x4,x5) app(map(),x5) -> map1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(minus1(x4),x5) -> minus2(x4,x5) app(minus(),x5) -> minus1(x5) app(s(),x5) -> s1(x5) app(p(),x5) -> p1(x5) app(div1(x4),x5) -> div2(x4,x5) app(div(),x5) -> div1(x5) SCC Processor: #sccs: 0 #rules: 0 #arcs: 5/1 DPs: div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,y),s1(y)) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x div2(0(),s1(y)) -> 0() div2(s1(x),s1(y)) -> s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) -> map2(x4,x5) app(map(),x5) -> map1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(minus1(x4),x5) -> minus2(x4,x5) app(minus(),x5) -> minus1(x5) app(s(),x5) -> s1(x5) app(p(),x5) -> p1(x5) app(div1(x4),x5) -> div2(x4,x5) app(div(),x5) -> div1(x5) Arctic Interpretation Processor: dimension: 1 interpretation: [div{2,#}](x0, x1) = x0, [div2](x0, x1) = x0, [div1](x0) = x0, [p1](x0) = x0, [s1](x0) = 1x0 + 0, [minus2](x0, x1) = x0, [minus1](x0) = x0, [cons2](x0, x1) = x0 + 0, [cons1](x0) = x0, [map2](x0, x1) = x0 + 1x1, [map1](x0) = x0, [div] = 5, [p] = 7, [s] = 0, [0] = 2, [minus] = 2, [cons] = 3, [nil] = 4, [app](x0, x1) = x0 + 1x1 + 0, [map] = 5 orientation: div{2,#}(s1(x),s1(y)) = 1x + 0 >= x = div{2,#}(minus2(x,y),s1(y)) map2(f,nil()) = f + 5 >= 4 = nil() map2(f,cons2(x,xs)) = f + 1x + 1 >= f + 1x + 0 = cons2(app(f,x),map2(f,xs)) minus2(x,0()) = x >= x = x minus2(s1(x),s1(y)) = 1x + 0 >= 1x + 0 = minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) = 1x + 0 >= x = x div2(0(),s1(y)) = 2 >= 2 = 0() div2(s1(x),s1(y)) = 1x + 0 >= 1x + 0 = s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) = x4 + 1x5 + 0 >= x4 + 1x5 = map2(x4,x5) app(map(),x5) = 1x5 + 5 >= x5 = map1(x5) app(cons1(x4),x5) = x4 + 1x5 + 0 >= x4 + 0 = cons2(x4,x5) app(cons(),x5) = 1x5 + 3 >= x5 = cons1(x5) app(minus1(x4),x5) = x4 + 1x5 + 0 >= x4 = minus2(x4,x5) app(minus(),x5) = 1x5 + 2 >= x5 = minus1(x5) app(s(),x5) = 1x5 + 0 >= 1x5 + 0 = s1(x5) app(p(),x5) = 1x5 + 7 >= x5 = p1(x5) app(div1(x4),x5) = x4 + 1x5 + 0 >= x4 = div2(x4,x5) app(div(),x5) = 1x5 + 5 >= x5 = div1(x5) problem: DPs: TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x div2(0(),s1(y)) -> 0() div2(s1(x),s1(y)) -> s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) -> map2(x4,x5) app(map(),x5) -> map1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(minus1(x4),x5) -> minus2(x4,x5) app(minus(),x5) -> minus1(x5) app(s(),x5) -> s1(x5) app(p(),x5) -> p1(x5) app(div1(x4),x5) -> div2(x4,x5) app(div(),x5) -> div1(x5) Qed DPs: minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x div2(0(),s1(y)) -> 0() div2(s1(x),s1(y)) -> s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) -> map2(x4,x5) app(map(),x5) -> map1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(minus1(x4),x5) -> minus2(x4,x5) app(minus(),x5) -> minus1(x5) app(s(),x5) -> s1(x5) app(p(),x5) -> p1(x5) app(div1(x4),x5) -> div2(x4,x5) app(div(),x5) -> div1(x5) Matrix Interpretation Processor: dim=1 interpretation: [minus{2,#}](x0, x1) = 1/2x0, [div2](x0, x1) = 5/2x0 + 2, [div1](x0) = 5/2x0 + 1, [p1](x0) = 1/2x0, [s1](x0) = 2x0 + 2, [minus2](x0, x1) = x0, [minus1](x0) = 2x0 + 1, [cons2](x0, x1) = 2, [cons1](x0) = 2x0 + 1, [map2](x0, x1) = 2, [map1](x0) = 1/2, [div] = 0, [p] = 2, [s] = 2, [0] = 1, [minus] = 3, [cons] = 5/2, [nil] = 0, [app](x0, x1) = x0 + 5/2x1 + 2, [map] = 7/2 orientation: minus{2,#}(s1(x),s1(y)) = x + 1 >= 1/2x + 1/2 = minus{2,#}(p1(s1(x)),p1(s1(y))) map2(f,nil()) = 2 >= 0 = nil() map2(f,cons2(x,xs)) = 2 >= 2 = cons2(app(f,x),map2(f,xs)) minus2(x,0()) = x >= x = x minus2(s1(x),s1(y)) = 2x + 2 >= x + 1 = minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) = x + 1 >= x = x div2(0(),s1(y)) = 9/2 >= 1 = 0() div2(s1(x),s1(y)) = 5x + 7 >= 5x + 6 = s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) = 5/2x5 + 5/2 >= 2 = map2(x4,x5) app(map(),x5) = 5/2x5 + 11/2 >= 1/2 = map1(x5) app(cons1(x4),x5) = 2x4 + 5/2x5 + 3 >= 2 = cons2(x4,x5) app(cons(),x5) = 5/2x5 + 9/2 >= 2x5 + 1 = cons1(x5) app(minus1(x4),x5) = 2x4 + 5/2x5 + 3 >= x4 = minus2(x4,x5) app(minus(),x5) = 5/2x5 + 5 >= 2x5 + 1 = minus1(x5) app(s(),x5) = 5/2x5 + 4 >= 2x5 + 2 = s1(x5) app(p(),x5) = 5/2x5 + 4 >= 1/2x5 = p1(x5) app(div1(x4),x5) = 5/2x4 + 5/2x5 + 3 >= 5/2x4 + 2 = div2(x4,x5) app(div(),x5) = 5/2x5 + 2 >= 5/2x5 + 1 = div1(x5) problem: DPs: TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x div2(0(),s1(y)) -> 0() div2(s1(x),s1(y)) -> s1(div2(minus2(x,y),s1(y))) app(map1(x4),x5) -> map2(x4,x5) app(map(),x5) -> map1(x5) app(cons1(x4),x5) -> cons2(x4,x5) app(cons(),x5) -> cons1(x5) app(minus1(x4),x5) -> minus2(x4,x5) app(minus(),x5) -> minus1(x5) app(s(),x5) -> s1(x5) app(p(),x5) -> p1(x5) app(div1(x4),x5) -> div2(x4,x5) app(div(),x5) -> div1(x5) Qed