Term Rewriting System R:
[m, n, x, k]
eq(0, 0) -> true
eq(0, s(m)) -> false
eq(s(n), 0) -> false
eq(s(n), s(m)) -> eq(n, m)
le(0, m) -> true
le(s(n), 0) -> false
le(s(n), s(m)) -> le(n, m)
min(cons(0, nil)) -> 0
min(cons(s(n), nil)) -> s(n)
min(cons(n, cons(m, x))) -> ifmin(le(n, m), cons(n, cons(m, x)))
ifmin(true, cons(n, cons(m, x))) -> min(cons(n, x))
ifmin(false, cons(n, cons(m, x))) -> min(cons(m, x))
replace(n, m, nil) -> nil
replace(n, m, cons(k, x)) -> ifreplace(eq(n, k), n, m, cons(k, x))
ifreplace(true, n, m, cons(k, x)) -> cons(m, x)
ifreplace(false, n, m, cons(k, x)) -> cons(k, replace(n, m, x))
sort(nil) -> nil
sort(cons(n, x)) -> cons(min(cons(n, x)), sort(replace(min(cons(n, x)), n, x)))

Innermost Termination of R to be shown.



   R
Dependency Pair Analysis



R contains the following Dependency Pairs:

EQ(s(n), s(m)) -> EQ(n, m)
LE(s(n), s(m)) -> LE(n, m)
MIN(cons(n, cons(m, x))) -> IFMIN(le(n, m), cons(n, cons(m, x)))
MIN(cons(n, cons(m, x))) -> LE(n, m)
IFMIN(true, cons(n, cons(m, x))) -> MIN(cons(n, x))
IFMIN(false, cons(n, cons(m, x))) -> MIN(cons(m, x))
REPLACE(n, m, cons(k, x)) -> IFREPLACE(eq(n, k), n, m, cons(k, x))
REPLACE(n, m, cons(k, x)) -> EQ(n, k)
IFREPLACE(false, n, m, cons(k, x)) -> REPLACE(n, m, x)
SORT(cons(n, x)) -> MIN(cons(n, x))
SORT(cons(n, x)) -> SORT(replace(min(cons(n, x)), n, x))
SORT(cons(n, x)) -> REPLACE(min(cons(n, x)), n, x)

Furthermore, R contains five SCCs.


   R
DPs
       →DP Problem 1
Usable Rules (Innermost)
       →DP Problem 2
UsableRules
       →DP Problem 3
UsableRules
       →DP Problem 4
UsableRules
       →DP Problem 5
UsableRules


Dependency Pair:

EQ(s(n), s(m)) -> EQ(n, m)


Rules:


eq(0, 0) -> true
eq(0, s(m)) -> false
eq(s(n), 0) -> false
eq(s(n), s(m)) -> eq(n, m)
le(0, m) -> true
le(s(n), 0) -> false
le(s(n), s(m)) -> le(n, m)
min(cons(0, nil)) -> 0
min(cons(s(n), nil)) -> s(n)
min(cons(n, cons(m, x))) -> ifmin(le(n, m), cons(n, cons(m, x)))
ifmin(true, cons(n, cons(m, x))) -> min(cons(n, x))
ifmin(false, cons(n, cons(m, x))) -> min(cons(m, x))
replace(n, m, nil) -> nil
replace(n, m, cons(k, x)) -> ifreplace(eq(n, k), n, m, cons(k, x))
ifreplace(true, n, m, cons(k, x)) -> cons(m, x)
ifreplace(false, n, m, cons(k, x)) -> cons(k, replace(n, m, x))
sort(nil) -> nil
sort(cons(n, x)) -> cons(min(cons(n, x)), sort(replace(min(cons(n, x)), n, x)))


Strategy:

innermost




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


   R
DPs
       →DP Problem 1
UsableRules
           →DP Problem 6
Size-Change Principle
       →DP Problem 2
UsableRules
       →DP Problem 3
UsableRules
       →DP Problem 4
UsableRules
       →DP Problem 5
UsableRules


Dependency Pair:

EQ(s(n), s(m)) -> EQ(n, m)


Rule:

none


Strategy:

innermost




We number the DPs as follows:
  1. EQ(s(n), s(m)) -> EQ(n, m)
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
DPs
       →DP Problem 1
UsableRules
       →DP Problem 2
Usable Rules (Innermost)
       →DP Problem 3
UsableRules
       →DP Problem 4
UsableRules
       →DP Problem 5
UsableRules


Dependency Pair:

LE(s(n), s(m)) -> LE(n, m)


Rules:


eq(0, 0) -> true
eq(0, s(m)) -> false
eq(s(n), 0) -> false
eq(s(n), s(m)) -> eq(n, m)
le(0, m) -> true
le(s(n), 0) -> false
le(s(n), s(m)) -> le(n, m)
min(cons(0, nil)) -> 0
min(cons(s(n), nil)) -> s(n)
min(cons(n, cons(m, x))) -> ifmin(le(n, m), cons(n, cons(m, x)))
ifmin(true, cons(n, cons(m, x))) -> min(cons(n, x))
ifmin(false, cons(n, cons(m, x))) -> min(cons(m, x))
replace(n, m, nil) -> nil
replace(n, m, cons(k, x)) -> ifreplace(eq(n, k), n, m, cons(k, x))
ifreplace(true, n, m, cons(k, x)) -> cons(m, x)
ifreplace(false, n, m, cons(k, x)) -> cons(k, replace(n, m, x))
sort(nil) -> nil
sort(cons(n, x)) -> cons(min(cons(n, x)), sort(replace(min(cons(n, x)), n, x)))


Strategy:

innermost




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


   R
DPs
       →DP Problem 1
UsableRules
       →DP Problem 2
UsableRules
           →DP Problem 7
Size-Change Principle
       →DP Problem 3
UsableRules
       →DP Problem 4
UsableRules
       →DP Problem 5
UsableRules


Dependency Pair:

LE(s(n), s(m)) -> LE(n, m)


Rule:

none


Strategy:

innermost




We number the DPs as follows:
  1. LE(s(n), s(m)) -> LE(n, m)
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
DPs
       →DP Problem 1
UsableRules
       →DP Problem 2
UsableRules
       →DP Problem 3
Usable Rules (Innermost)
       →DP Problem 4
UsableRules
       →DP Problem 5
UsableRules


Dependency Pairs:

IFREPLACE(false, n, m, cons(k, x)) -> REPLACE(n, m, x)
REPLACE(n, m, cons(k, x)) -> IFREPLACE(eq(n, k), n, m, cons(k, x))


Rules:


eq(0, 0) -> true
eq(0, s(m)) -> false
eq(s(n), 0) -> false
eq(s(n), s(m)) -> eq(n, m)
le(0, m) -> true
le(s(n), 0) -> false
le(s(n), s(m)) -> le(n, m)
min(cons(0, nil)) -> 0
min(cons(s(n), nil)) -> s(n)
min(cons(n, cons(m, x))) -> ifmin(le(n, m), cons(n, cons(m, x)))
ifmin(true, cons(n, cons(m, x))) -> min(cons(n, x))
ifmin(false, cons(n, cons(m, x))) -> min(cons(m, x))
replace(n, m, nil) -> nil
replace(n, m, cons(k, x)) -> ifreplace(eq(n, k), n, m, cons(k, x))
ifreplace(true, n, m, cons(k, x)) -> cons(m, x)
ifreplace(false, n, m, cons(k, x)) -> cons(k, replace(n, m, x))
sort(nil) -> nil
sort(cons(n, x)) -> cons(min(cons(n, x)), sort(replace(min(cons(n, x)), n, x)))


Strategy:

innermost




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


   R
DPs
       →DP Problem 1
UsableRules
       →DP Problem 2
UsableRules
       →DP Problem 3
UsableRules
           →DP Problem 8
Size-Change Principle
       →DP Problem 4
UsableRules
       →DP Problem 5
UsableRules


Dependency Pairs:

IFREPLACE(false, n, m, cons(k, x)) -> REPLACE(n, m, x)
REPLACE(n, m, cons(k, x)) -> IFREPLACE(eq(n, k), n, m, cons(k, x))


Rules:


eq(0, 0) -> true
eq(0, s(m)) -> false
eq(s(n), s(m)) -> eq(n, m)
eq(s(n), 0) -> false


Strategy:

innermost




We number the DPs as follows:
  1. IFREPLACE(false, n, m, cons(k, x)) -> REPLACE(n, m, x)
  2. REPLACE(n, m, cons(k, x)) -> IFREPLACE(eq(n, k), n, m, cons(k, x))
and get the following Size-Change Graph(s):
{1} , {1}
2=1
3=2
4>3
{2} , {2}
1=2
2=3
3=4

which lead(s) to this/these maximal multigraph(s):
{1} , {2}
2=2
3=3
4>4
{2} , {1}
1=1
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:
cons(x1, x2) -> cons(x1, x2)

We obtain no new DP problems.


   R
DPs
       →DP Problem 1
UsableRules
       →DP Problem 2
UsableRules
       →DP Problem 3
UsableRules
       →DP Problem 4
Usable Rules (Innermost)
       →DP Problem 5
UsableRules


Dependency Pairs:

IFMIN(false, cons(n, cons(m, x))) -> MIN(cons(m, x))
IFMIN(true, cons(n, cons(m, x))) -> MIN(cons(n, x))
MIN(cons(n, cons(m, x))) -> IFMIN(le(n, m), cons(n, cons(m, x)))


Rules:


eq(0, 0) -> true
eq(0, s(m)) -> false
eq(s(n), 0) -> false
eq(s(n), s(m)) -> eq(n, m)
le(0, m) -> true
le(s(n), 0) -> false
le(s(n), s(m)) -> le(n, m)
min(cons(0, nil)) -> 0
min(cons(s(n), nil)) -> s(n)
min(cons(n, cons(m, x))) -> ifmin(le(n, m), cons(n, cons(m, x)))
ifmin(true, cons(n, cons(m, x))) -> min(cons(n, x))
ifmin(false, cons(n, cons(m, x))) -> min(cons(m, x))
replace(n, m, nil) -> nil
replace(n, m, cons(k, x)) -> ifreplace(eq(n, k), n, m, cons(k, x))
ifreplace(true, n, m, cons(k, x)) -> cons(m, x)
ifreplace(false, n, m, cons(k, x)) -> cons(k, replace(n, m, x))
sort(nil) -> nil
sort(cons(n, x)) -> cons(min(cons(n, x)), sort(replace(min(cons(n, x)), n, x)))


Strategy:

innermost




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


   R
DPs
       →DP Problem 1
UsableRules
       →DP Problem 2
UsableRules
       →DP Problem 3
UsableRules
       →DP Problem 4
UsableRules
           →DP Problem 9
Size-Change Principle
       →DP Problem 5
UsableRules


Dependency Pairs:

IFMIN(false, cons(n, cons(m, x))) -> MIN(cons(m, x))
IFMIN(true, cons(n, cons(m, x))) -> MIN(cons(n, x))
MIN(cons(n, cons(m, x))) -> IFMIN(le(n, m), cons(n, cons(m, x)))


Rules:


le(s(n), s(m)) -> le(n, m)
le(0, m) -> true
le(s(n), 0) -> false


Strategy:

innermost




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

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

DP: empty set
Oriented Rules: none

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

with Argument Filtering System:
cons(x1, x2) -> cons(x1, x2)

We obtain no new DP problems.


   R
DPs
       →DP Problem 1
UsableRules
       →DP Problem 2
UsableRules
       →DP Problem 3
UsableRules
       →DP Problem 4
UsableRules
       →DP Problem 5
Usable Rules (Innermost)


Dependency Pair:

SORT(cons(n, x)) -> SORT(replace(min(cons(n, x)), n, x))


Rules:


eq(0, 0) -> true
eq(0, s(m)) -> false
eq(s(n), 0) -> false
eq(s(n), s(m)) -> eq(n, m)
le(0, m) -> true
le(s(n), 0) -> false
le(s(n), s(m)) -> le(n, m)
min(cons(0, nil)) -> 0
min(cons(s(n), nil)) -> s(n)
min(cons(n, cons(m, x))) -> ifmin(le(n, m), cons(n, cons(m, x)))
ifmin(true, cons(n, cons(m, x))) -> min(cons(n, x))
ifmin(false, cons(n, cons(m, x))) -> min(cons(m, x))
replace(n, m, nil) -> nil
replace(n, m, cons(k, x)) -> ifreplace(eq(n, k), n, m, cons(k, x))
ifreplace(true, n, m, cons(k, x)) -> cons(m, x)
ifreplace(false, n, m, cons(k, x)) -> cons(k, replace(n, m, x))
sort(nil) -> nil
sort(cons(n, x)) -> cons(min(cons(n, x)), sort(replace(min(cons(n, x)), n, x)))


Strategy:

innermost




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


   R
DPs
       →DP Problem 1
UsableRules
       →DP Problem 2
UsableRules
       →DP Problem 3
UsableRules
       →DP Problem 4
UsableRules
       →DP Problem 5
UsableRules
           →DP Problem 10
Negative Polynomial Order


Dependency Pair:

SORT(cons(n, x)) -> SORT(replace(min(cons(n, x)), n, x))


Rules:


ifmin(true, cons(n, cons(m, x))) -> min(cons(n, x))
ifmin(false, cons(n, cons(m, x))) -> min(cons(m, x))
min(cons(n, cons(m, x))) -> ifmin(le(n, m), cons(n, cons(m, x)))
min(cons(0, nil)) -> 0
min(cons(s(n), nil)) -> s(n)
eq(s(n), s(m)) -> eq(n, m)
eq(0, s(m)) -> false
eq(0, 0) -> true
eq(s(n), 0) -> false
le(s(n), s(m)) -> le(n, m)
le(0, m) -> true
le(s(n), 0) -> false
replace(n, m, cons(k, x)) -> ifreplace(eq(n, k), n, m, cons(k, x))
replace(n, m, nil) -> nil
ifreplace(false, n, m, cons(k, x)) -> cons(k, replace(n, m, x))
ifreplace(true, n, m, cons(k, x)) -> cons(m, x)


Strategy:

innermost




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

SORT(cons(n, x)) -> SORT(replace(min(cons(n, x)), n, x))


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

ifmin(true, cons(n, cons(m, x))) -> min(cons(n, x))
ifmin(false, cons(n, cons(m, x))) -> min(cons(m, x))
min(cons(n, cons(m, x))) -> ifmin(le(n, m), cons(n, cons(m, x)))
min(cons(0, nil)) -> 0
min(cons(s(n), nil)) -> s(n)
eq(s(n), s(m)) -> eq(n, m)
eq(0, s(m)) -> false
eq(0, 0) -> true
eq(s(n), 0) -> false
le(s(n), s(m)) -> le(n, m)
le(0, m) -> true
le(s(n), 0) -> false
replace(n, m, cons(k, x)) -> ifreplace(eq(n, k), n, m, cons(k, x))
replace(n, m, nil) -> nil
ifreplace(false, n, m, cons(k, x)) -> cons(k, replace(n, m, x))
ifreplace(true, n, m, cons(k, x)) -> cons(m, x)


Used ordering:
Polynomial Order with Interpretation:

POL( SORT(x1) ) = x1

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

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

POL( ifmin(x1, x2) ) = 0

POL( min(x1) ) = 0

POL( 0 ) = 0

POL( s(x1) ) = 0

POL( eq(x1, x2) ) = 0

POL( false ) = 0

POL( true ) = 0

POL( le(x1, x2) ) = 0

POL( ifreplace(x1, ..., x4) ) = x4

POL( nil ) = 0


This results in one new DP problem.


   R
DPs
       →DP Problem 1
UsableRules
       →DP Problem 2
UsableRules
       →DP Problem 3
UsableRules
       →DP Problem 4
UsableRules
       →DP Problem 5
UsableRules
           →DP Problem 10
Neg POLO
             ...
               →DP Problem 11
Dependency Graph


Dependency Pair:


Rules:


ifmin(true, cons(n, cons(m, x))) -> min(cons(n, x))
ifmin(false, cons(n, cons(m, x))) -> min(cons(m, x))
min(cons(n, cons(m, x))) -> ifmin(le(n, m), cons(n, cons(m, x)))
min(cons(0, nil)) -> 0
min(cons(s(n), nil)) -> s(n)
eq(s(n), s(m)) -> eq(n, m)
eq(0, s(m)) -> false
eq(0, 0) -> true
eq(s(n), 0) -> false
le(s(n), s(m)) -> le(n, m)
le(0, m) -> true
le(s(n), 0) -> false
replace(n, m, cons(k, x)) -> ifreplace(eq(n, k), n, m, cons(k, x))
replace(n, m, nil) -> nil
ifreplace(false, n, m, cons(k, x)) -> cons(k, replace(n, m, x))
ifreplace(true, n, m, cons(k, x)) -> cons(m, x)


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.

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