YES Problem: app(app(neq(),0()),0()) -> false() app(app(neq(),0()),app(s(),y)) -> true() app(app(neq(),app(s(),x)),0()) -> true() app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) app(app(filter(),f),nil()) -> nil() app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) nonzero() -> app(filter(),app(neq(),0())) Proof: Uncurry Processor: neq2(0(),0()) -> false() neq2(0(),s1(y)) -> true() neq2(s1(x),0()) -> true() neq2(s1(x),s1(y)) -> neq2(x,y) filter2(f,nil()) -> nil() filter2(f,cons2(y,ys)) -> filtersub3(app(f,y),f,cons2(y,ys)) filtersub3(true(),f,cons2(y,ys)) -> cons2(y,filter2(f,ys)) filtersub3(false(),f,cons2(y,ys)) -> filter2(f,ys) nonzero() -> filter1(neq1(0())) app(neq1(x5),x6) -> neq2(x5,x6) app(neq(),x6) -> neq1(x6) app(s(),x6) -> s1(x6) app(filter1(x5),x6) -> filter2(x5,x6) app(filter(),x6) -> filter1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(filtersub2(x5,x4),x6) -> filtersub3(x5,x4,x6) app(filtersub1(x5),x6) -> filtersub2(x5,x6) app(filtersub(),x6) -> filtersub1(x6) DP Processor: DPs: neq{2,#}(s1(x),s1(y)) -> neq{2,#}(x,y) filter{2,#}(f,cons2(y,ys)) -> app#(f,y) filter{2,#}(f,cons2(y,ys)) -> filtersub{3,#}(app(f,y),f,cons2(y,ys)) filtersub{3,#}(true(),f,cons2(y,ys)) -> filter{2,#}(f,ys) filtersub{3,#}(false(),f,cons2(y,ys)) -> filter{2,#}(f,ys) app#(neq1(x5),x6) -> neq{2,#}(x5,x6) app#(filter1(x5),x6) -> filter{2,#}(x5,x6) app#(filtersub2(x5,x4),x6) -> filtersub{3,#}(x5,x4,x6) TRS: neq2(0(),0()) -> false() neq2(0(),s1(y)) -> true() neq2(s1(x),0()) -> true() neq2(s1(x),s1(y)) -> neq2(x,y) filter2(f,nil()) -> nil() filter2(f,cons2(y,ys)) -> filtersub3(app(f,y),f,cons2(y,ys)) filtersub3(true(),f,cons2(y,ys)) -> cons2(y,filter2(f,ys)) filtersub3(false(),f,cons2(y,ys)) -> filter2(f,ys) nonzero() -> filter1(neq1(0())) app(neq1(x5),x6) -> neq2(x5,x6) app(neq(),x6) -> neq1(x6) app(s(),x6) -> s1(x6) app(filter1(x5),x6) -> filter2(x5,x6) app(filter(),x6) -> filter1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(filtersub2(x5,x4),x6) -> filtersub3(x5,x4,x6) app(filtersub1(x5),x6) -> filtersub2(x5,x6) app(filtersub(),x6) -> filtersub1(x6) TDG Processor: DPs: neq{2,#}(s1(x),s1(y)) -> neq{2,#}(x,y) filter{2,#}(f,cons2(y,ys)) -> app#(f,y) filter{2,#}(f,cons2(y,ys)) -> filtersub{3,#}(app(f,y),f,cons2(y,ys)) filtersub{3,#}(true(),f,cons2(y,ys)) -> filter{2,#}(f,ys) filtersub{3,#}(false(),f,cons2(y,ys)) -> filter{2,#}(f,ys) app#(neq1(x5),x6) -> neq{2,#}(x5,x6) app#(filter1(x5),x6) -> filter{2,#}(x5,x6) app#(filtersub2(x5,x4),x6) -> filtersub{3,#}(x5,x4,x6) TRS: neq2(0(),0()) -> false() neq2(0(),s1(y)) -> true() neq2(s1(x),0()) -> true() neq2(s1(x),s1(y)) -> neq2(x,y) filter2(f,nil()) -> nil() filter2(f,cons2(y,ys)) -> filtersub3(app(f,y),f,cons2(y,ys)) filtersub3(true(),f,cons2(y,ys)) -> cons2(y,filter2(f,ys)) filtersub3(false(),f,cons2(y,ys)) -> filter2(f,ys) nonzero() -> filter1(neq1(0())) app(neq1(x5),x6) -> neq2(x5,x6) app(neq(),x6) -> neq1(x6) app(s(),x6) -> s1(x6) app(filter1(x5),x6) -> filter2(x5,x6) app(filter(),x6) -> filter1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(filtersub2(x5,x4),x6) -> filtersub3(x5,x4,x6) app(filtersub1(x5),x6) -> filtersub2(x5,x6) app(filtersub(),x6) -> filtersub1(x6) graph: filtersub{3,#}(true(),f,cons2(y,ys)) -> filter{2,#}(f,ys) -> filter{2,#}(f,cons2(y,ys)) -> filtersub{3,#}(app(f,y),f,cons2(y,ys)) filtersub{3,#}(true(),f,cons2(y,ys)) -> filter{2,#}(f,ys) -> filter{2,#}(f,cons2(y,ys)) -> app#(f,y) filtersub{3,#}(false(),f,cons2(y,ys)) -> filter{2,#}(f,ys) -> filter{2,#}(f,cons2(y,ys)) -> filtersub{3,#}(app(f,y),f,cons2(y,ys)) filtersub{3,#}(false(),f,cons2(y,ys)) -> filter{2,#}(f,ys) -> filter{2,#}(f,cons2(y,ys)) -> app#(f,y) app#(filtersub2(x5,x4),x6) -> filtersub{3,#}(x5,x4,x6) -> filtersub{3,#}(false(),f,cons2(y,ys)) -> filter{2,#}(f,ys) app#(filtersub2(x5,x4),x6) -> filtersub{3,#}(x5,x4,x6) -> filtersub{3,#}(true(),f,cons2(y,ys)) -> filter{2,#}(f,ys) app#(filter1(x5),x6) -> filter{2,#}(x5,x6) -> filter{2,#}(f,cons2(y,ys)) -> filtersub{3,#}(app(f,y),f,cons2(y,ys)) app#(filter1(x5),x6) -> filter{2,#}(x5,x6) -> filter{2,#}(f,cons2(y,ys)) -> app#(f,y) app#(neq1(x5),x6) -> neq{2,#}(x5,x6) -> neq{2,#}(s1(x),s1(y)) -> neq{2,#}(x,y) filter{2,#}(f,cons2(y,ys)) -> filtersub{3,#}(app(f,y),f,cons2(y,ys)) -> filtersub{3,#}(false(),f,cons2(y,ys)) -> filter{2,#}(f,ys) filter{2,#}(f,cons2(y,ys)) -> filtersub{3,#}(app(f,y),f,cons2(y,ys)) -> filtersub{3,#}(true(),f,cons2(y,ys)) -> filter{2,#}(f,ys) filter{2,#}(f,cons2(y,ys)) -> app#(f,y) -> app#(filtersub2(x5,x4),x6) -> filtersub{3,#}(x5,x4,x6) filter{2,#}(f,cons2(y,ys)) -> app#(f,y) -> app#(filter1(x5),x6) -> filter{2,#}(x5,x6) filter{2,#}(f,cons2(y,ys)) -> app#(f,y) -> app#(neq1(x5),x6) -> neq{2,#}(x5,x6) neq{2,#}(s1(x),s1(y)) -> neq{2,#}(x,y) -> neq{2,#}(s1(x),s1(y)) -> neq{2,#}(x,y) SCC Processor: #sccs: 2 #rules: 7 #arcs: 15/64 DPs: filtersub{3,#}(true(),f,cons2(y,ys)) -> filter{2,#}(f,ys) filter{2,#}(f,cons2(y,ys)) -> app#(f,y) app#(filter1(x5),x6) -> filter{2,#}(x5,x6) filter{2,#}(f,cons2(y,ys)) -> filtersub{3,#}(app(f,y),f,cons2(y,ys)) filtersub{3,#}(false(),f,cons2(y,ys)) -> filter{2,#}(f,ys) app#(filtersub2(x5,x4),x6) -> filtersub{3,#}(x5,x4,x6) TRS: neq2(0(),0()) -> false() neq2(0(),s1(y)) -> true() neq2(s1(x),0()) -> true() neq2(s1(x),s1(y)) -> neq2(x,y) filter2(f,nil()) -> nil() filter2(f,cons2(y,ys)) -> filtersub3(app(f,y),f,cons2(y,ys)) filtersub3(true(),f,cons2(y,ys)) -> cons2(y,filter2(f,ys)) filtersub3(false(),f,cons2(y,ys)) -> filter2(f,ys) nonzero() -> filter1(neq1(0())) app(neq1(x5),x6) -> neq2(x5,x6) app(neq(),x6) -> neq1(x6) app(s(),x6) -> s1(x6) app(filter1(x5),x6) -> filter2(x5,x6) app(filter(),x6) -> filter1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(filtersub2(x5,x4),x6) -> filtersub3(x5,x4,x6) app(filtersub1(x5),x6) -> filtersub2(x5,x6) app(filtersub(),x6) -> filtersub1(x6) Subterm Criterion Processor: simple projection: pi(filter{2,#}) = 1 pi(app#) = 1 pi(filtersub{3,#}) = 2 problem: DPs: app#(filter1(x5),x6) -> filter{2,#}(x5,x6) filter{2,#}(f,cons2(y,ys)) -> filtersub{3,#}(app(f,y),f,cons2(y,ys)) app#(filtersub2(x5,x4),x6) -> filtersub{3,#}(x5,x4,x6) TRS: neq2(0(),0()) -> false() neq2(0(),s1(y)) -> true() neq2(s1(x),0()) -> true() neq2(s1(x),s1(y)) -> neq2(x,y) filter2(f,nil()) -> nil() filter2(f,cons2(y,ys)) -> filtersub3(app(f,y),f,cons2(y,ys)) filtersub3(true(),f,cons2(y,ys)) -> cons2(y,filter2(f,ys)) filtersub3(false(),f,cons2(y,ys)) -> filter2(f,ys) nonzero() -> filter1(neq1(0())) app(neq1(x5),x6) -> neq2(x5,x6) app(neq(),x6) -> neq1(x6) app(s(),x6) -> s1(x6) app(filter1(x5),x6) -> filter2(x5,x6) app(filter(),x6) -> filter1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(filtersub2(x5,x4),x6) -> filtersub3(x5,x4,x6) app(filtersub1(x5),x6) -> filtersub2(x5,x6) app(filtersub(),x6) -> filtersub1(x6) SCC Processor: #sccs: 0 #rules: 0 #arcs: 12/9 DPs: neq{2,#}(s1(x),s1(y)) -> neq{2,#}(x,y) TRS: neq2(0(),0()) -> false() neq2(0(),s1(y)) -> true() neq2(s1(x),0()) -> true() neq2(s1(x),s1(y)) -> neq2(x,y) filter2(f,nil()) -> nil() filter2(f,cons2(y,ys)) -> filtersub3(app(f,y),f,cons2(y,ys)) filtersub3(true(),f,cons2(y,ys)) -> cons2(y,filter2(f,ys)) filtersub3(false(),f,cons2(y,ys)) -> filter2(f,ys) nonzero() -> filter1(neq1(0())) app(neq1(x5),x6) -> neq2(x5,x6) app(neq(),x6) -> neq1(x6) app(s(),x6) -> s1(x6) app(filter1(x5),x6) -> filter2(x5,x6) app(filter(),x6) -> filter1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(filtersub2(x5,x4),x6) -> filtersub3(x5,x4,x6) app(filtersub1(x5),x6) -> filtersub2(x5,x6) app(filtersub(),x6) -> filtersub1(x6) Subterm Criterion Processor: simple projection: pi(neq{2,#}) = 1 problem: DPs: TRS: neq2(0(),0()) -> false() neq2(0(),s1(y)) -> true() neq2(s1(x),0()) -> true() neq2(s1(x),s1(y)) -> neq2(x,y) filter2(f,nil()) -> nil() filter2(f,cons2(y,ys)) -> filtersub3(app(f,y),f,cons2(y,ys)) filtersub3(true(),f,cons2(y,ys)) -> cons2(y,filter2(f,ys)) filtersub3(false(),f,cons2(y,ys)) -> filter2(f,ys) nonzero() -> filter1(neq1(0())) app(neq1(x5),x6) -> neq2(x5,x6) app(neq(),x6) -> neq1(x6) app(s(),x6) -> s1(x6) app(filter1(x5),x6) -> filter2(x5,x6) app(filter(),x6) -> filter1(x6) app(cons1(x5),x6) -> cons2(x5,x6) app(cons(),x6) -> cons1(x6) app(filtersub2(x5,x4),x6) -> filtersub3(x5,x4,x6) app(filtersub1(x5),x6) -> filtersub2(x5,x6) app(filtersub(),x6) -> filtersub1(x6) Qed