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(app(comp(),f),g),x) -> app(f,app(g,x)) app(twice(),f) -> app(app(comp(),f),f) Proof: Uncurry Processor: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) comp3(f,g,x) -> app(f,app(g,x)) twice1(f) -> comp2(f,f) 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(comp2(x5,x4),x6) -> comp3(x5,x4,x6) app(comp1(x5),x6) -> comp2(x5,x6) app(comp(),x6) -> comp1(x6) app(twice(),x6) -> twice1(x6) DP Processor: DPs: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) comp{3,#}(f,g,x) -> app#(g,x) comp{3,#}(f,g,x) -> app#(f,app(g,x)) app#(map1(x5),x6) -> map{2,#}(x5,x6) app#(comp2(x5,x4),x6) -> comp{3,#}(x5,x4,x6) app#(twice(),x6) -> twice{1,#}(x6) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) comp3(f,g,x) -> app(f,app(g,x)) twice1(f) -> comp2(f,f) 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(comp2(x5,x4),x6) -> comp3(x5,x4,x6) app(comp1(x5),x6) -> comp2(x5,x6) app(comp(),x6) -> comp1(x6) app(twice(),x6) -> twice1(x6) TDG Processor: DPs: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) comp{3,#}(f,g,x) -> app#(g,x) comp{3,#}(f,g,x) -> app#(f,app(g,x)) app#(map1(x5),x6) -> map{2,#}(x5,x6) app#(comp2(x5,x4),x6) -> comp{3,#}(x5,x4,x6) app#(twice(),x6) -> twice{1,#}(x6) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) comp3(f,g,x) -> app(f,app(g,x)) twice1(f) -> comp2(f,f) 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(comp2(x5,x4),x6) -> comp3(x5,x4,x6) app(comp1(x5),x6) -> comp2(x5,x6) app(comp(),x6) -> comp1(x6) app(twice(),x6) -> twice1(x6) graph: comp{3,#}(f,g,x) -> app#(g,x) -> app#(twice(),x6) -> twice{1,#}(x6) comp{3,#}(f,g,x) -> app#(g,x) -> app#(comp2(x5,x4),x6) -> comp{3,#}(x5,x4,x6) comp{3,#}(f,g,x) -> app#(g,x) -> app#(map1(x5),x6) -> map{2,#}(x5,x6) comp{3,#}(f,g,x) -> app#(f,app(g,x)) -> app#(twice(),x6) -> twice{1,#}(x6) comp{3,#}(f,g,x) -> app#(f,app(g,x)) -> app#(comp2(x5,x4),x6) -> comp{3,#}(x5,x4,x6) comp{3,#}(f,g,x) -> app#(f,app(g,x)) -> app#(map1(x5),x6) -> map{2,#}(x5,x6) app#(comp2(x5,x4),x6) -> comp{3,#}(x5,x4,x6) -> comp{3,#}(f,g,x) -> app#(f,app(g,x)) app#(comp2(x5,x4),x6) -> comp{3,#}(x5,x4,x6) -> comp{3,#}(f,g,x) -> app#(g,x) 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) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(twice(),x6) -> twice{1,#}(x6) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(comp2(x5,x4),x6) -> comp{3,#}(x5,x4,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: 1 #rules: 6 #arcs: 15/49 DPs: comp{3,#}(f,g,x) -> app#(g,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) app#(comp2(x5,x4),x6) -> comp{3,#}(x5,x4,x6) comp{3,#}(f,g,x) -> app#(f,app(g,x)) TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) comp3(f,g,x) -> app(f,app(g,x)) twice1(f) -> comp2(f,f) 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(comp2(x5,x4),x6) -> comp3(x5,x4,x6) app(comp1(x5),x6) -> comp2(x5,x6) app(comp(),x6) -> comp1(x6) app(twice(),x6) -> twice1(x6) Size-Change Termination Processor: DPs: TRS: map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) comp3(f,g,x) -> app(f,app(g,x)) twice1(f) -> comp2(f,f) 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(comp2(x5,x4),x6) -> comp3(x5,x4,x6) app(comp1(x5),x6) -> comp2(x5,x6) app(comp(),x6) -> comp1(x6) app(twice(),x6) -> twice1(x6) The DP: comp{3,#}(f,g,x) -> app#(g,x) has the edges: 1 >= 0 2 >= 1 The DP: app#(map1(x5),x6) -> map{2,#}(x5,x6) has the edges: 0 > 0 1 >= 1 The DP: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) has the edges: 0 >= 0 1 > 1 The DP: map{2,#}(f,cons2(x,xs)) -> app#(f,x) has the edges: 0 >= 0 1 > 1 The DP: app#(comp2(x5,x4),x6) -> comp{3,#}(x5,x4,x6) has the edges: 0 > 1 0 > 0 1 >= 2 The DP: comp{3,#}(f,g,x) -> app#(f,app(g,x)) has the edges: 0 >= 0 Qed