Term Rewriting System R:
[Y, X, N, L, M]
le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))

Innermost Termination of R to be shown.



   R
Dependency Pair Analysis



R contains the following Dependency Pairs:

LE(s(X), s(Y)) -> LE(X, Y)
APP(cons(N, L), Y) -> APP(L, Y)
LOW(N, cons(M, L)) -> IFLOW(le(M, N), N, cons(M, L))
LOW(N, cons(M, L)) -> LE(M, N)
IFLOW(true, N, cons(M, L)) -> LOW(N, L)
IFLOW(false, N, cons(M, L)) -> LOW(N, L)
HIGH(N, cons(M, L)) -> IFHIGH(le(M, N), N, cons(M, L))
HIGH(N, cons(M, L)) -> LE(M, N)
IFHIGH(true, N, cons(M, L)) -> HIGH(N, L)
IFHIGH(false, N, cons(M, L)) -> HIGH(N, L)
QUICKSORT(cons(N, L)) -> APP(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))
QUICKSORT(cons(N, L)) -> QUICKSORT(low(N, L))
QUICKSORT(cons(N, L)) -> LOW(N, L)
QUICKSORT(cons(N, L)) -> QUICKSORT(high(N, L))
QUICKSORT(cons(N, L)) -> HIGH(N, L)

Furthermore, R contains five SCCs.


   R
DPs
       →DP Problem 1
Forward Instantiation Transformation
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:

LE(s(X), s(Y)) -> LE(X, Y)


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

LE(s(X), s(Y)) -> LE(X, Y)
one new Dependency Pair is created:

LE(s(s(X'')), s(s(Y''))) -> LE(s(X''), s(Y''))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
           →DP Problem 6
Forward Instantiation Transformation
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:

