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),app(id(),y))),app(s(),y))) app(id(),x) -> x app(id(),x) -> app(s(),app(s(),app(s(),x))) app(id(),app(p(),x)) -> app(id(),app(s(),app(id(),x))) 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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(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)) -> id{1,#}(y) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,id1(y)) div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,id1(y)),s1(y)) id{1,#}(p1(x)) -> id{1,#}(x) id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) 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) app#(id(),x5) -> id{1,#}(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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(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)) -> id{1,#}(y) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,id1(y)) div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,id1(y)),s1(y)) id{1,#}(p1(x)) -> id{1,#}(x) id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) 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) app#(id(),x5) -> id{1,#}(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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(x5) graph: id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) -> id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) -> id{1,#}(p1(x)) -> id{1,#}(x) id{1,#}(p1(x)) -> id{1,#}(x) -> id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) id{1,#}(p1(x)) -> id{1,#}(x) -> id{1,#}(p1(x)) -> id{1,#}(x) div{2,#}(s1(x),s1(y)) -> id{1,#}(y) -> id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) div{2,#}(s1(x),s1(y)) -> id{1,#}(y) -> id{1,#}(p1(x)) -> id{1,#}(x) div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,id1(y)),s1(y)) -> div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,id1(y)),s1(y)) div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,id1(y)),s1(y)) -> div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,id1(y)) div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,id1(y)),s1(y)) -> div{2,#}(s1(x),s1(y)) -> id{1,#}(y) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,id1(y)) -> minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,id1(y)) -> minus{2,#}(s1(x),s1(y)) -> p{1,#}(s1(x)) div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,id1(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,id1(y)),s1(y)) app#(div1(x4),x5) -> div{2,#}(x4,x5) -> div{2,#}(s1(x),s1(y)) -> minus{2,#}(x,id1(y)) app#(div1(x4),x5) -> div{2,#}(x4,x5) -> div{2,#}(s1(x),s1(y)) -> id{1,#}(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) app#(id(),x5) -> id{1,#}(x5) -> id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) app#(id(),x5) -> id{1,#}(x5) -> id{1,#}(p1(x)) -> id{1,#}(x) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(id(),x5) -> id{1,#}(x5) 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: 4 #rules: 7 #arcs: 32/225 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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(x5) SCC Processor: #sccs: 0 #rules: 0 #arcs: 5/1 DPs: div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,id1(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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(x5) Usable Rule Processor: DPs: div{2,#}(s1(x),s1(y)) -> div{2,#}(minus2(x,id1(y)),s1(y)) TRS: id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x KBO Processor: argument filtering: pi(0) = [] pi(minus2) = [0] pi(s1) = [0] pi(p1) = 0 pi(id1) = [] pi(div{2,#}) = 0 usable rules: minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x weight function: w0 = 1 w(div{2,#}) = w(id1) = w(p1) = w(s1) = w(0) = 1 w(minus2) = 0 precedence: div{2,#} ~ id1 ~ p1 ~ s1 ~ minus2 ~ 0 problem: DPs: TRS: id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) minus2(x,0()) -> x minus2(s1(x),s1(y)) -> minus2(p1(s1(x)),p1(s1(y))) p1(s1(x)) -> x 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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(x5) Usable Rule Processor: DPs: minus{2,#}(s1(x),s1(y)) -> minus{2,#}(p1(s1(x)),p1(s1(y))) TRS: p1(s1(x)) -> x Semantic Labeling Processor: dimension: 2 usable rules: interpretation: [0 1] [p1](x0) = [0 1]x0, [1 1] [1] [s1](x0) = [1 1]x0 + [0] labeled: minus{2,#} s1 usable (for model): minus{2,#} s1 p1 argument filtering: pi(s1) = 0 pi(p1) = 0 pi(minus{2,#}) = [] precedence: minus{2,#} ~ p1 ~ s1 problem: DPs: TRS: p1(s1(x)) -> x Qed DPs: id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) id{1,#}(p1(x)) -> id{1,#}(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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(x5) EDG Processor: DPs: id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) id{1,#}(p1(x)) -> id{1,#}(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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(x5) graph: id{1,#}(p1(x)) -> id{1,#}(x) -> id{1,#}(p1(x)) -> id{1,#}(x) id{1,#}(p1(x)) -> id{1,#}(x) -> id{1,#}(p1(x)) -> id{1,#}(s1(id1(x))) SCC Processor: #sccs: 1 #rules: 1 #arcs: 2/4 DPs: id{1,#}(p1(x)) -> id{1,#}(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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(x5) Subterm Criterion Processor: simple projection: pi(id{1,#}) = 0 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,id1(y)),s1(y))) id1(x) -> x id1(x) -> s1(s1(s1(x))) id1(p1(x)) -> id1(s1(id1(x))) 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) app(id(),x5) -> id1(x5) Qed