Input TRS: 1: minus(x,|0|()) -> x 2: minus(s(x),s(y)) -> minus(x,y) 3: quot(|0|(),s(y)) -> |0|() 4: quot(s(x),s(y)) -> s(quot(minus(x,y),s(y))) 5: le(|0|(),y) -> true() 6: le(s(x),|0|()) -> false() 7: le(s(x),s(y)) -> le(x,y) 8: app(nil(),y) -> y 9: app(add(n,x),y) -> add(n,app(x,y)) 10: low(n,nil()) -> nil() 11: low(n,add(m,x)) -> if_low(le(m,n),n,add(m,x)) 12: if_low(true(),n,add(m,x)) -> add(m,low(n,x)) 13: if_low(false(),n,add(m,x)) -> low(n,x) 14: high(n,nil()) -> nil() 15: high(n,add(m,x)) -> if_high(le(m,n),n,add(m,x)) 16: if_high(true(),n,add(m,x)) -> high(n,x) 17: if_high(false(),n,add(m,x)) -> add(m,high(n,x)) 18: quicksort(nil()) -> nil() 19: quicksort(add(n,x)) -> app(quicksort(low(n,x)),add(n,quicksort(high(n,x)))) 20: rand(x) ->= x 21: rand(x) ->= rand(s(x)) Number of strict rules: 19 Direct Order(PosReal,>,Poly) ... failed. Freezing ... failed. Dependency Pairs: #1: #minus(s(x),s(y)) -> #minus(x,y) #2: #if_low(false(),n,add(m,x)) -> #low(n,x) #3: #app(add(n,x),y) -> #app(x,y) #4: #low(n,add(m,x)) -> #if_low(le(m,n),n,add(m,x)) #5: #low(n,add(m,x)) -> #le(m,n) #6: #if_low(true(),n,add(m,x)) -> #low(n,x) #7: #le(s(x),s(y)) -> #le(x,y) #8: #if_high(false(),n,add(m,x)) -> #high(n,x) #9: #quicksort(add(n,x)) -> #app(quicksort(low(n,x)),add(n,quicksort(high(n,x)))) #10: #quicksort(add(n,x)) -> #quicksort(low(n,x)) #11: #quicksort(add(n,x)) -> #low(n,x) #12: #quicksort(add(n,x)) -> #quicksort(high(n,x)) #13: #quicksort(add(n,x)) -> #high(n,x) #14: #if_high(true(),n,add(m,x)) -> #high(n,x) #15: #high(n,add(m,x)) -> #if_high(le(m,n),n,add(m,x)) #16: #high(n,add(m,x)) -> #le(m,n) #17: #quot(s(x),s(y)) -> #quot(minus(x,y),s(y)) #18: #quot(s(x),s(y)) -> #minus(x,y) Number of SCCs: 7, DPs: 12, edges: 16 SCC { #7 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... QWPOpS(PosReal,>,MaxSum)... succeeded. |0|() weight: (/ 1 4) status: [] precedence above: false le(x1,x2) weight: max{0, (/ 1 2) + x2} status: [x2] precedence above: false true s(x1) weight: x1 status: [x1] precedence above: #le quot #le(x1,x2) weight: x2 status: [x2] precedence above: s quot minus(x1,x2) weight: max{0, x1} status: x1 if_high(x1,x2,x3) weight: 0 status: [] precedence above: le false quicksort true high nil low add if_low app #quicksort(x1) weight: x1 status: [] precedence above: #high(x1,x2) weight: max{0, (/ 1 8) + x2} status: [x2] precedence above: false() weight: (/ 1 8) status: [] precedence above: #if_high(x1,x2,x3) weight: max{(/ 1 8) + x3, (/ 1 8) + x2, (/ 1 8) + x1} status: [x2,x1,x3] precedence above: quicksort(x1) weight: (/ 1 4) status: [] precedence above: le false true nil low add if_low app true() weight: (/ 3 8) status: [] precedence above: rand(x1) weight: (/ 1 8) + x1 status: [] precedence above: quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: s #le high(x1,x2) weight: 0 status: [] precedence above: le if_high false quicksort true nil low add if_low app nil() weight: 0 status: [] precedence above: #app(x1,x2) weight: (/ 1 8) + x2 + x1 status: [x2,x1] precedence above: #minus(x1,x2) weight: (/ 1 8) + x2 + x1 status: [x1,x2] precedence above: low(x1,x2) weight: max{0, (/ 5 8) + x1} status: [x1] precedence above: le false quicksort true nil add if_low app add(x1,x2) weight: 0 status: [] precedence above: le false quicksort true nil low if_low app #quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: if_low(x1,x2,x3) weight: max{0, (/ 5 8) + x2, x1} status: [x2] precedence above: le false quicksort true nil low add app #if_low(x1,x2,x3) weight: max{(/ 1 8) + x3, (/ 1 8) + x2, (/ 1 8) + x1} status: [x1,x2,x3] precedence above: #low(x1,x2) weight: max{0, x1} status: [x1] precedence above: app(x1,x2) weight: max{0, (/ 1 8) + x2} status: [] precedence above: le false quicksort true nil low add if_low Removed DPs: #7 Number of SCCs: 6, DPs: 11, edges: 15 SCC { #3 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. |0|() status: [] precedence above: false le(x1,x2) status: [] precedence above: false true nil #app s(x1) status: x1 #le(x1,x2) status: [] precedence above: minus(x1,x2) status: [x1] precedence above: |0| s false quot if_high(x1,x2,x3) status: [x3] precedence above: le false true high nil #app low add if_low #quicksort(x1) status: [] precedence above: #high(x1,x2) status: [x1] precedence above: false() status: [] precedence above: #if_high(x1,x2,x3) status: [x1,x3,x2] precedence above: quicksort(x1) status: [x1] precedence above: le if_high false true high nil #app low add if_low app true() status: [] precedence above: rand(x1) status: [x1] precedence above: quot(x1,x2) status: [] precedence above: |0| s false high(x1,x2) status: [x2] precedence above: le if_high false true nil #app low add if_low nil() status: [] precedence above: #app(x1,x2) status: [x1] precedence above: #minus(x1,x2) status: [x2] precedence above: low(x1,x2) status: [x2] precedence above: le if_high false true high nil #app add if_low add(x1,x2) status: [x2,x1] precedence above: le if_high false true high nil #app low if_low #quot(x1,x2) status: [x1,x2] precedence above: if_low(x1,x2,x3) status: [x3] precedence above: le if_high false true high nil #app low add #if_low(x1,x2,x3) status: [] precedence above: #low(x1,x2) status: [x2] precedence above: app(x1,x2) status: [x2,x1] precedence above: le if_high false true high nil #app low add if_low Removed DPs: #3 Number of SCCs: 5, DPs: 10, edges: 14 SCC { #1 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... QWPOpS(PosReal,>,MaxSum)... succeeded. |0|() weight: (/ 1 4) status: [] precedence above: false le(x1,x2) weight: max{0, (/ 1 2) + x2} status: [x2] precedence above: false true s(x1) weight: x1 status: [x1] precedence above: #le quot #le(x1,x2) weight: x2 status: [x2] precedence above: s quot minus(x1,x2) weight: max{0, x1} status: x1 if_high(x1,x2,x3) weight: 0 status: [] precedence above: le false quicksort true high nil low add if_low app #quicksort(x1) weight: x1 status: [] precedence above: #high(x1,x2) weight: max{0, (/ 1 8) + x2} status: [x2] precedence above: false() weight: (/ 1 8) status: [] precedence above: #if_high(x1,x2,x3) weight: max{(/ 1 8) + x3, (/ 1 8) + x2, (/ 1 8) + x1} status: [x2,x1,x3] precedence above: quicksort(x1) weight: (/ 1 4) status: [] precedence above: le false true nil low add if_low app true() weight: (/ 3 8) status: [] precedence above: rand(x1) weight: (/ 1 8) + x1 status: [] precedence above: quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: s #le high(x1,x2) weight: 0 status: [] precedence above: le if_high false quicksort true nil low add if_low app nil() weight: 0 status: [] precedence above: #app(x1,x2) weight: (/ 1 8) + x2 + x1 status: [x2,x1] precedence above: #minus(x1,x2) weight: x2 status: [x2] precedence above: low(x1,x2) weight: max{0, (/ 5 8) + x1} status: [x1] precedence above: le false quicksort true nil add if_low app add(x1,x2) weight: 0 status: [] precedence above: le false quicksort true nil low if_low app #quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: if_low(x1,x2,x3) weight: max{0, (/ 5 8) + x2, x1} status: [x2] precedence above: le false quicksort true nil low add app #if_low(x1,x2,x3) weight: max{(/ 1 8) + x3, (/ 1 8) + x2, (/ 1 8) + x1} status: [x1,x2,x3] precedence above: #low(x1,x2) weight: max{0, x1} status: [x1] precedence above: app(x1,x2) weight: max{0, (/ 1 8) + x2} status: [] precedence above: le false quicksort true nil low add if_low Removed DPs: #1 Number of SCCs: 4, DPs: 9, edges: 13 SCC { #17 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... QWPOpS(PosReal,>,MaxSum)... succeeded. |0|() weight: (/ 1 4) status: [] precedence above: false le(x1,x2) weight: max{0, (/ 1 2) + x2} status: [x2] precedence above: false true s(x1) weight: x1 status: [x1] precedence above: #le minus quot #le(x1,x2) weight: x2 status: [x2] precedence above: s minus quot minus(x1,x2) weight: max{0, x1} status: x1 if_high(x1,x2,x3) weight: 0 status: [] precedence above: le false quicksort true high nil low add if_low app #quicksort(x1) weight: x1 status: [] precedence above: #high(x1,x2) weight: max{0, (/ 1 8) + x2} status: [x2] precedence above: false() weight: (/ 1 8) status: [] precedence above: #if_high(x1,x2,x3) weight: max{(/ 1 8) + x3, (/ 1 8) + x2, (/ 1 8) + x1} status: [x2,x1,x3] precedence above: quicksort(x1) weight: (/ 1 4) status: [] precedence above: le false true nil low add if_low app true() weight: (/ 3 8) status: [] precedence above: rand(x1) weight: (/ 1 8) + x1 status: [] precedence above: quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: s #le minus high(x1,x2) weight: 0 status: [] precedence above: le if_high false quicksort true nil low add if_low app nil() weight: 0 status: [] precedence above: #app(x1,x2) weight: (/ 1 8) + x2 + x1 status: [x2,x1] precedence above: #minus(x1,x2) weight: x2 status: [x2] precedence above: low(x1,x2) weight: max{0, (/ 5 8) + x1} status: [x1] precedence above: le false quicksort true nil add if_low app add(x1,x2) weight: 0 status: [] precedence above: le false quicksort true nil low if_low app #quot(x1,x2) weight: max{(/ 1 4) + x2, (/ 1 8) + x1} status: [x2,x1] precedence above: s #le minus quot if_low(x1,x2,x3) weight: max{0, (/ 5 8) + x2, x1} status: [x2] precedence above: le false quicksort true nil low add app #if_low(x1,x2,x3) weight: max{(/ 1 8) + x3, (/ 1 8) + x2, (/ 1 8) + x1} status: [x1,x2,x3] precedence above: #low(x1,x2) weight: max{0, x1} status: [x1] precedence above: app(x1,x2) weight: max{0, (/ 1 8) + x2} status: [] precedence above: le false quicksort true nil low add if_low Removed DPs: #17 Number of SCCs: 3, DPs: 8, edges: 12 SCC { #10 #12 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. |0|() status: [] precedence above: false le(x1,x2) status: [] precedence above: false true nil #app s(x1) status: x1 #le(x1,x2) status: [] precedence above: minus(x1,x2) status: x1 if_high(x1,x2,x3) status: [x3] precedence above: le false true high nil #app low add if_low #quicksort(x1) status: [x1] precedence above: #high(x1,x2) status: [x1] precedence above: false() status: [] precedence above: #if_high(x1,x2,x3) status: [x1,x3,x2] precedence above: quicksort(x1) status: [x1] precedence above: le if_high false true high nil #app low add if_low app true() status: [] precedence above: rand(x1) status: [x1] precedence above: quot(x1,x2) status: x1 high(x1,x2) status: [x2] precedence above: le if_high false true nil #app low add if_low nil() status: [] precedence above: #app(x1,x2) status: [x1] precedence above: #minus(x1,x2) status: [] precedence above: low(x1,x2) status: [x2] precedence above: le if_high false true high nil #app add if_low add(x1,x2) status: [x2,x1] precedence above: le if_high false true high nil #app low if_low #quot(x1,x2) status: [] precedence above: if_low(x1,x2,x3) status: [x3] precedence above: le if_high false true high nil #app low add #if_low(x1,x2,x3) status: [] precedence above: #low(x1,x2) status: [x2] precedence above: app(x1,x2) status: [x2,x1] precedence above: le if_high false true high nil #app low add if_low Removed DPs: #10 #12 Number of SCCs: 2, DPs: 6, edges: 8 SCC { #2 #4 #6 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. |0|() status: [] precedence above: false le(x1,x2) status: [] precedence above: false true nil #app s(x1) status: x1 #le(x1,x2) status: [] precedence above: minus(x1,x2) status: x1 if_high(x1,x2,x3) status: [x3] precedence above: le false true high nil #app low add if_low #if_low #low #quicksort(x1) status: [x1] precedence above: #high(x1,x2) status: [x1] precedence above: false() status: [] precedence above: #if_high(x1,x2,x3) status: [x1,x3,x2] precedence above: quicksort(x1) status: [x1] precedence above: le if_high false true high nil #app low add if_low #if_low #low app true() status: [] precedence above: rand(x1) status: [x1] precedence above: quot(x1,x2) status: x1 high(x1,x2) status: [x2] precedence above: le if_high false true nil #app low add if_low #if_low #low nil() status: [] precedence above: #app(x1,x2) status: [x1] precedence above: #minus(x1,x2) status: [] precedence above: low(x1,x2) status: [x2] precedence above: le if_high false true high nil #app add if_low #if_low #low add(x1,x2) status: [x2,x1] precedence above: le if_high false true high nil #app low if_low #if_low #low #quot(x1,x2) status: [] precedence above: if_low(x1,x2,x3) status: [x3] precedence above: le if_high false true high nil #app low add #if_low #low #if_low(x1,x2,x3) status: [x3] precedence above: #low #low(x1,x2) status: [x2] precedence above: #if_low app(x1,x2) status: [x2,x1] precedence above: le if_high false true high nil #app low add if_low #if_low #low Removed DPs: #2 #6 Number of SCCs: 1, DPs: 3, edges: 4 SCC { #8 #14 #15 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. |0|() status: [] precedence above: false le(x1,x2) status: [] precedence above: false true nil #app s(x1) status: x1 #le(x1,x2) status: [] precedence above: minus(x1,x2) status: x1 if_high(x1,x2,x3) status: [x3] precedence above: le #high false true high nil #app low add if_low #if_low #low #quicksort(x1) status: [x1] precedence above: #high(x1,x2) status: [x2] precedence above: le if_high false true high nil #app low add if_low #if_low #low false() status: [] precedence above: #if_high(x1,x2,x3) status: x3 quicksort(x1) status: [x1] precedence above: le if_high #high false true high nil #app low add if_low #if_low #low app true() status: [] precedence above: rand(x1) status: [x1] precedence above: quot(x1,x2) status: x1 high(x1,x2) status: [x2] precedence above: le if_high #high false true nil #app low add if_low #if_low #low nil() status: [] precedence above: #app(x1,x2) status: [x1] precedence above: #minus(x1,x2) status: [] precedence above: low(x1,x2) status: [x2] precedence above: le if_high #high false true high nil #app add if_low #if_low #low add(x1,x2) status: [x2,x1] precedence above: le if_high #high false true high nil #app low if_low #if_low #low #quot(x1,x2) status: [] precedence above: if_low(x1,x2,x3) status: [x3] precedence above: le if_high #high false true high nil #app low add #if_low #low #if_low(x1,x2,x3) status: [x3] precedence above: #low #low(x1,x2) status: [x2] precedence above: #if_low app(x1,x2) status: [x2,x1] precedence above: le if_high #high false true high nil #app low add if_low #if_low #low Removed DPs: #8 #14 #15 Number of SCCs: 0, DPs: 0, edges: 0 YES