LE(s(s(X'')), s(s(Y''))) -> LE(s(X''), s(Y''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

LE(s(s(X'')), s(s(Y''))) -> LE(s(X''), s(Y''))
one new Dependency Pair is created:

LE(s(s(s(X''''))), s(s(s(Y'''')))) -> LE(s(s(X'''')), s(s(Y'''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
           →DP Problem 6
FwdInst
             ...
               →DP Problem 7
Polynomial Ordering
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:

LE(s(s(s(X''''))), s(s(s(Y'''')))) -> LE(s(s(X'''')), s(s(Y'''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pair can be strictly oriented:

LE(s(s(s(X''''))), s(s(s(Y'''')))) -> LE(s(s(X'''')), s(s(Y'''')))


There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(LE(x1, x2))=  1 + x1  
  POL(s(x1))=  1 + x1  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
           →DP Problem 6
FwdInst
             ...
               →DP Problem 8
Dependency Graph
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
Forward Instantiation Transformation
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:

APP(cons(N, L), Y) -> APP(L, Y)


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

APP(cons(N, L), Y) -> APP(L, Y)
one new Dependency Pair is created:

APP(cons(N, cons(N'', L'')), Y'') -> APP(cons(N'', L''), Y'')

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
           →DP Problem 9
Forward Instantiation Transformation
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:

APP(cons(N, cons(N'', L'')), Y'') -> APP(cons(N'', L''), Y'')


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

APP(cons(N, cons(N'', L'')), Y'') -> APP(cons(N'', L''), Y'')
one new Dependency Pair is created:

APP(cons(N, cons(N'''', cons(N''''', L''''))), Y'''') -> APP(cons(N'''', cons(N''''', L'''')), Y'''')

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
           →DP Problem 9
FwdInst
             ...
               →DP Problem 10
Polynomial Ordering
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:

APP(cons(N, cons(N'''', cons(N''''', L''''))), Y'''') -> APP(cons(N'''', cons(N''''', L'''')), Y'''')


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pair can be strictly oriented:

APP(cons(N, cons(N'''', cons(N''''', L''''))), Y'''') -> APP(cons(N'''', cons(N''''', L'''')), Y'''')


There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(cons(x1, x2))=  1 + x2  
  POL(APP(x1, x2))=  1 + x1  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
           →DP Problem 9
FwdInst
             ...
               →DP Problem 11
Dependency Graph
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Narrowing Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(false, N, cons(M, L)) -> LOW(N, L)
IFLOW(true, N, cons(M, L)) -> LOW(N, L)
LOW(N, cons(M, L)) -> IFLOW(le(M, N), N, cons(M, L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

LOW(N, cons(M, L)) -> IFLOW(le(M, N), N, cons(M, L))
three new Dependency Pairs are created:

LOW(N', cons(0, L)) -> IFLOW(true, N', cons(0, L))
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
LOW(s(Y'), cons(s(X'), L)) -> IFLOW(le(X', Y'), s(Y'), cons(s(X'), L))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Narrowing Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

LOW(s(Y'), cons(s(X'), L)) -> IFLOW(le(X', Y'), s(Y'), cons(s(X'), L))
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
IFLOW(true, N, cons(M, L)) -> LOW(N, L)
LOW(N', cons(0, L)) -> IFLOW(true, N', cons(0, L))
IFLOW(false, N, cons(M, L)) -> LOW(N, L)


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

LOW(s(Y'), cons(s(X'), L)) -> IFLOW(le(X', Y'), s(Y'), cons(s(X'), L))
three new Dependency Pairs are created:

LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 13
Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(true, N, cons(M, L)) -> LOW(N, L)
LOW(N', cons(0, L)) -> IFLOW(true, N', cons(0, L))
IFLOW(false, N, cons(M, L)) -> LOW(N, L)
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, an Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFLOW(true, N, cons(M, L)) -> LOW(N, L)
three new Dependency Pairs are created:

IFLOW(true, N', cons(0, L'')) -> LOW(N', L'')
IFLOW(true, s(Y''''), cons(s(0), L'')) -> LOW(s(Y''''), L'')
IFLOW(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 14
Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(Y''''), cons(s(0), L'')) -> LOW(s(Y''''), L'')
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
IFLOW(true, N', cons(0, L'')) -> LOW(N', L'')
LOW(N', cons(0, L)) -> IFLOW(true, N', cons(0, L))
IFLOW(false, N, cons(M, L)) -> LOW(N, L)
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, an Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFLOW(false, N, cons(M, L)) -> LOW(N, L)
three new Dependency Pairs are created:

IFLOW(false, 0, cons(s(X'''), L'')) -> LOW(0, L'')
IFLOW(false, s(0), cons(s(s(X'''')), L'')) -> LOW(s(0), L'')
IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 15
Forward Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(false, s(0), cons(s(s(X'''')), L'')) -> LOW(s(0), L'')
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(Y''''), cons(s(0), L'')) -> LOW(s(Y''''), L'')
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(false, 0, cons(s(X'''), L'')) -> LOW(0, L'')
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
IFLOW(true, N', cons(0, L'')) -> LOW(N', L'')
LOW(N', cons(0, L)) -> IFLOW(true, N', cons(0, L))
IFLOW(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFLOW(true, N', cons(0, L'')) -> LOW(N', L'')
five new Dependency Pairs are created:

IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 16
Forward Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(false, s(0), cons(s(s(X'''')), L'')) -> LOW(s(0), L'')
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(Y''''), cons(s(0), L'')) -> LOW(s(Y''''), L'')
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
IFLOW(false, 0, cons(s(X'''), L'')) -> LOW(0, L'')
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
LOW(N', cons(0, L)) -> IFLOW(true, N', cons(0, L))
IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

LOW(N', cons(0, L)) -> IFLOW(true, N', cons(0, L))
five new Dependency Pairs are created:

LOW(N'', cons(0, cons(0, L'''''))) -> IFLOW(true, N'', cons(0, cons(0, L''''')))
LOW(0, cons(0, cons(s(X'''''), L'''''))) -> IFLOW(true, 0, cons(0, cons(s(X'''''), L''''')))
LOW(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFLOW(true, s(Y''''''), cons(0, cons(s(0), L''''')))
LOW(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
LOW(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 17
Forward Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
LOW(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
LOW(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFLOW(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFLOW(false, 0, cons(s(X'''), L'')) -> LOW(0, L'')
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(0, cons(s(X'''''), L'''''))) -> IFLOW(true, 0, cons(0, cons(s(X'''''), L''''')))
IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
LOW(N'', cons(0, cons(0, L'''''))) -> IFLOW(true, N'', cons(0, cons(0, L''''')))
IFLOW(false, s(0), cons(s(s(X'''')), L'')) -> LOW(s(0), L'')
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(Y''''), cons(s(0), L'')) -> LOW(s(Y''''), L'')
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFLOW(true, s(Y''''), cons(s(0), L'')) -> LOW(s(Y''''), L'')
seven new Dependency Pairs are created:

IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> LOW(s(Y'''''), cons(0, cons(0, L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> LOW(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 18
Forward Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> LOW(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> LOW(s(Y'''''), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))
LOW(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
LOW(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
LOW(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFLOW(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFLOW(false, 0, cons(s(X'''), L'')) -> LOW(0, L'')
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(0, cons(s(X'''''), L'''''))) -> IFLOW(true, 0, cons(0, cons(s(X'''''), L''''')))
IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
LOW(N'', cons(0, cons(0, L'''''))) -> IFLOW(true, N'', cons(0, cons(0, L''''')))
IFLOW(false, s(0), cons(s(s(X'''')), L'')) -> LOW(s(0), L'')
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFLOW(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
five new Dependency Pairs are created:

IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 19
Forward Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> LOW(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> LOW(s(Y'''''), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
LOW(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
LOW(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFLOW(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFLOW(false, 0, cons(s(X'''), L'')) -> LOW(0, L'')
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(0, cons(s(X'''''), L'''''))) -> IFLOW(true, 0, cons(0, cons(s(X'''''), L''''')))
IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
LOW(N'', cons(0, cons(0, L'''''))) -> IFLOW(true, N'', cons(0, cons(0, L''''')))
IFLOW(false, s(0), cons(s(s(X'''')), L'')) -> LOW(s(0), L'')
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))
LOW(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFLOW(false, 0, cons(s(X'''), L'')) -> LOW(0, L'')
three new Dependency Pairs are created:

IFLOW(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> LOW(0, cons(0, cons(0, L''''''')))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> LOW(0, cons(0, cons(s(X'''''''), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 20
Forward Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> LOW(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> LOW(s(Y'''''), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
LOW(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
LOW(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFLOW(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> LOW(0, cons(0, cons(s(X'''''''), L''''''')))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> LOW(0, cons(0, cons(0, L''''''')))
IFLOW(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(0, cons(s(X'''''), L'''''))) -> IFLOW(true, 0, cons(0, cons(s(X'''''), L''''')))
IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
LOW(N'', cons(0, cons(0, L'''''))) -> IFLOW(true, N'', cons(0, cons(0, L''''')))
IFLOW(false, s(0), cons(s(s(X'''')), L'')) -> LOW(s(0), L'')
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))
LOW(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

LOW(0, cons(s(X'), L)) -> IFLOW(false, 0, cons(s(X'), L))
three new Dependency Pairs are created:

LOW(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFLOW(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
LOW(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
LOW(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 21
Forward Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> LOW(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> LOW(s(Y'''''), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))
LOW(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
LOW(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> LOW(0, cons(0, cons(s(X'''''''), L''''''')))
LOW(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> LOW(0, cons(0, cons(0, L''''''')))
LOW(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
IFLOW(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFLOW(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(0, cons(s(X'''''), L'''''))) -> IFLOW(true, 0, cons(0, cons(s(X'''''), L''''')))
IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
LOW(N'', cons(0, cons(0, L'''''))) -> IFLOW(true, N'', cons(0, cons(0, L''''')))
IFLOW(false, s(0), cons(s(s(X'''')), L'')) -> LOW(s(0), L'')
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
LOW(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFLOW(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFLOW(false, s(0), cons(s(s(X'''')), L'')) -> LOW(s(0), L'')
five new Dependency Pairs are created:

IFLOW(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(0), cons(s(0), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(0), cons(0, cons(0, L''''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(0), cons(0, cons(s(0), L''''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 22
Forward Instantiation Transformation
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> LOW(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> LOW(s(Y'''''), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(0), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
LOW(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
LOW(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFLOW(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> LOW(0, cons(0, cons(s(X'''''''), L''''''')))
LOW(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> LOW(0, cons(0, cons(0, L''''''')))
LOW(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
IFLOW(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFLOW(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(0, cons(s(X'''''), L'''''))) -> IFLOW(true, 0, cons(0, cons(s(X'''''), L''''')))
IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
LOW(N'', cons(0, cons(0, L'''''))) -> IFLOW(true, N'', cons(0, cons(0, L''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(0), cons(0, cons(0, L''''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(0), cons(s(0), L'''))
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))
LOW(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFLOW(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> LOW(s(s(Y'''')), L'')
five new Dependency Pairs are created:

IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 23
Polynomial Ordering
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> LOW(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> LOW(s(Y'''''), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(0), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
LOW(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
LOW(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFLOW(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> LOW(0, cons(0, cons(s(X'''''''), L''''''')))
LOW(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> LOW(0, cons(0, cons(0, L''''''')))
LOW(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
IFLOW(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFLOW(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(0, cons(s(X'''''), L'''''))) -> IFLOW(true, 0, cons(0, cons(s(X'''''), L''''')))
IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
LOW(N'', cons(0, cons(0, L'''''))) -> IFLOW(true, N'', cons(0, cons(0, L''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(0), cons(0, cons(0, L''''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(0), cons(s(0), L'''))
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))
LOW(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

IFLOW(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y''''), cons(0, cons(s(0), L'''))) -> LOW(s(Y''''), cons(s(0), L'''))
IFLOW(true, 0, cons(0, cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
IFLOW(true, N''', cons(0, cons(0, L'''))) -> LOW(N''', cons(0, L'''))
IFLOW(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> LOW(s(s(Y'''')), cons(s(s(X'''')), L'''))


Additionally, the following usable rules for innermost can be oriented:

le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)


Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  1  
  POL(LOW(x1, x2))=  x2  
  POL(false)=  0  
  POL(cons(x1, x2))=  x1 + x2  
  POL(true)=  0  
  POL(s(x1))=  0  
  POL(le(x1, x2))=  0  
  POL(IFLOW(x1, x2, x3))=  x3  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 24
Dependency Graph
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> LOW(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFLOW(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> LOW(s(Y'''''), cons(0, cons(0, L''''''')))
IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> LOW(s(0), cons(0, cons(s(0), L''''''')))
LOW(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
LOW(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFLOW(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> LOW(0, cons(0, cons(s(X'''''''), L''''''')))
LOW(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))
IFLOW(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> LOW(0, cons(0, cons(0, L''''''')))
LOW(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFLOW(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
IFLOW(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))
LOW(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFLOW(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
LOW(0, cons(0, cons(s(X'''''), L'''''))) -> IFLOW(true, 0, cons(0, cons(s(X'''''), L''''')))
LOW(N'', cons(0, cons(0, L'''''))) -> IFLOW(true, N'', cons(0, cons(0, L''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> LOW(s(0), cons(0, cons(0, L''''''')))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(0), cons(s(0), L'''))
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
LOW(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFLOW(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> LOW(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph the DP problem was split into 2 DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 25
Polynomial Ordering
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(0), cons(s(0), L'''))
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

IFLOW(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> LOW(s(Y'''''), cons(s(0), L'''))


Additionally, the following usable rules for innermost can be oriented:

le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)


Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  1  
  POL(LOW(x1, x2))=  x2  
  POL(false)=  0  
  POL(cons(x1, x2))=  x1 + x2  
  POL(true)=  0  
  POL(s(x1))=  x1  
  POL(le(x1, x2))=  0  
  POL(IFLOW(x1, x2, x3))=  x3  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 27
Dependency Graph
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(0), cons(s(0), L'''))
LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
LOW(s(Y''), cons(s(0), L)) -> IFLOW(true, s(Y''), cons(s(0), L))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> LOW(s(s(Y''''')), cons(s(0), L'''))
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph the DP problem was split into 2 DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 29
Polynomial Ordering
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

IFLOW(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFLOW(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(s(Y''''')), cons(s(s(X'''')), L'''))


Additionally, the following usable rules for innermost can be oriented:

le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)


Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  0  
  POL(LOW(x1, x2))=  x2  
  POL(false)=  0  
  POL(cons(x1, x2))=  1 + x2  
  POL(true)=  0  
  POL(s(x1))=  0  
  POL(le(x1, x2))=  0  
  POL(IFLOW(x1, x2, x3))=  x3  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 31
Dependency Graph
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:

LOW(s(s(Y'')), cons(s(s(X'')), L)) -> IFLOW(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 30
Polynomial Ordering
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))
IFLOW(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pair can be strictly oriented:

IFLOW(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> LOW(s(0), cons(s(s(X'''')), L'''))


There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  0  
  POL(LOW(x1, x2))=  x2  
  POL(cons(x1, x2))=  x1 + x2  
  POL(false)=  0  
  POL(s(x1))=  1  
  POL(IFLOW(x1, x2, x3))=  x3  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 32
Dependency Graph
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:

LOW(s(0), cons(s(s(X'')), L)) -> IFLOW(false, s(0), cons(s(s(X'')), L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 26
Polynomial Ordering
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pairs:

LOW(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFLOW(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
IFLOW(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pair can be strictly oriented:

IFLOW(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> LOW(0, cons(s(X'''), L'''))


There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  0  
  POL(LOW(x1, x2))=  x2  
  POL(cons(x1, x2))=  x1 + x2  
  POL(false)=  0  
  POL(s(x1))=  1  
  POL(IFLOW(x1, x2, x3))=  x3  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
           →DP Problem 12
Nar
             ...
               →DP Problem 28
Dependency Graph
       →DP Problem 4
Nar
       →DP Problem 5
Nar


Dependency Pair:

LOW(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFLOW(false, 0, cons(s(X''), cons(s(X''''''), L''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Narrowing Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(false, N, cons(M, L)) -> HIGH(N, L)
IFHIGH(true, N, cons(M, L)) -> HIGH(N, L)
HIGH(N, cons(M, L)) -> IFHIGH(le(M, N), N, cons(M, L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

HIGH(N, cons(M, L)) -> IFHIGH(le(M, N), N, cons(M, L))
three new Dependency Pairs are created:

HIGH(N', cons(0, L)) -> IFHIGH(true, N', cons(0, L))
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
HIGH(s(Y'), cons(s(X'), L)) -> IFHIGH(le(X', Y'), s(Y'), cons(s(X'), L))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Narrowing Transformation
       →DP Problem 5
Nar


Dependency Pairs:

HIGH(s(Y'), cons(s(X'), L)) -> IFHIGH(le(X', Y'), s(Y'), cons(s(X'), L))
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
IFHIGH(true, N, cons(M, L)) -> HIGH(N, L)
HIGH(N', cons(0, L)) -> IFHIGH(true, N', cons(0, L))
IFHIGH(false, N, cons(M, L)) -> HIGH(N, L)


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

HIGH(s(Y'), cons(s(X'), L)) -> IFHIGH(le(X', Y'), s(Y'), cons(s(X'), L))
three new Dependency Pairs are created:

HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 34
Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(true, N, cons(M, L)) -> HIGH(N, L)
HIGH(N', cons(0, L)) -> IFHIGH(true, N', cons(0, L))
IFHIGH(false, N, cons(M, L)) -> HIGH(N, L)
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, an Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFHIGH(true, N, cons(M, L)) -> HIGH(N, L)
three new Dependency Pairs are created:

IFHIGH(true, N', cons(0, L'')) -> HIGH(N', L'')
IFHIGH(true, s(Y''''), cons(s(0), L'')) -> HIGH(s(Y''''), L'')
IFHIGH(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 35
Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(Y''''), cons(s(0), L'')) -> HIGH(s(Y''''), L'')
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
IFHIGH(true, N', cons(0, L'')) -> HIGH(N', L'')
HIGH(N', cons(0, L)) -> IFHIGH(true, N', cons(0, L))
IFHIGH(false, N, cons(M, L)) -> HIGH(N, L)
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, an Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFHIGH(false, N, cons(M, L)) -> HIGH(N, L)
three new Dependency Pairs are created:

IFHIGH(false, 0, cons(s(X'''), L'')) -> HIGH(0, L'')
IFHIGH(false, s(0), cons(s(s(X'''')), L'')) -> HIGH(s(0), L'')
IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 36
Forward Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(false, s(0), cons(s(s(X'''')), L'')) -> HIGH(s(0), L'')
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(Y''''), cons(s(0), L'')) -> HIGH(s(Y''''), L'')
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(false, 0, cons(s(X'''), L'')) -> HIGH(0, L'')
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
IFHIGH(true, N', cons(0, L'')) -> HIGH(N', L'')
HIGH(N', cons(0, L)) -> IFHIGH(true, N', cons(0, L))
IFHIGH(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFHIGH(true, N', cons(0, L'')) -> HIGH(N', L'')
five new Dependency Pairs are created:

IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 37
Forward Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(false, s(0), cons(s(s(X'''')), L'')) -> HIGH(s(0), L'')
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(Y''''), cons(s(0), L'')) -> HIGH(s(Y''''), L'')
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
IFHIGH(false, 0, cons(s(X'''), L'')) -> HIGH(0, L'')
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
HIGH(N', cons(0, L)) -> IFHIGH(true, N', cons(0, L))
IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

HIGH(N', cons(0, L)) -> IFHIGH(true, N', cons(0, L))
five new Dependency Pairs are created:

HIGH(N'', cons(0, cons(0, L'''''))) -> IFHIGH(true, N'', cons(0, cons(0, L''''')))
HIGH(0, cons(0, cons(s(X'''''), L'''''))) -> IFHIGH(true, 0, cons(0, cons(s(X'''''), L''''')))
HIGH(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFHIGH(true, s(Y''''''), cons(0, cons(s(0), L''''')))
HIGH(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
HIGH(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 38
Forward Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
HIGH(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
HIGH(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFHIGH(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFHIGH(false, 0, cons(s(X'''), L'')) -> HIGH(0, L'')
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(0, cons(s(X'''''), L'''''))) -> IFHIGH(true, 0, cons(0, cons(s(X'''''), L''''')))
IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
HIGH(N'', cons(0, cons(0, L'''''))) -> IFHIGH(true, N'', cons(0, cons(0, L''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), L'')) -> HIGH(s(0), L'')
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(Y''''), cons(s(0), L'')) -> HIGH(s(Y''''), L'')
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFHIGH(true, s(Y''''), cons(s(0), L'')) -> HIGH(s(Y''''), L'')
seven new Dependency Pairs are created:

IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(0, L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 39
Forward Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))
HIGH(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
HIGH(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
HIGH(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFHIGH(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFHIGH(false, 0, cons(s(X'''), L'')) -> HIGH(0, L'')
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(0, cons(s(X'''''), L'''''))) -> IFHIGH(true, 0, cons(0, cons(s(X'''''), L''''')))
IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
HIGH(N'', cons(0, cons(0, L'''''))) -> IFHIGH(true, N'', cons(0, cons(0, L''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), L'')) -> HIGH(s(0), L'')
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFHIGH(true, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
five new Dependency Pairs are created:

IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 40
Forward Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
HIGH(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
HIGH(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFHIGH(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFHIGH(false, 0, cons(s(X'''), L'')) -> HIGH(0, L'')
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(0, cons(s(X'''''), L'''''))) -> IFHIGH(true, 0, cons(0, cons(s(X'''''), L''''')))
IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
HIGH(N'', cons(0, cons(0, L'''''))) -> IFHIGH(true, N'', cons(0, cons(0, L''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), L'')) -> HIGH(s(0), L'')
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))
HIGH(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFHIGH(false, 0, cons(s(X'''), L'')) -> HIGH(0, L'')
three new Dependency Pairs are created:

IFHIGH(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> HIGH(0, cons(0, cons(0, L''''''')))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> HIGH(0, cons(0, cons(s(X'''''''), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 41
Forward Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
HIGH(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
HIGH(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFHIGH(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> HIGH(0, cons(0, cons(s(X'''''''), L''''''')))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> HIGH(0, cons(0, cons(0, L''''''')))
IFHIGH(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(0, cons(s(X'''''), L'''''))) -> IFHIGH(true, 0, cons(0, cons(s(X'''''), L''''')))
IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
HIGH(N'', cons(0, cons(0, L'''''))) -> IFHIGH(true, N'', cons(0, cons(0, L''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), L'')) -> HIGH(s(0), L'')
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))
HIGH(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

HIGH(0, cons(s(X'), L)) -> IFHIGH(false, 0, cons(s(X'), L))
three new Dependency Pairs are created:

HIGH(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFHIGH(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
HIGH(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
HIGH(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 42
Forward Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))
HIGH(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
HIGH(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> HIGH(0, cons(0, cons(s(X'''''''), L''''''')))
HIGH(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> HIGH(0, cons(0, cons(0, L''''''')))
HIGH(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
IFHIGH(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFHIGH(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(0, cons(s(X'''''), L'''''))) -> IFHIGH(true, 0, cons(0, cons(s(X'''''), L''''')))
IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
HIGH(N'', cons(0, cons(0, L'''''))) -> IFHIGH(true, N'', cons(0, cons(0, L''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), L'')) -> HIGH(s(0), L'')
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
HIGH(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFHIGH(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFHIGH(false, s(0), cons(s(s(X'''')), L'')) -> HIGH(s(0), L'')
five new Dependency Pairs are created:

IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(0), cons(s(0), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(0), cons(0, cons(0, L''''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(0), cons(0, cons(s(0), L''''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 43
Forward Instantiation Transformation
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(0), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
HIGH(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
HIGH(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFHIGH(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> HIGH(0, cons(0, cons(s(X'''''''), L''''''')))
HIGH(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> HIGH(0, cons(0, cons(0, L''''''')))
HIGH(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
IFHIGH(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFHIGH(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(0, cons(s(X'''''), L'''''))) -> IFHIGH(true, 0, cons(0, cons(s(X'''''), L''''')))
IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
HIGH(N'', cons(0, cons(0, L'''''))) -> IFHIGH(true, N'', cons(0, cons(0, L''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(0), cons(0, cons(0, L''''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(0), cons(s(0), L'''))
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))
HIGH(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

IFHIGH(false, s(s(Y'''')), cons(s(s(X'''')), L'')) -> HIGH(s(s(Y'''')), L'')
five new Dependency Pairs are created:

IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 44
Polynomial Ordering
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(0), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
HIGH(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
HIGH(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFHIGH(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> HIGH(0, cons(0, cons(s(X'''''''), L''''''')))
HIGH(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> HIGH(0, cons(0, cons(0, L''''''')))
HIGH(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
IFHIGH(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFHIGH(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(0, cons(s(X'''''), L'''''))) -> IFHIGH(true, 0, cons(0, cons(s(X'''''), L''''')))
IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
HIGH(N'', cons(0, cons(0, L'''''))) -> IFHIGH(true, N'', cons(0, cons(0, L''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(0), cons(0, cons(0, L''''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(0), cons(s(0), L'''))
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))
HIGH(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

IFHIGH(true, s(0), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y''''), cons(0, cons(s(0), L'''))) -> HIGH(s(Y''''), cons(s(0), L'''))
IFHIGH(true, 0, cons(0, cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
IFHIGH(true, N''', cons(0, cons(0, L'''))) -> HIGH(N''', cons(0, L'''))
IFHIGH(true, s(s(Y'''')), cons(0, cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y'''')), cons(s(s(X'''')), L'''))


Additionally, the following usable rules for innermost can be oriented:

le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)


Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  1  
  POL(IFHIGH(x1, x2, x3))=  x3  
  POL(false)=  0  
  POL(cons(x1, x2))=  x1 + x2  
  POL(HIGH(x1, x2))=  x2  
  POL(true)=  0  
  POL(s(x1))=  0  
  POL(le(x1, x2))=  0  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 45
Dependency Graph
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y'''''''')), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y'''''''')), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(0), cons(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(s(0), L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(s(0), L''''''')))
IFHIGH(true, s(Y'''''), cons(s(0), cons(0, cons(0, L''''''')))) -> HIGH(s(Y'''''), cons(0, cons(0, L''''''')))
IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(0), cons(0, cons(s(s(X'''''''')), L''''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(s(0), L''''''')))) -> HIGH(s(0), cons(0, cons(s(0), L''''''')))
HIGH(s(0), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(0), cons(0, cons(s(s(X'''''')), L''''')))
HIGH(s(Y''''''), cons(0, cons(s(0), L'''''))) -> IFHIGH(true, s(Y''''''), cons(0, cons(s(0), L''''')))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(s(X'''''''), L''''''')))) -> HIGH(0, cons(0, cons(s(X'''''''), L''''''')))
HIGH(0, cons(s(X''), cons(0, cons(s(X'''''''''), L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(s(X'''''''''), L'''''''''))))
IFHIGH(false, 0, cons(s(X'''), cons(0, cons(0, L''''''')))) -> HIGH(0, cons(0, cons(0, L''''''')))
HIGH(0, cons(s(X''), cons(0, cons(0, L''''''''')))) -> IFHIGH(false, 0, cons(s(X''), cons(0, cons(0, L'''''''''))))
IFHIGH(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))
HIGH(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFHIGH(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
HIGH(0, cons(0, cons(s(X'''''), L'''''))) -> IFHIGH(true, 0, cons(0, cons(s(X'''''), L''''')))
HIGH(N'', cons(0, cons(0, L'''''))) -> IFHIGH(true, N'', cons(0, cons(0, L''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(0, cons(0, L''''''')))) -> HIGH(s(0), cons(0, cons(0, L''''''')))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(0), cons(s(0), L'''))
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
HIGH(s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L'''''))) -> IFHIGH(true, s(s(Y'''''')), cons(0, cons(s(s(X'''''')), L''''')))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(0, cons(s(s(X'''''''')), L''''''')))) -> HIGH(s(s(Y''''')), cons(0, cons(s(s(X'''''''')), L''''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph the DP problem was split into 2 DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 46
Polynomial Ordering
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(0), cons(s(0), L'''))
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

IFHIGH(true, s(s(Y''''')), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(0), cons(s(0), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(true, s(Y'''''), cons(s(0), cons(s(0), L'''))) -> HIGH(s(Y'''''), cons(s(0), L'''))


Additionally, the following usable rules for innermost can be oriented:

le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)


Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  1  
  POL(IFHIGH(x1, x2, x3))=  x3  
  POL(false)=  0  
  POL(cons(x1, x2))=  x1 + x2  
  POL(HIGH(x1, x2))=  x2  
  POL(true)=  0  
  POL(s(x1))=  x1  
  POL(le(x1, x2))=  0  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 48
Dependency Graph
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(0), cons(s(0), L'''))
HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
HIGH(s(Y''), cons(s(0), L)) -> IFHIGH(true, s(Y''), cons(s(0), L))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(0), L'''))) -> HIGH(s(s(Y''''')), cons(s(0), L'''))
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph the DP problem was split into 2 DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 50
Polynomial Ordering
       →DP Problem 5
Nar


Dependency Pairs:

IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

IFHIGH(false, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))
IFHIGH(true, s(s(Y''''')), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(s(Y''''')), cons(s(s(X'''')), L'''))


Additionally, the following usable rules for innermost can be oriented:

le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)


Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  0  
  POL(IFHIGH(x1, x2, x3))=  x3  
  POL(false)=  0  
  POL(cons(x1, x2))=  1 + x2  
  POL(HIGH(x1, x2))=  x2  
  POL(true)=  0  
  POL(s(x1))=  0  
  POL(le(x1, x2))=  0  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 52
Dependency Graph
       →DP Problem 5
Nar


Dependency Pair:

HIGH(s(s(Y'')), cons(s(s(X'')), L)) -> IFHIGH(le(X'', Y''), s(s(Y'')), cons(s(s(X'')), L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 51
Polynomial Ordering
       →DP Problem 5
Nar


Dependency Pairs:

HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))
IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pair can be strictly oriented:

IFHIGH(false, s(0), cons(s(s(X'''')), cons(s(s(X'''')), L'''))) -> HIGH(s(0), cons(s(s(X'''')), L'''))


There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  0  
  POL(IFHIGH(x1, x2, x3))=  x3  
  POL(cons(x1, x2))=  x1 + x2  
  POL(false)=  0  
  POL(HIGH(x1, x2))=  x2  
  POL(s(x1))=  1  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 53
Dependency Graph
       →DP Problem 5
Nar


Dependency Pair:

HIGH(s(0), cons(s(s(X'')), L)) -> IFHIGH(false, s(0), cons(s(s(X'')), L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 47
Polynomial Ordering
       →DP Problem 5
Nar


Dependency Pairs:

HIGH(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFHIGH(false, 0, cons(s(X''), cons(s(X''''''), L''''')))
IFHIGH(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pair can be strictly oriented:

IFHIGH(false, 0, cons(s(X'''), cons(s(X'''), L'''))) -> HIGH(0, cons(s(X'''), L'''))


There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(0)=  0  
  POL(IFHIGH(x1, x2, x3))=  x3  
  POL(cons(x1, x2))=  x1 + x2  
  POL(false)=  0  
  POL(HIGH(x1, x2))=  x2  
  POL(s(x1))=  1  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
           →DP Problem 33
Nar
             ...
               →DP Problem 49
Dependency Graph
       →DP Problem 5
Nar


Dependency Pair:

HIGH(0, cons(s(X''), cons(s(X''''''), L'''''))) -> IFHIGH(false, 0, cons(s(X''), cons(s(X''''''), L''''')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Narrowing Transformation


Dependency Pairs:

QUICKSORT(cons(N, L)) -> QUICKSORT(high(N, L))
QUICKSORT(cons(N, L)) -> QUICKSORT(low(N, L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

QUICKSORT(cons(N, L)) -> QUICKSORT(low(N, L))
two new Dependency Pairs are created:

QUICKSORT(cons(N'', nil)) -> QUICKSORT(nil)
QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(iflow(le(M', N''), N'', cons(M', L'')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Narrowing Transformation


Dependency Pairs:

QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(iflow(le(M', N''), N'', cons(M', L'')))
QUICKSORT(cons(N, L)) -> QUICKSORT(high(N, L))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

QUICKSORT(cons(N, L)) -> QUICKSORT(high(N, L))
two new Dependency Pairs are created:

QUICKSORT(cons(N'', nil)) -> QUICKSORT(nil)
QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(ifhigh(le(M', N''), N'', cons(M', L'')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 55
Narrowing Transformation


Dependency Pairs:

QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(ifhigh(le(M', N''), N'', cons(M', L'')))
QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(iflow(le(M', N''), N'', cons(M', L'')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(iflow(le(M', N''), N'', cons(M', L'')))
three new Dependency Pairs are created:

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(iflow(true, N''', cons(0, L'')))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(iflow(false, 0, cons(s(X'), L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 56
Rewriting Transformation


Dependency Pairs:

QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(iflow(false, 0, cons(s(X'), L'')))
QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(iflow(true, N''', cons(0, L'')))
QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(ifhigh(le(M', N''), N'', cons(M', L'')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Rewriting SCC transformation can be performed.
As a result of transforming the rule

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(iflow(true, N''', cons(0, L'')))
one new Dependency Pair is created:

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(cons(0, low(N''', L'')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 57
Rewriting Transformation


Dependency Pairs:

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(cons(0, low(N''', L'')))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(iflow(false, 0, cons(s(X'), L'')))
QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(ifhigh(le(M', N''), N'', cons(M', L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Rewriting SCC transformation can be performed.
As a result of transforming the rule

QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(iflow(false, 0, cons(s(X'), L'')))
one new Dependency Pair is created:

QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(low(0, L''))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 58
Narrowing Transformation


Dependency Pairs:

QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(low(0, L''))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(ifhigh(le(M', N''), N'', cons(M', L'')))
QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(cons(0, low(N''', L'')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

QUICKSORT(cons(N'', cons(M', L''))) -> QUICKSORT(ifhigh(le(M', N''), N'', cons(M', L'')))
three new Dependency Pairs are created:

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(ifhigh(true, N''', cons(0, L'')))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(ifhigh(false, 0, cons(s(X'), L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(ifhigh(le(X', Y'), s(Y'), cons(s(X'), L'')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 59
Rewriting Transformation


Dependency Pairs:

QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(ifhigh(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(ifhigh(false, 0, cons(s(X'), L'')))
QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(ifhigh(true, N''', cons(0, L'')))
QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(cons(0, low(N''', L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(low(0, L''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Rewriting SCC transformation can be performed.
As a result of transforming the rule

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(ifhigh(true, N''', cons(0, L'')))
one new Dependency Pair is created:

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(high(N''', L''))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 60
Rewriting Transformation


Dependency Pairs:

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(high(N''', L''))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(ifhigh(false, 0, cons(s(X'), L'')))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(low(0, L''))
QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(cons(0, low(N''', L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(ifhigh(le(X', Y'), s(Y'), cons(s(X'), L'')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




On this DP problem, a Rewriting SCC transformation can be performed.
As a result of transforming the rule

QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(ifhigh(false, 0, cons(s(X'), L'')))
one new Dependency Pair is created:

QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(cons(s(X'), high(0, L'')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 61
Polynomial Ordering


Dependency Pairs:

QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(cons(s(X'), high(0, L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(ifhigh(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(low(0, L''))
QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(cons(0, low(N''', L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(high(N''', L''))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(cons(s(X'), high(0, L'')))
QUICKSORT(cons(0, cons(s(X'), L''))) -> QUICKSORT(low(0, L''))
QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(high(N''', L''))


Additionally, the following usable rules for innermost can be oriented:

high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)


Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(QUICKSORT(x1))=  1 + x1  
  POL(iflow(x1, x2, x3))=  x3  
  POL(0)=  1  
  POL(cons(x1, x2))=  x1 + x2  
  POL(false)=  0  
  POL(high(x1, x2))=  x2  
  POL(low(x1, x2))=  x2  
  POL(nil)=  0  
  POL(true)=  0  
  POL(s(x1))=  0  
  POL(ifhigh(x1, x2, x3))=  x3  
  POL(le(x1, x2))=  0  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 62
Dependency Graph


Dependency Pairs:

QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(ifhigh(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(cons(0, low(N''', L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph the DP problem was split into 2 DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 63
Polynomial Ordering


Dependency Pair:

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(cons(0, low(N''', L'')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pair can be strictly oriented:

QUICKSORT(cons(N''', cons(0, L''))) -> QUICKSORT(cons(0, low(N''', L'')))


Additionally, the following usable rules for innermost can be oriented:

low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)


Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(QUICKSORT(x1))=  1 + x1  
  POL(iflow(x1, x2, x3))=  x3  
  POL(0)=  0  
  POL(cons(x1, x2))=  1 + x2  
  POL(false)=  0  
  POL(low(x1, x2))=  x2  
  POL(nil)=  0  
  POL(true)=  0  
  POL(s(x1))=  0  
  POL(le(x1, x2))=  0  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 65
Dependency Graph


Dependency Pair:


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.


   R
DPs
       →DP Problem 1
FwdInst
       →DP Problem 2
FwdInst
       →DP Problem 3
Nar
       →DP Problem 4
Nar
       →DP Problem 5
Nar
           →DP Problem 54
Nar
             ...
               →DP Problem 64
Polynomial Ordering


Dependency Pairs:

QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(ifhigh(le(X', Y'), s(Y'), cons(s(X'), L'')))


Rules:


le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
app(nil, Y) -> Y
app(cons(N, L), Y) -> cons(N, app(L, Y))
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
quicksort(nil) -> nil
quicksort(cons(N, L)) -> app(quicksort(low(N, L)), cons(N, quicksort(high(N, L))))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(iflow(le(X', Y'), s(Y'), cons(s(X'), L'')))
QUICKSORT(cons(s(Y'), cons(s(X'), L''))) -> QUICKSORT(ifhigh(le(X', Y'), s(Y'), cons(s(X'), L'')))


Additionally, the following usable rules for innermost can be oriented:

iflow(true, N, cons(M, L)) -> cons(M, low(N, L))
iflow(false, N, cons(M, L)) -> low(N, L)
le(0, Y) -> true
le(s(X), 0) -> false
le(s(X), s(Y)) -> le(X, Y)
low(N, nil) -> nil
low(N, cons(M, L)) -> iflow(le(M, N), N, cons(M, L))
ifhigh(true, N, cons(M, L)) -> high(N, L)
ifhigh(false, N, cons(M, L)) -> cons(M, high(N, L))
high(N, nil) -> nil
high(N, cons(M, L)) -> ifhigh(le(M, N), N, cons(M, L))


Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(QUICKSORT(x1))=  x1  
  POL(iflow(x1, x2, x3))=  x3  
  POL(0)=  0  
  POL(cons(x1, x2))=  1 + x2  
  POL(false)=  0  
  POL(high(x1, x2))=  x2  
  POL(low(x1, x2))=  x2  
  POL(true)=  0  
  POL(nil)=  0  
  POL(s(x1))=  0  
  POL(ifhigh(x1, x2, x3))=  x3  
  POL(le(x1, x2))=  0  

resulting in one new DP problem.


Innermost Termination of R successfully shown.
Duration:
0:20 minutes