Term Rewriting System R:
[x, y, n, m]
minus(x, 0) -> x
minus(s(x), s(y)) -> minus(x, y)
quot(0, s(y)) -> 0
quot(s(x), s(y)) -> s(quot(minus(x, y), s(y)))
le(0, y) -> true
le(s(x), 0) -> false
le(s(x), s(y)) -> le(x, y)
app(nil, y) -> y
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)
high(n, nil) -> nil
ifhigh(true, n, add(m, x)) -> high(n, x)
quicksort(nil) -> nil

Termination of R to be shown.

`   R`
`     ↳Overlay and local confluence Check`

The TRS is overlay and locally confluent (all critical pairs are trivially joinable).Hence, we can switch to innermost.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳Dependency Pair Analysis`

R contains the following Dependency Pairs:

MINUS(s(x), s(y)) -> MINUS(x, y)
QUOT(s(x), s(y)) -> QUOT(minus(x, y), s(y))
QUOT(s(x), s(y)) -> MINUS(x, y)
LE(s(x), s(y)) -> LE(x, y)
APP(add(n, x), y) -> APP(x, y)
LOW(n, add(m, x)) -> LE(m, n)
IFLOW(true, n, add(m, x)) -> LOW(n, x)
IFLOW(false, n, add(m, x)) -> LOW(n, x)
HIGH(n, add(m, x)) -> LE(m, n)
IFHIGH(true, n, add(m, x)) -> HIGH(n, x)
IFHIGH(false, n, add(m, x)) -> HIGH(n, x)

Furthermore, R contains seven SCCs.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳Usable Rules (Innermost)`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pair:

MINUS(s(x), s(y)) -> MINUS(x, y)

Rules:

minus(x, 0) -> x
minus(s(x), s(y)) -> minus(x, y)
quot(0, s(y)) -> 0
quot(s(x), s(y)) -> s(quot(minus(x, y), s(y)))
le(0, y) -> true
le(s(x), 0) -> false
le(s(x), s(y)) -> le(x, y)
app(nil, y) -> y
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)
high(n, nil) -> nil
ifhigh(true, n, add(m, x)) -> high(n, x)
quicksort(nil) -> nil

Strategy:

innermost

As we are in the innermost case, we can delete all 19 non-usable-rules.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`             ...`
`               →DP Problem 8`
`                 ↳Size-Change Principle`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pair:

MINUS(s(x), s(y)) -> MINUS(x, y)

Rule:

none

Strategy:

innermost

We number the DPs as follows:
1. MINUS(s(x), s(y)) -> MINUS(x, y)
and get the following Size-Change Graph(s):
{1} , {1}
1>1
2>2

which lead(s) to this/these maximal multigraph(s):
{1} , {1}
1>1
2>2

DP: empty set
Oriented Rules: none

We used the order Homeomorphic Embedding Order with Non-Strict Precedence.
trivial

with Argument Filtering System:
s(x1) -> s(x1)

We obtain no new DP problems.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳Usable Rules (Innermost)`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pair:

LE(s(x), s(y)) -> LE(x, y)

Rules:

minus(x, 0) -> x
minus(s(x), s(y)) -> minus(x, y)
quot(0, s(y)) -> 0
quot(s(x), s(y)) -> s(quot(minus(x, y), s(y)))
le(0, y) -> true
le(s(x), 0) -> false
le(s(x), s(y)) -> le(x, y)
app(nil, y) -> y
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)
high(n, nil) -> nil
ifhigh(true, n, add(m, x)) -> high(n, x)
quicksort(nil) -> nil

Strategy:

innermost

As we are in the innermost case, we can delete all 19 non-usable-rules.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`             ...`
`               →DP Problem 9`
`                 ↳Size-Change Principle`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pair:

LE(s(x), s(y)) -> LE(x, y)

Rule:

none

Strategy:

innermost

We number the DPs as follows:
1. LE(s(x), s(y)) -> LE(x, y)
and get the following Size-Change Graph(s):
{1} , {1}
1>1
2>2

which lead(s) to this/these maximal multigraph(s):
{1} , {1}
1>1
2>2

DP: empty set
Oriented Rules: none

We used the order Homeomorphic Embedding Order with Non-Strict Precedence.
trivial

with Argument Filtering System:
s(x1) -> s(x1)

We obtain no new DP problems.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳Usable Rules (Innermost)`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pair:

APP(add(n, x), y) -> APP(x, y)

Rules:

minus(x, 0) -> x
minus(s(x), s(y)) -> minus(x, y)
quot(0, s(y)) -> 0
quot(s(x), s(y)) -> s(quot(minus(x, y), s(y)))
le(0, y) -> true
le(s(x), 0) -> false
le(s(x), s(y)) -> le(x, y)
app(nil, y) -> y
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)
high(n, nil) -> nil
ifhigh(true, n, add(m, x)) -> high(n, x)
quicksort(nil) -> nil

