and S is the following TRS.
<(S(x),S(y)) |
→ |
<(x,y) |
(11) |
<(0,S(y)) |
→ |
True |
(12) |
<(x,0) |
→ |
False |
(13) |
>(S(x),S(y)) |
→ |
>(x,y) |
(14) |
>(0,y) |
→ |
False |
(15) |
>(S(x),0) |
→ |
True |
(16) |
part[Ite](True,x',Cons(x,xs),xs1,xs2) |
→ |
part(x',xs,Cons(x,xs1),xs2) |
(17) |
part[False][Ite](True,x',Cons(x,xs),xs1,xs2) |
→ |
part(x',xs,xs1,Cons(x,xs2)) |
(18) |
part[Ite](False,x',Cons(x,xs),xs1,xs2) |
→ |
part[False][Ite](<(x',x),x',Cons(x,xs),xs1,xs2) |
(19) |
part[False][Ite](False,x',Cons(x,xs),xs1,xs2) |
→ |
part(x',xs,xs1,xs2) |
(20) |
The evaluation strategy is innermost.
qs#(z0,Cons(z1,z2)) |
→ |
c10(app#(Cons(z1,Nil),Cons(z0,quicksort(z2))),quicksort#(z2)) |
(22) |
|
originates from |
qs(z0,Cons(z1,z2)) |
→ |
app(Cons(z1,Nil),Cons(z0,quicksort(z2))) |
(21) |
|
quicksort#(Cons(z0,Cons(z1,z2))) |
→ |
c11(qs#(z0,part(z0,Cons(z1,z2),Nil,Nil)),part#(z0,Cons(z1,z2),Nil,Nil)) |
(24) |
|
originates from |
quicksort(Cons(z0,Cons(z1,z2))) |
→ |
qs(z0,part(z0,Cons(z1,z2),Nil,Nil)) |
(23) |
|
quicksort#(Cons(z0,Nil)) |
→ |
c12 |
(26) |
|
originates from |
quicksort(Cons(z0,Nil)) |
→ |
Cons(z0,Nil) |
(25) |
|
quicksort#(Nil) |
→ |
c13 |
(27) |
|
originates from |
|
part#(z0,Cons(z1,z2),z3,z4) |
→ |
c14(part[Ite]#(>(z0,z1),z0,Cons(z1,z2),z3,z4),>#(z0,z1)) |
(29) |
|
originates from |
part(z0,Cons(z1,z2),z3,z4) |
→ |
part[Ite](>(z0,z1),z0,Cons(z1,z2),z3,z4) |
(28) |
|
part#(z0,Nil,z1,z2) |
→ |
c15(app#(z1,z2)) |
(31) |
|
originates from |
part(z0,Nil,z1,z2) |
→ |
app(z1,z2) |
(30) |
|
app#(Cons(z0,z1),z2) |
→ |
c16(app#(z1,z2)) |
(33) |
|
originates from |
app(Cons(z0,z1),z2) |
→ |
Cons(z0,app(z1,z2)) |
(32) |
|
|
originates from |
|
notEmpty#(Cons(z0,z1)) |
→ |
c18 |
(37) |
|
originates from |
notEmpty(Cons(z0,z1)) |
→ |
True |
(36) |
|
notEmpty#(Nil) |
→ |
c19 |
(38) |
|
originates from |
notEmpty(Nil) |
→ |
False |
(10) |
|
<#(S(z0),S(z1)) |
→ |
c(<#(z0,z1)) |
(40) |
|
originates from |
<(S(z0),S(z1)) |
→ |
<(z0,z1) |
(39) |
|
|
originates from |
|
|
originates from |
|
>#(S(z0),S(z1)) |
→ |
c3(>#(z0,z1)) |
(46) |
|
originates from |
>(S(z0),S(z1)) |
→ |
>(z0,z1) |
(45) |
|
|
originates from |
|
|
originates from |
|
part[Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c6(part#(z0,z2,Cons(z1,z3),z4)) |
(52) |
|
originates from |
part[Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,Cons(z1,z3),z4) |
(51) |
|
part[Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c7(part[False][Ite]#(<(z0,z1),z0,Cons(z1,z2),z3,z4),<#(z0,z1)) |
(54) |
|
originates from |
part[Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part[False][Ite](<(z0,z1),z0,Cons(z1,z2),z3,z4) |
(53) |
|
part[False][Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c8(part#(z0,z2,z3,Cons(z1,z4))) |
(56) |
|
originates from |
part[False][Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,Cons(z1,z4)) |
(55) |
|
part[False][Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c9(part#(z0,z2,z3,z4)) |
(58) |
|
originates from |
part[False][Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,z4) |
(57) |
|
Moreover, we add the following terms to the innermost strategy.
<#(S(z0),S(z1)) |
→ |
c(<#(z0,z1)) |
(40) |
<#(0,S(z0)) |
→ |
c1 |
(42) |
<#(z0,0) |
→ |
c2 |
(44) |
>#(S(z0),S(z1)) |
→ |
c3(>#(z0,z1)) |
(46) |
>#(0,z0) |
→ |
c4 |
(48) |
>#(S(z0),0) |
→ |
c5 |
(50) |
part[Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c6(part#(z0,z2,Cons(z1,z3),z4)) |
(52) |
part[Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c7(part[False][Ite]#(<(z0,z1),z0,Cons(z1,z2),z3,z4),<#(z0,z1)) |
(54) |
part[False][Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c8(part#(z0,z2,z3,Cons(z1,z4))) |
(56) |
part[False][Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c9(part#(z0,z2,z3,z4)) |
(58) |
qs#(z0,Cons(z1,z2)) |
→ |
c10(app#(Cons(z1,Nil),Cons(z0,quicksort(z2))),quicksort#(z2)) |
(22) |
quicksort#(Cons(z0,Cons(z1,z2))) |
→ |
c11(qs#(z0,part(z0,Cons(z1,z2),Nil,Nil)),part#(z0,Cons(z1,z2),Nil,Nil)) |
(24) |
quicksort#(Cons(z0,Nil)) |
→ |
c12 |
(26) |
quicksort#(Nil) |
→ |
c13 |
(27) |
part#(z0,Cons(z1,z2),z3,z4) |
→ |
c14(part[Ite]#(>(z0,z1),z0,Cons(z1,z2),z3,z4),>#(z0,z1)) |
(29) |
part#(z0,Nil,z1,z2) |
→ |
c15(app#(z1,z2)) |
(31) |
app#(Cons(z0,z1),z2) |
→ |
c16(app#(z1,z2)) |
(33) |
app#(Nil,z0) |
→ |
c17 |
(35) |
notEmpty#(Cons(z0,z1)) |
→ |
c18 |
(37) |
notEmpty#(Nil) |
→ |
c19 |
(38) |
<#(S(z0),S(z1)) |
→ |
c(<#(z0,z1)) |
(40) |
<#(0,S(z0)) |
→ |
c1 |
(42) |
<#(z0,0) |
→ |
c2 |
(44) |
>#(S(z0),S(z1)) |
→ |
c3(>#(z0,z1)) |
(46) |
>#(0,z0) |
→ |
c4 |
(48) |
>#(S(z0),0) |
→ |
c5 |
(50) |
part[Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c6(part#(z0,z2,Cons(z1,z3),z4)) |
(52) |
part[Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c7(part[False][Ite]#(<(z0,z1),z0,Cons(z1,z2),z3,z4),<#(z0,z1)) |
(54) |
part[False][Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c8(part#(z0,z2,z3,Cons(z1,z4))) |
(56) |
part[False][Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c9(part#(z0,z2,z3,z4)) |
(58) |
qs#(z0,Cons(z1,z2)) |
→ |
c10(app#(Cons(z1,Nil),Cons(z0,quicksort(z2))),quicksort#(z2)) |
(22) |
quicksort#(Cons(z0,Cons(z1,z2))) |
→ |
c11(qs#(z0,part(z0,Cons(z1,z2),Nil,Nil)),part#(z0,Cons(z1,z2),Nil,Nil)) |
(24) |
quicksort#(Cons(z0,Nil)) |
→ |
c12 |
(26) |
quicksort#(Nil) |
→ |
c13 |
(27) |
part#(z0,Cons(z1,z2),z3,z4) |
→ |
c14(part[Ite]#(>(z0,z1),z0,Cons(z1,z2),z3,z4),>#(z0,z1)) |
(29) |
part#(z0,Nil,z1,z2) |
→ |
c15(app#(z1,z2)) |
(31) |
app#(Cons(z0,z1),z2) |
→ |
c16(app#(z1,z2)) |
(33) |
app#(Nil,z0) |
→ |
c17 |
(35) |
notEmpty#(Cons(z0,z1)) |
→ |
c18 |
(37) |
notEmpty#(Nil) |
→ |
c19 |
(38) |
<#(S(z0),S(z1)) |
→ |
c(<#(z0,z1)) |
(40) |
<#(0,S(z0)) |
→ |
c1 |
(42) |
<#(z0,0) |
→ |
c2 |
(44) |
>#(S(z0),S(z1)) |
→ |
c3(>#(z0,z1)) |
(46) |
>#(0,z0) |
→ |
c4 |
(48) |
>#(S(z0),0) |
→ |
c5 |
(50) |
part[Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c6(part#(z0,z2,Cons(z1,z3),z4)) |
(52) |
part[Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c7(part[False][Ite]#(<(z0,z1),z0,Cons(z1,z2),z3,z4),<#(z0,z1)) |
(54) |
part[False][Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c8(part#(z0,z2,z3,Cons(z1,z4))) |
(56) |
part[False][Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c9(part#(z0,z2,z3,z4)) |
(58) |
qs#(z0,Cons(z1,z2)) |
→ |
c10(app#(Cons(z1,Nil),Cons(z0,quicksort(z2))),quicksort#(z2)) |
(22) |
quicksort#(Cons(z0,Cons(z1,z2))) |
→ |
c11(qs#(z0,part(z0,Cons(z1,z2),Nil,Nil)),part#(z0,Cons(z1,z2),Nil,Nil)) |
(24) |
quicksort#(Cons(z0,Nil)) |
→ |
c12 |
(26) |
quicksort#(Nil) |
→ |
c13 |
(27) |
part#(z0,Cons(z1,z2),z3,z4) |
→ |
c14(part[Ite]#(>(z0,z1),z0,Cons(z1,z2),z3,z4),>#(z0,z1)) |
(29) |
part#(z0,Nil,z1,z2) |
→ |
c15(app#(z1,z2)) |
(31) |
app#(Cons(z0,z1),z2) |
→ |
c16(app#(z1,z2)) |
(33) |
app#(Nil,z0) |
→ |
c17 |
(35) |
notEmpty#(Cons(z0,z1)) |
→ |
c18 |
(37) |
notEmpty#(Nil) |
→ |
c19 |
(38) |
part[False][Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,Cons(z1,z4)) |
(55) |
part[False][Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,z4) |
(57) |
app(Nil,z0) |
→ |
z0 |
(34) |
part(z0,Cons(z1,z2),z3,z4) |
→ |
part[Ite](>(z0,z1),z0,Cons(z1,z2),z3,z4) |
(28) |
part[Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part[False][Ite](<(z0,z1),z0,Cons(z1,z2),z3,z4) |
(53) |
app(Cons(z0,z1),z2) |
→ |
Cons(z0,app(z1,z2)) |
(32) |
part[Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,Cons(z1,z3),z4) |
(51) |
part(z0,Nil,z1,z2) |
→ |
app(z1,z2) |
(30) |
<#(S(z0),S(z1)) |
→ |
c(<#(z0,z1)) |
(40) |
<#(0,S(z0)) |
→ |
c1 |
(42) |
<#(z0,0) |
→ |
c2 |
(44) |
>#(S(z0),S(z1)) |
→ |
c3(>#(z0,z1)) |
(46) |
>#(0,z0) |
→ |
c4 |
(48) |
>#(S(z0),0) |
→ |
c5 |
(50) |
part[Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c6(part#(z0,z2,Cons(z1,z3),z4)) |
(52) |
part[Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c7(part[False][Ite]#(<(z0,z1),z0,Cons(z1,z2),z3,z4),<#(z0,z1)) |
(54) |
part[False][Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c8(part#(z0,z2,z3,Cons(z1,z4))) |
(56) |
part[False][Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c9(part#(z0,z2,z3,z4)) |
(58) |
qs#(z0,Cons(z1,z2)) |
→ |
c10(app#(Cons(z1,Nil),Cons(z0,quicksort(z2))),quicksort#(z2)) |
(22) |
quicksort#(Cons(z0,Cons(z1,z2))) |
→ |
c11(qs#(z0,part(z0,Cons(z1,z2),Nil,Nil)),part#(z0,Cons(z1,z2),Nil,Nil)) |
(24) |
quicksort#(Cons(z0,Nil)) |
→ |
c12 |
(26) |
quicksort#(Nil) |
→ |
c13 |
(27) |
part#(z0,Cons(z1,z2),z3,z4) |
→ |
c14(part[Ite]#(>(z0,z1),z0,Cons(z1,z2),z3,z4),>#(z0,z1)) |
(29) |
part#(z0,Nil,z1,z2) |
→ |
c15(app#(z1,z2)) |
(31) |
app#(Cons(z0,z1),z2) |
→ |
c16(app#(z1,z2)) |
(33) |
app#(Nil,z0) |
→ |
c17 |
(35) |
notEmpty#(Cons(z0,z1)) |
→ |
c18 |
(37) |
notEmpty#(Nil) |
→ |
c19 |
(38) |
part[False][Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,Cons(z1,z4)) |
(55) |
part[False][Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,z4) |
(57) |
app(Nil,z0) |
→ |
z0 |
(34) |
part(z0,Cons(z1,z2),z3,z4) |
→ |
part[Ite](>(z0,z1),z0,Cons(z1,z2),z3,z4) |
(28) |
part[Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part[False][Ite](<(z0,z1),z0,Cons(z1,z2),z3,z4) |
(53) |
app(Cons(z0,z1),z2) |
→ |
Cons(z0,app(z1,z2)) |
(32) |
part[Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,Cons(z1,z3),z4) |
(51) |
part(z0,Nil,z1,z2) |
→ |
app(z1,z2) |
(30) |
<#(S(z0),S(z1)) |
→ |
c(<#(z0,z1)) |
(40) |
<#(0,S(z0)) |
→ |
c1 |
(42) |
<#(z0,0) |
→ |
c2 |
(44) |
>#(S(z0),S(z1)) |
→ |
c3(>#(z0,z1)) |
(46) |
>#(0,z0) |
→ |
c4 |
(48) |
>#(S(z0),0) |
→ |
c5 |
(50) |
part[Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c6(part#(z0,z2,Cons(z1,z3),z4)) |
(52) |
part[Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c7(part[False][Ite]#(<(z0,z1),z0,Cons(z1,z2),z3,z4),<#(z0,z1)) |
(54) |
part[False][Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c8(part#(z0,z2,z3,Cons(z1,z4))) |
(56) |
part[False][Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c9(part#(z0,z2,z3,z4)) |
(58) |
qs#(z0,Cons(z1,z2)) |
→ |
c10(app#(Cons(z1,Nil),Cons(z0,quicksort(z2))),quicksort#(z2)) |
(22) |
quicksort#(Cons(z0,Cons(z1,z2))) |
→ |
c11(qs#(z0,part(z0,Cons(z1,z2),Nil,Nil)),part#(z0,Cons(z1,z2),Nil,Nil)) |
(24) |
quicksort#(Cons(z0,Nil)) |
→ |
c12 |
(26) |
quicksort#(Nil) |
→ |
c13 |
(27) |
part#(z0,Cons(z1,z2),z3,z4) |
→ |
c14(part[Ite]#(>(z0,z1),z0,Cons(z1,z2),z3,z4),>#(z0,z1)) |
(29) |
part#(z0,Nil,z1,z2) |
→ |
c15(app#(z1,z2)) |
(31) |
app#(Cons(z0,z1),z2) |
→ |
c16(app#(z1,z2)) |
(33) |
app#(Nil,z0) |
→ |
c17 |
(35) |
notEmpty#(Cons(z0,z1)) |
→ |
c18 |
(37) |
notEmpty#(Nil) |
→ |
c19 |
(38) |
part[False][Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,Cons(z1,z4)) |
(55) |
part[False][Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,z4) |
(57) |
app(Nil,z0) |
→ |
z0 |
(34) |
part(z0,Cons(z1,z2),z3,z4) |
→ |
part[Ite](>(z0,z1),z0,Cons(z1,z2),z3,z4) |
(28) |
part[Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part[False][Ite](<(z0,z1),z0,Cons(z1,z2),z3,z4) |
(53) |
app(Cons(z0,z1),z2) |
→ |
Cons(z0,app(z1,z2)) |
(32) |
part[Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,Cons(z1,z3),z4) |
(51) |
part(z0,Nil,z1,z2) |
→ |
app(z1,z2) |
(30) |
<#(S(z0),S(z1)) |
→ |
c(<#(z0,z1)) |
(40) |
<#(0,S(z0)) |
→ |
c1 |
(42) |
<#(z0,0) |
→ |
c2 |
(44) |
>#(S(z0),S(z1)) |
→ |
c3(>#(z0,z1)) |
(46) |
>#(0,z0) |
→ |
c4 |
(48) |
>#(S(z0),0) |
→ |
c5 |
(50) |
part[Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c6(part#(z0,z2,Cons(z1,z3),z4)) |
(52) |
part[Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c7(part[False][Ite]#(<(z0,z1),z0,Cons(z1,z2),z3,z4),<#(z0,z1)) |
(54) |
part[False][Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c8(part#(z0,z2,z3,Cons(z1,z4))) |
(56) |
part[False][Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c9(part#(z0,z2,z3,z4)) |
(58) |
qs#(z0,Cons(z1,z2)) |
→ |
c10(app#(Cons(z1,Nil),Cons(z0,quicksort(z2))),quicksort#(z2)) |
(22) |
quicksort#(Cons(z0,Cons(z1,z2))) |
→ |
c11(qs#(z0,part(z0,Cons(z1,z2),Nil,Nil)),part#(z0,Cons(z1,z2),Nil,Nil)) |
(24) |
quicksort#(Cons(z0,Nil)) |
→ |
c12 |
(26) |
quicksort#(Nil) |
→ |
c13 |
(27) |
part#(z0,Cons(z1,z2),z3,z4) |
→ |
c14(part[Ite]#(>(z0,z1),z0,Cons(z1,z2),z3,z4),>#(z0,z1)) |
(29) |
part#(z0,Nil,z1,z2) |
→ |
c15(app#(z1,z2)) |
(31) |
app#(Cons(z0,z1),z2) |
→ |
c16(app#(z1,z2)) |
(33) |
app#(Nil,z0) |
→ |
c17 |
(35) |
notEmpty#(Cons(z0,z1)) |
→ |
c18 |
(37) |
notEmpty#(Nil) |
→ |
c19 |
(38) |
part[False][Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,Cons(z1,z4)) |
(55) |
part[False][Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,z4) |
(57) |
app(Nil,z0) |
→ |
z0 |
(34) |
part(z0,Cons(z1,z2),z3,z4) |
→ |
part[Ite](>(z0,z1),z0,Cons(z1,z2),z3,z4) |
(28) |
part[Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part[False][Ite](<(z0,z1),z0,Cons(z1,z2),z3,z4) |
(53) |
app(Cons(z0,z1),z2) |
→ |
Cons(z0,app(z1,z2)) |
(32) |
part[Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,Cons(z1,z3),z4) |
(51) |
part(z0,Nil,z1,z2) |
→ |
app(z1,z2) |
(30) |
<#(S(z0),S(z1)) |
→ |
c(<#(z0,z1)) |
(40) |
<#(0,S(z0)) |
→ |
c1 |
(42) |
<#(z0,0) |
→ |
c2 |
(44) |
>#(S(z0),S(z1)) |
→ |
c3(>#(z0,z1)) |
(46) |
>#(0,z0) |
→ |
c4 |
(48) |
>#(S(z0),0) |
→ |
c5 |
(50) |
part[Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c6(part#(z0,z2,Cons(z1,z3),z4)) |
(52) |
part[Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c7(part[False][Ite]#(<(z0,z1),z0,Cons(z1,z2),z3,z4),<#(z0,z1)) |
(54) |
part[False][Ite]#(True,z0,Cons(z1,z2),z3,z4) |
→ |
c8(part#(z0,z2,z3,Cons(z1,z4))) |
(56) |
part[False][Ite]#(False,z0,Cons(z1,z2),z3,z4) |
→ |
c9(part#(z0,z2,z3,z4)) |
(58) |
qs#(z0,Cons(z1,z2)) |
→ |
c10(app#(Cons(z1,Nil),Cons(z0,quicksort(z2))),quicksort#(z2)) |
(22) |
quicksort#(Cons(z0,Cons(z1,z2))) |
→ |
c11(qs#(z0,part(z0,Cons(z1,z2),Nil,Nil)),part#(z0,Cons(z1,z2),Nil,Nil)) |
(24) |
quicksort#(Cons(z0,Nil)) |
→ |
c12 |
(26) |
quicksort#(Nil) |
→ |
c13 |
(27) |
part#(z0,Cons(z1,z2),z3,z4) |
→ |
c14(part[Ite]#(>(z0,z1),z0,Cons(z1,z2),z3,z4),>#(z0,z1)) |
(29) |
part#(z0,Nil,z1,z2) |
→ |
c15(app#(z1,z2)) |
(31) |
app#(Cons(z0,z1),z2) |
→ |
c16(app#(z1,z2)) |
(33) |
app#(Nil,z0) |
→ |
c17 |
(35) |
notEmpty#(Cons(z0,z1)) |
→ |
c18 |
(37) |
notEmpty#(Nil) |
→ |
c19 |
(38) |
part[False][Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,Cons(z1,z4)) |
(55) |
part[False][Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,z3,z4) |
(57) |
app(Nil,z0) |
→ |
z0 |
(34) |
part(z0,Cons(z1,z2),z3,z4) |
→ |
part[Ite](>(z0,z1),z0,Cons(z1,z2),z3,z4) |
(28) |
part[Ite](False,z0,Cons(z1,z2),z3,z4) |
→ |
part[False][Ite](<(z0,z1),z0,Cons(z1,z2),z3,z4) |
(53) |
app(Cons(z0,z1),z2) |
→ |
Cons(z0,app(z1,z2)) |
(32) |
part[Ite](True,z0,Cons(z1,z2),z3,z4) |
→ |
part(z0,z2,Cons(z1,z3),z4) |
(51) |
part(z0,Nil,z1,z2) |
→ |
app(z1,z2) |
(30) |
There are no rules in the TRS R. Hence, R/S has complexity O(1).