YES Problem: qsort(nil()) -> nil() qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y)))) lowers(x,nil()) -> nil() lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) greaters(x,nil()) -> nil() greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) Proof: DP Processor: DPs: qsort#(.(x,y)) -> greaters#(x,y) qsort#(.(x,y)) -> qsort#(greaters(x,y)) qsort#(.(x,y)) -> lowers#(x,y) qsort#(.(x,y)) -> qsort#(lowers(x,y)) lowers#(x,.(y,z)) -> lowers#(x,z) greaters#(x,.(y,z)) -> greaters#(x,z) TRS: qsort(nil()) -> nil() qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y)))) lowers(x,nil()) -> nil() lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) greaters(x,nil()) -> nil() greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) Usable Rule Processor: DPs: qsort#(.(x,y)) -> greaters#(x,y) qsort#(.(x,y)) -> qsort#(greaters(x,y)) qsort#(.(x,y)) -> lowers#(x,y) qsort#(.(x,y)) -> qsort#(lowers(x,y)) lowers#(x,.(y,z)) -> lowers#(x,z) greaters#(x,.(y,z)) -> greaters#(x,z) TRS: greaters(x,nil()) -> nil() greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) lowers(x,nil()) -> nil() lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) KBO Processor: argument filtering: pi(nil) = [] pi(.) = [0,1] pi(lowers) = [0,1] pi(greaters) = [] pi(<=) = [] pi(if) = [] pi(qsort#) = 0 pi(greaters#) = 1 pi(lowers#) = 1 usable rules: greaters(x,nil()) -> nil() greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) lowers(x,nil()) -> nil() lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) weight function: w0 = 1 w(lowers#) = w(greaters#) = w(qsort#) = w(if) = w(<=) = w(greaters) = w( lowers) = w(.) = w(nil) = 1 precedence: greaters# ~ qsort# ~ <= ~ greaters ~ . > lowers# ~ if ~ lowers ~ nil problem: DPs: TRS: greaters(x,nil()) -> nil() greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) lowers(x,nil()) -> nil() lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) Qed