Strategy:

innermost

As we are in the innermost case, we can delete all 19 non-usable-rules.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`             ...`
`               →DP Problem 10`
`                 ↳Size-Change Principle`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pair:

APP(add(n, x), y) -> APP(x, y)

Rule:

none

Strategy:

innermost

We number the DPs as follows:
1. APP(add(n, x), y) -> APP(x, y)
and get the following Size-Change Graph(s):
{1} , {1}
1>1
2=2

which lead(s) to this/these maximal multigraph(s):
{1} , {1}
1>1
2=2

DP: empty set
Oriented Rules: none

We used the order Homeomorphic Embedding Order with Non-Strict Precedence.
trivial

with Argument Filtering System:

We obtain no new DP problems.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳Usable Rules (Innermost)`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pair:

QUOT(s(x), s(y)) -> QUOT(minus(x, y), s(y))

Rules:

minus(x, 0) -> x
minus(s(x), s(y)) -> minus(x, y)
quot(0, s(y)) -> 0
quot(s(x), s(y)) -> s(quot(minus(x, y), s(y)))
le(0, y) -> true
le(s(x), 0) -> false
le(s(x), s(y)) -> le(x, y)
app(nil, y) -> y
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)
high(n, nil) -> nil
ifhigh(true, n, add(m, x)) -> high(n, x)
quicksort(nil) -> nil

Strategy:

innermost

As we are in the innermost case, we can delete all 17 non-usable-rules.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`             ...`
`               →DP Problem 11`
`                 ↳Negative Polynomial Order`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pair:

QUOT(s(x), s(y)) -> QUOT(minus(x, y), s(y))

Rules:

minus(s(x), s(y)) -> minus(x, y)
minus(x, 0) -> x

Strategy:

innermost

The following Dependency Pair can be strictly oriented using the given order.

QUOT(s(x), s(y)) -> QUOT(minus(x, y), s(y))

Moreover, the following usable rules (regarding the implicit AFS) are oriented.

minus(s(x), s(y)) -> minus(x, y)
minus(x, 0) -> x

Used ordering:
Polynomial Order with Interpretation:

POL( QUOT(x1, x2) ) = x1

POL( s(x1) ) = x1 + 1

POL( minus(x1, x2) ) = x1

This results in one new DP problem.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`             ...`
`               →DP Problem 12`
`                 ↳Dependency Graph`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pair:

Rules:

minus(s(x), s(y)) -> minus(x, y)
minus(x, 0) -> x

Strategy:

innermost

Using the Dependency Graph resulted in no new DP problems.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳Usable Rules (Innermost)`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pairs:

IFLOW(false, n, add(m, x)) -> LOW(n, x)
IFLOW(true, n, add(m, x)) -> LOW(n, x)

Rules:

minus(x, 0) -> x
minus(s(x), s(y)) -> minus(x, y)
quot(0, s(y)) -> 0
quot(s(x), s(y)) -> s(quot(minus(x, y), s(y)))
le(0, y) -> true
le(s(x), 0) -> false
le(s(x), s(y)) -> le(x, y)
app(nil, y) -> y
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)
high(n, nil) -> nil
ifhigh(true, n, add(m, x)) -> high(n, x)
quicksort(nil) -> nil

Strategy:

innermost

As we are in the innermost case, we can delete all 16 non-usable-rules.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`             ...`
`               →DP Problem 13`
`                 ↳Size-Change Principle`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pairs:

IFLOW(false, n, add(m, x)) -> LOW(n, x)
IFLOW(true, n, add(m, x)) -> LOW(n, x)

Rules:

le(s(x), s(y)) -> le(x, y)
le(0, y) -> true
le(s(x), 0) -> false

Strategy:

innermost

We number the DPs as follows:
1. IFLOW(false, n, add(m, x)) -> LOW(n, x)
2. IFLOW(true, n, add(m, x)) -> LOW(n, x)
and get the following Size-Change Graph(s):
{1, 2} , {1, 2}
2=1
3>2
{3} , {3}
1=2
2=3

which lead(s) to this/these maximal multigraph(s):
{1, 2} , {3}
2=2
3>3
{3} , {1, 2}
1=1
2>2

DP: empty set
Oriented Rules: none

We used the order Homeomorphic Embedding Order with Non-Strict Precedence.
trivial

with Argument Filtering System:

