YES Problem: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,y) -> if(le(x,y),x,y) if(true(),x,y) -> 0() if(false(),x,y) -> s(minus(p(x),y)) Proof: DP Processor: DPs: le#(s(x),s(y)) -> le#(x,y) minus#(x,y) -> le#(x,y) minus#(x,y) -> if#(le(x,y),x,y) if#(false(),x,y) -> p#(x) if#(false(),x,y) -> minus#(p(x),y) TRS: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,y) -> if(le(x,y),x,y) if(true(),x,y) -> 0() if(false(),x,y) -> s(minus(p(x),y)) TDG Processor: DPs: le#(s(x),s(y)) -> le#(x,y) minus#(x,y) -> le#(x,y) minus#(x,y) -> if#(le(x,y),x,y) if#(false(),x,y) -> p#(x) if#(false(),x,y) -> minus#(p(x),y) TRS: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,y) -> if(le(x,y),x,y) if(true(),x,y) -> 0() if(false(),x,y) -> s(minus(p(x),y)) graph: if#(false(),x,y) -> minus#(p(x),y) -> minus#(x,y) -> if#(le(x,y),x,y) if#(false(),x,y) -> minus#(p(x),y) -> minus#(x,y) -> le#(x,y) minus#(x,y) -> if#(le(x,y),x,y) -> if#(false(),x,y) -> minus#(p(x),y) minus#(x,y) -> if#(le(x,y),x,y) -> if#(false(),x,y) -> p#(x) minus#(x,y) -> le#(x,y) -> le#(s(x),s(y)) -> le#(x,y) le#(s(x),s(y)) -> le#(x,y) -> le#(s(x),s(y)) -> le#(x,y) SCC Processor: #sccs: 2 #rules: 3 #arcs: 6/25 DPs: if#(false(),x,y) -> minus#(p(x),y) minus#(x,y) -> if#(le(x,y),x,y) TRS: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,y) -> if(le(x,y),x,y) if(true(),x,y) -> 0() if(false(),x,y) -> s(minus(p(x),y)) Usable Rule Processor: DPs: if#(false(),x,y) -> minus#(p(x),y) minus#(x,y) -> if#(le(x,y),x,y) TRS: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) Matrix Interpretation Processor: dim=1 usable rules: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) interpretation: [true] = 0, [p](x0) = 1/2x0, [le](x0, x1) = x0, [false] = 1, [minus#](x0, x1) = x0 + 1/2, [0] = 0, [if#](x0, x1, x2) = 1/2x0 + 1/2x1, [s](x0) = 2x0 + 1 orientation: if#(false(),x,y) = 1/2x + 1/2 >= 1/2x + 1/2 = minus#(p(x),y) minus#(x,y) = x + 1/2 >= x = if#(le(x,y),x,y) p(0()) = 0 >= 0 = 0() p(s(x)) = x + 1/2 >= x = x le(0(),y) = 0 >= 0 = true() le(s(x),0()) = 2x + 1 >= 1 = false() le(s(x),s(y)) = 2x + 1 >= x = le(x,y) problem: DPs: if#(false(),x,y) -> minus#(p(x),y) TRS: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) Restore Modifier: DPs: if#(false(),x,y) -> minus#(p(x),y) TRS: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,y) -> if(le(x,y),x,y) if(true(),x,y) -> 0() if(false(),x,y) -> s(minus(p(x),y)) SCC Processor: #sccs: 0 #rules: 0 #arcs: 2/1 DPs: le#(s(x),s(y)) -> le#(x,y) TRS: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,y) -> if(le(x,y),x,y) if(true(),x,y) -> 0() if(false(),x,y) -> s(minus(p(x),y)) Subterm Criterion Processor: simple projection: pi(le#) = 0 problem: DPs: TRS: p(0()) -> 0() p(s(x)) -> x le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,y) -> if(le(x,y),x,y) if(true(),x,y) -> 0() if(false(),x,y) -> s(minus(p(x),y)) Qed