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. le(x1,x2) weight: 0 status: [] precedence above: if_high false quicksort true high nil add s(x1) weight: x1 status: [x1] precedence above: #le minus 0 quot #le(x1,x2) weight: x1 status: [x1] precedence above: s minus 0 quot minus(x1,x2) weight: max{0, x1} status: x1 if_high(x1,x2,x3) weight: max{0, x2} status: [] precedence above: le false quicksort true high nil add #quicksort(x1) weight: (/ 1 4) status: [] precedence above: #high(x1,x2) weight: max{0, (/ 1 4) + x2} status: [x2] precedence above: false() weight: 0 status: [] precedence above: #if_high(x1,x2,x3) weight: max{0, x2} status: [] precedence above: quicksort(x1) weight: (/ 1 4) + x1 status: [x1] precedence above: nil true() weight: 0 status: [] precedence above: rand(x1) weight: (/ 1 4) + x1 status: [] precedence above: 0() weight: 0 status: [] precedence above: quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: s #le minus 0 high(x1,x2) weight: max{0, x1} status: [] precedence above: le if_high false quicksort true nil add nil() weight: 0 status: [] precedence above: #app(x1,x2) weight: (/ 1 4) + x2 status: [x2] precedence above: #minus(x1,x2) weight: (/ 1 4) + x2 + x1 status: [x2,x1] precedence above: low(x1,x2) weight: 0 status: [] precedence above: le if_high false quicksort true high nil add if_low add(x1,x2) weight: 0 status: [] precedence above: le if_high false quicksort true high nil #quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: if_low(x1,x2,x3) weight: 0 status: [] precedence above: le if_high false quicksort true high nil low add #if_low(x1,x2,x3) weight: max{0, (/ 1 4) + x2} status: [x2] precedence above: #low(x1,x2) weight: max{(/ 1 4) + x2, (/ 1 4) + x1} status: [x1,x2] precedence above: app(x1,x2) weight: max{0, x2} status: [x2] precedence above: le if_high false quicksort true high nil add Removed DPs: #7 Number of SCCs: 6, DPs: 11, edges: 15 SCC { #3 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. le(x1,x2) status: [] precedence above: false true #app s(x1) status: x1 #le(x1,x2) status: [] precedence above: minus(x1,x2) status: [x2,x1] precedence above: s false 0 quot if_high(x1,x2,x3) status: x3 #quicksort(x1) status: [] precedence above: #high(x1,x2) status: [] precedence above: false() status: [] precedence above: #if_high(x1,x2,x3) status: [x3,x1,x2] precedence above: quicksort(x1) status: [x1] precedence above: le false true nil #app add app true() status: [] precedence above: #app rand(x1) status: [x1] precedence above: 0() status: [] precedence above: false quot(x1,x2) status: [] precedence above: s false 0 high(x1,x2) status: x2 nil() status: [] precedence above: #app(x1,x2) status: [x1] precedence above: #minus(x1,x2) status: [x2] precedence above: low(x1,x2) status: x2 add(x1,x2) status: [x2] precedence above: le false true #app #quot(x1,x2) status: [x2] precedence above: if_low(x1,x2,x3) status: x3 #if_low(x1,x2,x3) status: [x3,x1] precedence above: #low(x1,x2) status: [x1] precedence above: app(x1,x2) status: [x2,x1] precedence above: le false true #app add 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. le(x1,x2) weight: 0 status: [] precedence above: if_high false quicksort true high nil add s(x1) weight: x1 status: [x1] precedence above: #le minus 0 quot #le(x1,x2) weight: x1 status: [x1] precedence above: s minus 0 quot minus(x1,x2) weight: max{0, x1} status: x1 if_high(x1,x2,x3) weight: max{0, x2} status: [] precedence above: le false quicksort true high nil add #quicksort(x1) weight: (/ 1 4) status: [] precedence above: #high(x1,x2) weight: max{0, (/ 1 4) + x2} status: [x2] precedence above: false() weight: 0 status: [] precedence above: #if_high(x1,x2,x3) weight: max{0, x2} status: [] precedence above: quicksort(x1) weight: (/ 1 4) + x1 status: [x1] precedence above: nil true() weight: 0 status: [] precedence above: rand(x1) weight: (/ 1 4) + x1 status: [] precedence above: 0() weight: 0 status: [] precedence above: quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: s #le minus 0 high(x1,x2) weight: max{0, x1} status: [] precedence above: le if_high false quicksort true nil add nil() weight: 0 status: [] precedence above: #app(x1,x2) weight: (/ 1 4) + x2 status: [x2] precedence above: #minus(x1,x2) weight: x2 status: x2 low(x1,x2) weight: 0 status: [] precedence above: le if_high false quicksort true high nil add if_low add(x1,x2) weight: 0 status: [] precedence above: le if_high false quicksort true high nil #quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: if_low(x1,x2,x3) weight: 0 status: [] precedence above: le if_high false quicksort true high nil low add #if_low(x1,x2,x3) weight: max{0, (/ 1 4) + x2} status: [x2] precedence above: #low(x1,x2) weight: max{(/ 1 4) + x2, (/ 1 4) + x1} status: [x1,x2] precedence above: app(x1,x2) weight: max{0, x2} status: [x2] precedence above: le if_high false quicksort true high nil add 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. le(x1,x2) weight: 0 status: [] precedence above: if_high false quicksort true high nil add s(x1) weight: x1 status: [x1] precedence above: quot #quot #le(x1,x2) weight: x1 status: [x1] precedence above: s minus 0 quot #quot minus(x1,x2) weight: max{0, x1} status: x1 if_high(x1,x2,x3) weight: max{0, x2} status: [] precedence above: le false quicksort true high nil add #quicksort(x1) weight: (/ 1 4) status: [] precedence above: #high(x1,x2) weight: max{0, (/ 1 4) + x2} status: [x2] precedence above: false() weight: 0 status: [] precedence above: #if_high(x1,x2,x3) weight: max{0, x2} status: [] precedence above: quicksort(x1) weight: (/ 1 4) + x1 status: [x1] precedence above: nil true() weight: 0 status: [] precedence above: rand(x1) weight: (/ 1 4) + x1 status: [] precedence above: 0() weight: 0 status: [] precedence above: quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: s #quot high(x1,x2) weight: max{0, x1} status: [] precedence above: le if_high false quicksort true nil add nil() weight: 0 status: [] precedence above: #app(x1,x2) weight: (/ 1 4) + x2 status: [x2] precedence above: #minus(x1,x2) weight: x2 status: x2 low(x1,x2) weight: 0 status: [] precedence above: le if_high false quicksort true high nil add if_low add(x1,x2) weight: 0 status: [] precedence above: le if_high false quicksort true high nil #quot(x1,x2) weight: max{0, x1} status: [x1] precedence above: s quot if_low(x1,x2,x3) weight: 0 status: [] precedence above: le if_high false quicksort true high nil low add #if_low(x1,x2,x3) weight: max{0, (/ 1 4) + x2} status: [x2] precedence above: #low(x1,x2) weight: max{(/ 1 4) + x2, (/ 1 4) + x1} status: [x1,x2] precedence above: app(x1,x2) weight: max{0, x2} status: [x2] precedence above: le if_high false quicksort true high nil add Removed DPs: #17 Number of SCCs: 3, DPs: 8, edges: 12 SCC { #10 #12 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. le(x1,x2) status: [] precedence above: false true #app s(x1) status: x1 #le(x1,x2) status: [] precedence above: minus(x1,x2) status: [x2,x1] precedence above: s false 0 quot if_high(x1,x2,x3) status: x3 #quicksort(x1) status: [x1] precedence above: #high(x1,x2) status: [] precedence above: false() status: [] precedence above: #if_high(x1,x2,x3) status: [x3,x1,x2] precedence above: quicksort(x1) status: [x1] precedence above: le false true nil #app add app true() status: [] precedence above: #app rand(x1) status: [x1] precedence above: 0() status: [] precedence above: false quot(x1,x2) status: [] precedence above: s false 0 high(x1,x2) status: x2 nil() status: [] precedence above: #app(x1,x2) status: [x1] precedence above: #minus(x1,x2) status: [] precedence above: low(x1,x2) status: x2 add(x1,x2) status: [x2] precedence above: le false true #app #quot(x1,x2) status: [] precedence above: if_low(x1,x2,x3) status: x3 #if_low(x1,x2,x3) status: [x3,x1] precedence above: #low(x1,x2) status: [x1] precedence above: app(x1,x2) status: [x2,x1] precedence above: le false true #app add 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. le(x1,x2) status: [] precedence above: false true #app s(x1) status: x1 #le(x1,x2) status: [] precedence above: minus(x1,x2) status: [x2,x1] precedence above: s false 0 quot if_high(x1,x2,x3) status: x3 #quicksort(x1) status: [x1] precedence above: #high(x1,x2) status: [] precedence above: false() status: [] precedence above: #if_high(x1,x2,x3) status: [x3,x1,x2] precedence above: quicksort(x1) status: [x1] precedence above: le false true nil #app add #if_low #low app true() status: [] precedence above: #app rand(x1) status: [x1] precedence above: 0() status: [] precedence above: false quot(x1,x2) status: [] precedence above: s false 0 high(x1,x2) status: x2 nil() status: [] precedence above: #app(x1,x2) status: [x1] precedence above: #minus(x1,x2) status: [] precedence above: low(x1,x2) status: x2 add(x1,x2) status: [x2] precedence above: le false true #app #if_low #low #quot(x1,x2) status: [] precedence above: if_low(x1,x2,x3) status: x3 #if_low(x1,x2,x3) status: [x1,x3] precedence above: le false true #app add #low #low(x1,x2) status: [x2] precedence above: le false true #app add #if_low app(x1,x2) status: [x2,x1] precedence above: le false true #app add #if_low #low Removed DPs: #2 #4 #6 Number of SCCs: 1, DPs: 3, edges: 4 SCC { #8 #14 #15 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. le(x1,x2) status: [] precedence above: false true #app s(x1) status: x1 #le(x1,x2) status: [] precedence above: minus(x1,x2) status: [x2,x1] precedence above: s false 0 quot if_high(x1,x2,x3) status: x3 #quicksort(x1) status: [x1] precedence above: #high(x1,x2) status: [x2] precedence above: le false #if_high true #app add #if_low #low false() status: [] precedence above: #if_high(x1,x2,x3) status: [x3] precedence above: le #high false true #app add #if_low #low quicksort(x1) status: [x1] precedence above: le false true nil #app add #if_low #low app true() status: [] precedence above: #app rand(x1) status: [x1] precedence above: 0() status: [] precedence above: false quot(x1,x2) status: [] precedence above: s false 0 high(x1,x2) status: x2 nil() status: [] precedence above: #app(x1,x2) status: [x1] precedence above: #minus(x1,x2) status: [] precedence above: low(x1,x2) status: x2 add(x1,x2) status: [x2] precedence above: le false true #app #if_low #low #quot(x1,x2) status: [] precedence above: if_low(x1,x2,x3) status: x3 #if_low(x1,x2,x3) status: [x1,x3] precedence above: le false true #app add #low #low(x1,x2) status: [x2] precedence above: le false true #app add #if_low app(x1,x2) status: [x2,x1] precedence above: le false true #app add #if_low #low Removed DPs: #14 Number of SCCs: 1, DPs: 2, edges: 2 SCC { #8 #15 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... succeeded. le(x1,x2) status: [] precedence above: false true #app s(x1) status: x1 #le(x1,x2) status: [] precedence above: minus(x1,x2) status: [x2,x1] precedence above: s false 0 quot if_high(x1,x2,x3) status: x3 #quicksort(x1) status: [x1] precedence above: #high(x1,x2) status: [x2] precedence above: le false #if_high true #app add #if_low #low false() status: [] precedence above: #if_high(x1,x2,x3) status: [x3] precedence above: le #high false true #app add #if_low #low quicksort(x1) status: [x1] precedence above: le #high false #if_high true nil #app add #if_low #low app true() status: [] precedence above: #app rand(x1) status: [x1] precedence above: 0() status: [] precedence above: false quot(x1,x2) status: [] precedence above: s false 0 high(x1,x2) status: x2 nil() status: [] precedence above: #app(x1,x2) status: [x1] precedence above: #minus(x1,x2) status: [] precedence above: low(x1,x2) status: x2 add(x1,x2) status: [x2] precedence above: le #high false #if_high true #app #if_low #low #quot(x1,x2) status: [] precedence above: if_low(x1,x2,x3) status: x3 #if_low(x1,x2,x3) status: [x1,x3] precedence above: le #high false #if_high true #app add #low #low(x1,x2) status: [x2] precedence above: le #high false #if_high true #app add #if_low app(x1,x2) status: [x2,x1] precedence above: le #high false #if_high true #app add #if_low #low Removed DPs: #8 Number of SCCs: 0, DPs: 0, edges: 0 YES