We obtain no new DP problems.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳Usable Rules (Innermost)`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pairs:

IFHIGH(false, n, add(m, x)) -> HIGH(n, x)
IFHIGH(true, n, add(m, x)) -> HIGH(n, x)

Rules:

minus(x, 0) -> x
minus(s(x), s(y)) -> minus(x, y)
quot(0, s(y)) -> 0
quot(s(x), s(y)) -> s(quot(minus(x, y), s(y)))
le(0, y) -> true
le(s(x), 0) -> false
le(s(x), s(y)) -> le(x, y)
app(nil, y) -> y
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)
high(n, nil) -> nil
ifhigh(true, n, add(m, x)) -> high(n, x)
quicksort(nil) -> nil

Strategy:

innermost

As we are in the innermost case, we can delete all 16 non-usable-rules.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`             ...`
`               →DP Problem 14`
`                 ↳Size-Change Principle`
`           →DP Problem 7`
`             ↳UsableRules`

Dependency Pairs:

IFHIGH(false, n, add(m, x)) -> HIGH(n, x)
IFHIGH(true, n, add(m, x)) -> HIGH(n, x)

Rules:

le(s(x), s(y)) -> le(x, y)
le(0, y) -> true
le(s(x), 0) -> false

Strategy:

innermost

We number the DPs as follows:
1. IFHIGH(false, n, add(m, x)) -> HIGH(n, x)
2. IFHIGH(true, n, add(m, x)) -> HIGH(n, x)
and get the following Size-Change Graph(s):
{1, 2} , {1, 2}
2=1
3>2
{3} , {3}
1=2
2=3

which lead(s) to this/these maximal multigraph(s):
{3} , {1, 2}
1=1
2>2
{1, 2} , {3}
2=2
3>3

DP: empty set
Oriented Rules: none

We used the order Homeomorphic Embedding Order with Non-Strict Precedence.
trivial

with Argument Filtering System:

We obtain no new DP problems.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳Usable Rules (Innermost)`

Dependency Pairs:

Rules:

minus(x, 0) -> x
minus(s(x), s(y)) -> minus(x, y)
quot(0, s(y)) -> 0
quot(s(x), s(y)) -> s(quot(minus(x, y), s(y)))
le(0, y) -> true
le(s(x), 0) -> false
le(s(x), s(y)) -> le(x, y)
app(nil, y) -> y
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)
high(n, nil) -> nil
ifhigh(true, n, add(m, x)) -> high(n, x)
quicksort(nil) -> nil

Strategy:

innermost

As we are in the innermost case, we can delete all 8 non-usable-rules.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`
`             ...`
`               →DP Problem 15`
`                 ↳Negative Polynomial Order`

Dependency Pairs:

Rules:

le(s(x), s(y)) -> le(x, y)
le(0, y) -> true
le(s(x), 0) -> false
ifhigh(true, n, add(m, x)) -> high(n, x)
high(n, nil) -> nil
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)

Strategy:

innermost

The following Dependency Pairs can be strictly oriented using the given order.

Moreover, the following usable rules (regarding the implicit AFS) are oriented.

le(s(x), s(y)) -> le(x, y)
le(0, y) -> true
le(s(x), 0) -> false
ifhigh(true, n, add(m, x)) -> high(n, x)
high(n, nil) -> nil
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)

Used ordering:
Polynomial Order with Interpretation:

POL( QUICKSORT(x1) ) = x1

POL( add(x1, x2) ) = x2 + 1

POL( high(x1, x2) ) = x2

POL( low(x1, x2) ) = x2

POL( le(x1, x2) ) = 0

POL( true ) = 0

POL( false ) = 0

POL( ifhigh(x1, ..., x3) ) = x3

POL( nil ) = 0

POL( iflow(x1, ..., x3) ) = x3

This results in one new DP problem.

`   R`
`     ↳OC`
`       →TRS2`
`         ↳DPs`
`           →DP Problem 1`
`             ↳UsableRules`
`           →DP Problem 2`
`             ↳UsableRules`
`           →DP Problem 3`
`             ↳UsableRules`
`           →DP Problem 4`
`             ↳UsableRules`
`           →DP Problem 5`
`             ↳UsableRules`
`           →DP Problem 6`
`             ↳UsableRules`
`           →DP Problem 7`
`             ↳UsableRules`
`             ...`
`               →DP Problem 16`
`                 ↳Dependency Graph`

Dependency Pair:

Rules:

le(s(x), s(y)) -> le(x, y)
le(0, y) -> true
le(s(x), 0) -> false
ifhigh(true, n, add(m, x)) -> high(n, x)
high(n, nil) -> nil
low(n, nil) -> nil
iflow(false, n, add(m, x)) -> low(n, x)

Strategy:

innermost

Using the Dependency Graph resulted in no new DP problems.

Termination of R successfully shown.
Duration:
0:01 minutes