(0) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

app(nil, y) → y
app(add(n, x), y) → add(n, app(x, y))
reverse(nil) → nil
reverse(add(n, x)) → app(reverse(x), add(n, nil))
shuffle(nil) → nil
shuffle(add(n, x)) → add(n, shuffle(reverse(x)))

Q is empty.

(1) QTRSRRRProof (EQUIVALENT transformation)

Used ordering:
Polynomial interpretation [POLO]:

POL(add(x1, x2)) = x1 + x2   
POL(app(x1, x2)) = x1 + x2   
POL(nil) = 0   
POL(reverse(x1)) = x1   
POL(shuffle(x1)) = 1 + x1   
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:

shuffle(nil) → nil


(2) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

app(nil, y) → y
app(add(n, x), y) → add(n, app(x, y))
reverse(nil) → nil
reverse(add(n, x)) → app(reverse(x), add(n, nil))
shuffle(add(n, x)) → add(n, shuffle(reverse(x)))

Q is empty.

(3) QTRSRRRProof (EQUIVALENT transformation)

Used ordering:
Polynomial interpretation [POLO]:

POL(add(x1, x2)) = 1 + 2·x1 + x2   
POL(app(x1, x2)) = x1 + x2   
POL(nil) = 0   
POL(reverse(x1)) = x1   
POL(shuffle(x1)) = 2 + 2·x1   
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:

shuffle(add(n, x)) → add(n, shuffle(reverse(x)))


(4) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

app(nil, y) → y
app(add(n, x), y) → add(n, app(x, y))
reverse(nil) → nil
reverse(add(n, x)) → app(reverse(x), add(n, nil))

Q is empty.

(5) QTRSRRRProof (EQUIVALENT transformation)

Used ordering:
Polynomial interpretation [POLO]:

POL(add(x1, x2)) = x1 + x2   
POL(app(x1, x2)) = x1 + x2   
POL(nil) = 0   
POL(reverse(x1)) = 1 + x1   
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:

reverse(nil) → nil


(6) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

app(nil, y) → y
app(add(n, x), y) → add(n, app(x, y))
reverse(add(n, x)) → app(reverse(x), add(n, nil))

Q is empty.

(7) QTRSRRRProof (EQUIVALENT transformation)

Used ordering:
Polynomial interpretation [POLO]:

POL(add(x1, x2)) = 1 + 2·x1 + x2   
POL(app(x1, x2)) = x1 + x2   
POL(nil) = 0   
POL(reverse(x1)) = 2·x1   
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:

reverse(add(n, x)) → app(reverse(x), add(n, nil))


(8) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

app(nil, y) → y
app(add(n, x), y) → add(n, app(x, y))

Q is empty.

(9) QTRSRRRProof (EQUIVALENT transformation)

Used ordering:
Polynomial interpretation [POLO]:

POL(add(x1, x2)) = 1 + 2·x1 + x2   
POL(app(x1, x2)) = 2 + 2·x1 + x2   
POL(nil) = 1   
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:

app(nil, y) → y
app(add(n, x), y) → add(n, app(x, y))


(10) Obligation:

Q restricted rewrite system:
R is empty.
Q is empty.

(11) RisEmptyProof (EQUIVALENT transformation)

The TRS R is empty. Hence, termination is trivially proven.

(12) TRUE

(13) RisEmptyProof (EQUIVALENT transformation)

The TRS R is empty. Hence, termination is trivially proven.

(14) TRUE

(15) RisEmptyProof (EQUIVALENT transformation)

The TRS R is empty. Hence, termination is trivially proven.

(16) TRUE

(17) QTRSRRRProof (EQUIVALENT transformation)

Used ordering:
Polynomial interpretation [POLO]:

POL(add(x1, x2)) = x1 + x2   
POL(app(x1, x2)) = 1 + x1 + x2   
POL(nil) = 0   
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:

app(nil, y) → y


(18) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

app(add(n, x), y) → add(n, app(x, y))

Q is empty.