YES We show the termination of the TRS R: 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))) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: qsort#(.(x,y)) -> qsort#(lowers(x,y)) p2: qsort#(.(x,y)) -> lowers#(x,y) p3: qsort#(.(x,y)) -> qsort#(greaters(x,y)) p4: qsort#(.(x,y)) -> greaters#(x,y) p5: lowers#(x,.(y,z)) -> lowers#(x,z) p6: greaters#(x,.(y,z)) -> greaters#(x,z) and R consists of: r1: qsort(nil()) -> nil() r2: qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y)))) r3: lowers(x,nil()) -> nil() r4: lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) r5: greaters(x,nil()) -> nil() r6: greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) The estimated dependency graph contains the following SCCs: {p1, p3} {p5} {p6} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: qsort#(.(x,y)) -> qsort#(lowers(x,y)) p2: qsort#(.(x,y)) -> qsort#(greaters(x,y)) and R consists of: r1: qsort(nil()) -> nil() r2: qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y)))) r3: lowers(x,nil()) -> nil() r4: lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) r5: greaters(x,nil()) -> nil() r6: greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) The set of usable rules consists of r3, r4, r5, r6 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: qsort#_A(x1) = x1 + (1,1) ._A(x1,x2) = ((1,1),(1,1)) x1 + ((0,0),(0,1)) x2 + (4,2) lowers_A(x1,x2) = ((1,1),(0,1)) x1 + (2,1) greaters_A(x1,x2) = ((1,0),(1,1)) x1 + ((0,0),(0,1)) x2 + (2,1) nil_A() = (1,1) if_A(x1,x2,x3) = (0,0) <=_A(x1,x2) = (3,2) precedence: nil > . = <= > lowers > greaters = if > qsort# partial status: pi(qsort#) = [1] pi(.) = [1] pi(lowers) = [1] pi(greaters) = [] pi(nil) = [] pi(if) = [] pi(<=) = [] The next rules are strictly ordered: p2 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: qsort#(.(x,y)) -> qsort#(lowers(x,y)) and R consists of: r1: qsort(nil()) -> nil() r2: qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y)))) r3: lowers(x,nil()) -> nil() r4: lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) r5: greaters(x,nil()) -> nil() r6: greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) The estimated dependency graph contains the following SCCs: {p1} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: qsort#(.(x,y)) -> qsort#(lowers(x,y)) and R consists of: r1: qsort(nil()) -> nil() r2: qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y)))) r3: lowers(x,nil()) -> nil() r4: lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) r5: greaters(x,nil()) -> nil() r6: greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) The set of usable rules consists of r3, r4 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: qsort#_A(x1) = x1 + (1,0) ._A(x1,x2) = ((1,1),(1,1)) x1 + ((0,1),(0,1)) x2 + (2,4) lowers_A(x1,x2) = ((0,0),(1,1)) x1 + ((0,1),(0,1)) x2 + (0,1) nil_A() = (1,2) if_A(x1,x2,x3) = x3 + (3,4) <=_A(x1,x2) = (3,5) precedence: qsort# = lowers = if > . = <= > nil partial status: pi(qsort#) = [1] pi(.) = [1] pi(lowers) = [] pi(nil) = [] pi(if) = [] pi(<=) = [] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: lowers#(x,.(y,z)) -> lowers#(x,z) and R consists of: r1: qsort(nil()) -> nil() r2: qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y)))) r3: lowers(x,nil()) -> nil() r4: lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) r5: greaters(x,nil()) -> nil() r6: greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: lowers#_A(x1,x2) = x2 + (0,1) ._A(x1,x2) = ((1,1),(1,1)) x1 + ((1,0),(1,1)) x2 + (1,1) precedence: . > lowers# partial status: pi(lowers#) = [2] pi(.) = [2] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: greaters#(x,.(y,z)) -> greaters#(x,z) and R consists of: r1: qsort(nil()) -> nil() r2: qsort(.(x,y)) -> ++(qsort(lowers(x,y)),.(x,qsort(greaters(x,y)))) r3: lowers(x,nil()) -> nil() r4: lowers(x,.(y,z)) -> if(<=(y,x),.(y,lowers(x,z)),lowers(x,z)) r5: greaters(x,nil()) -> nil() r6: greaters(x,.(y,z)) -> if(<=(y,x),greaters(x,z),.(y,greaters(x,z))) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: greaters#_A(x1,x2) = x2 + (0,1) ._A(x1,x2) = ((1,1),(1,1)) x1 + ((1,0),(1,1)) x2 + (1,1) precedence: . > greaters# partial status: pi(greaters#) = [2] pi(.) = [2] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains.