Term Rewriting System R:
[y, n, x]
app(nil, y) -> y
app(add(n, x), y) -> add(n, app(x, y))
reverse(nil) -> nil
shuffle(nil) -> nil

Innermost Termination of R to be shown.

R
Dependency Pair Analysis

R contains the following Dependency Pairs:

APP(add(n, x), y) -> APP(x, y)
REVERSE(add(n, x)) -> REVERSE(x)
SHUFFLE(add(n, x)) -> SHUFFLE(reverse(x))
SHUFFLE(add(n, x)) -> REVERSE(x)

Furthermore, R contains three SCCs.

R
DPs
→DP Problem 1
Polynomial Ordering
→DP Problem 2
Polo
→DP Problem 3
Polo

Dependency Pair:

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

Rules:

app(nil, y) -> y
app(add(n, x), y) -> add(n, app(x, y))
reverse(nil) -> nil
shuffle(nil) -> nil

Strategy:

innermost

The following dependency pair can be strictly oriented:

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

There are no usable rules for innermost w.r.t. to the implicit AFS that need to be oriented.

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

resulting in one new DP problem.

R
DPs
→DP Problem 1
Polo
→DP Problem 4
Dependency Graph
→DP Problem 2
Polo
→DP Problem 3
Polo

Dependency Pair:

Rules:

app(nil, y) -> y
app(add(n, x), y) -> add(n, app(x, y))
reverse(nil) -> nil
shuffle(nil) -> nil

Strategy:

innermost

Using the Dependency Graph resulted in no new DP problems.

R
DPs
→DP Problem 1
Polo
→DP Problem 2
Polynomial Ordering
→DP Problem 3
Polo

Dependency Pair:

REVERSE(add(n, x)) -> REVERSE(x)

Rules:

app(nil, y) -> y
app(add(n, x), y) -> add(n, app(x, y))
reverse(nil) -> nil
shuffle(nil) -> nil

Strategy:

innermost

The following dependency pair can be strictly oriented:

REVERSE(add(n, x)) -> REVERSE(x)

There are no usable rules for innermost w.r.t. to the implicit AFS that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:
 POL(REVERSE(x1)) =  x1 POL(add(x1, x2)) =  1 + x2

resulting in one new DP problem.

R
DPs
→DP Problem 1
Polo
→DP Problem 2
Polo
→DP Problem 5
Dependency Graph
→DP Problem 3
Polo

Dependency Pair:

Rules:

app(nil, y) -> y
app(add(n, x), y) -> add(n, app(x, y))
reverse(nil) -> nil
shuffle(nil) -> nil

Strategy:

innermost

Using the Dependency Graph resulted in no new DP problems.

R
DPs
→DP Problem 1
Polo
→DP Problem 2
Polo
→DP Problem 3
Polynomial Ordering

Dependency Pair:

SHUFFLE(add(n, x)) -> SHUFFLE(reverse(x))

Rules:

app(nil, y) -> y
app(add(n, x), y) -> add(n, app(x, y))
reverse(nil) -> nil
shuffle(nil) -> nil

Strategy:

innermost

The following dependency pair can be strictly oriented:

SHUFFLE(add(n, x)) -> SHUFFLE(reverse(x))

Additionally, the following usable rules for innermost w.r.t. to the implicit AFS can be oriented:

reverse(nil) -> nil
app(nil, y) -> y
app(add(n, x), y) -> add(n, app(x, y))

Used ordering: Polynomial ordering with Polynomial interpretation:
 POL(reverse(x1)) =  x1 POL(SHUFFLE(x1)) =  1 + x1 POL(nil) =  0 POL(app(x1, x2)) =  x1 + x2 POL(add(x1, x2)) =  1 + x2

resulting in one new DP problem.

R
DPs
→DP Problem 1
Polo
→DP Problem 2
Polo
→DP Problem 3
Polo
→DP Problem 6
Dependency Graph

Dependency Pair:

Rules:

app(nil, y) -> y
app(add(n, x), y) -> add(n, app(x, y))
reverse(nil) -> nil
shuffle(nil) -> nil

Strategy:

innermost

Using the Dependency Graph resulted in no new DP problems.

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