YES 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))) max/plus interpretations on N: qsort_A(x1) = max{10, -9 + x1} qsort#_A(x1) = max{22, 24 + x1} nil_A = 10 nil#_A = 46 ._A(x1,x2) = max{48, -1, -1} .#_A(x1,x2) = max{44, 45, 42} ++_A(x1,x2) = max{11, 13 + x1, 11} ++#_A(x1,x2) = max{43, 62 + x1, 72} lowers_A(x1,x2) = max{7, 19, 6} lowers#_A(x1,x2) = max{45, 21, 41} greaters_A(x1,x2) = max{19, 8, 9} greaters#_A(x1,x2) = max{47, 1, 49} if_A(x1,x2,x3) = max{19, 6, 8, 9} if#_A(x1,x2,x3) = max{20, 0, -8 + x2, 1 + x3} <=_A(x1,x2) = max{1, 1 + x1, 1 + x2} <=#_A(x1,x2) = max{0, 20, 0} precedence: qsort > lowers = greaters > nil = . = if = <= > ++