(0) Obligation:

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

double(x) → permute(x, x, a)
permute(x, y, a) → permute(isZero(x), x, b)
permute(false, x, b) → permute(ack(x, x), p(x), c)
permute(true, x, b) → 0
permute(y, x, c) → s(s(permute(x, y, a)))
p(0) → 0
p(s(x)) → x
ack(0, x) → plus(x, s(0))
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, s(0)) → s(x)
plus(x, 0) → x
isZero(0) → true
isZero(s(x)) → false

Q is empty.

(1) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.

(2) Obligation:

Q DP problem:
The TRS P consists of the following rules:

DOUBLE(x) → PERMUTE(x, x, a)
PERMUTE(x, y, a) → PERMUTE(isZero(x), x, b)
PERMUTE(x, y, a) → ISZERO(x)
PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c)
PERMUTE(false, x, b) → ACK(x, x)
PERMUTE(false, x, b) → P(x)
PERMUTE(y, x, c) → PERMUTE(x, y, a)
ACK(0, x) → PLUS(x, s(0))
ACK(s(x), 0) → ACK(x, s(0))
ACK(s(x), s(y)) → ACK(x, ack(s(x), y))
ACK(s(x), s(y)) → ACK(s(x), y)
PLUS(s(x), y) → PLUS(x, s(y))
PLUS(x, s(s(y))) → PLUS(s(x), y)

The TRS R consists of the following rules:

double(x) → permute(x, x, a)
permute(x, y, a) → permute(isZero(x), x, b)
permute(false, x, b) → permute(ack(x, x), p(x), c)
permute(true, x, b) → 0
permute(y, x, c) → s(s(permute(x, y, a)))
p(0) → 0
p(s(x)) → x
ack(0, x) → plus(x, s(0))
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, s(0)) → s(x)
plus(x, 0) → x
isZero(0) → true
isZero(s(x)) → false

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(3) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 3 SCCs with 5 less nodes.

(4) Complex Obligation (AND)

(5) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PLUS(x, s(s(y))) → PLUS(s(x), y)
PLUS(s(x), y) → PLUS(x, s(y))

The TRS R consists of the following rules:

double(x) → permute(x, x, a)
permute(x, y, a) → permute(isZero(x), x, b)
permute(false, x, b) → permute(ack(x, x), p(x), c)
permute(true, x, b) → 0
permute(y, x, c) → s(s(permute(x, y, a)))
p(0) → 0
p(s(x)) → x
ack(0, x) → plus(x, s(0))
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, s(0)) → s(x)
plus(x, 0) → x
isZero(0) → true
isZero(s(x)) → false

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(6) MNOCProof (EQUIVALENT transformation)

We use the modular non-overlap check [LPAR04] to enlarge Q to all left-hand sides of R.

(7) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PLUS(x, s(s(y))) → PLUS(s(x), y)
PLUS(s(x), y) → PLUS(x, s(y))

The TRS R consists of the following rules:

double(x) → permute(x, x, a)
permute(x, y, a) → permute(isZero(x), x, b)
permute(false, x, b) → permute(ack(x, x), p(x), c)
permute(true, x, b) → 0
permute(y, x, c) → s(s(permute(x, y, a)))
p(0) → 0
p(s(x)) → x
ack(0, x) → plus(x, s(0))
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, s(0)) → s(x)
plus(x, 0) → x
isZero(0) → true
isZero(s(x)) → false

The set Q consists of the following terms:

double(x0)
permute(x0, x1, a)
permute(false, x0, b)
permute(true, x0, b)
permute(x0, x1, c)
p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(8) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(9) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PLUS(x, s(s(y))) → PLUS(s(x), y)
PLUS(s(x), y) → PLUS(x, s(y))

R is empty.
The set Q consists of the following terms:

double(x0)
permute(x0, x1, a)
permute(false, x0, b)
permute(true, x0, b)
permute(x0, x1, c)
p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(10) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

double(x0)
permute(x0, x1, a)
permute(false, x0, b)
permute(true, x0, b)
permute(x0, x1, c)
p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

(11) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PLUS(x, s(s(y))) → PLUS(s(x), y)
PLUS(s(x), y) → PLUS(x, s(y))

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(12) MRRProof (EQUIVALENT transformation)

By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented.
Strictly oriented dependency pairs:

PLUS(x, s(s(y))) → PLUS(s(x), y)


Used ordering: Polynomial interpretation [POLO]:

POL(PLUS(x1, x2)) = x1 + x2   
POL(s(x1)) = 1 + x1   

(13) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PLUS(s(x), y) → PLUS(x, s(y))

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(14) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • PLUS(s(x), y) → PLUS(x, s(y))
    The graph contains the following edges 1 > 1

(15) TRUE

(16) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACK(s(x), s(y)) → ACK(x, ack(s(x), y))
ACK(s(x), 0) → ACK(x, s(0))
ACK(s(x), s(y)) → ACK(s(x), y)

The TRS R consists of the following rules:

double(x) → permute(x, x, a)
permute(x, y, a) → permute(isZero(x), x, b)
permute(false, x, b) → permute(ack(x, x), p(x), c)
permute(true, x, b) → 0
permute(y, x, c) → s(s(permute(x, y, a)))
p(0) → 0
p(s(x)) → x
ack(0, x) → plus(x, s(0))
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, s(0)) → s(x)
plus(x, 0) → x
isZero(0) → true
isZero(s(x)) → false

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(17) MNOCProof (EQUIVALENT transformation)

We use the modular non-overlap check [LPAR04] to enlarge Q to all left-hand sides of R.

(18) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACK(s(x), s(y)) → ACK(x, ack(s(x), y))
ACK(s(x), 0) → ACK(x, s(0))
ACK(s(x), s(y)) → ACK(s(x), y)

The TRS R consists of the following rules:

double(x) → permute(x, x, a)
permute(x, y, a) → permute(isZero(x), x, b)
permute(false, x, b) → permute(ack(x, x), p(x), c)
permute(true, x, b) → 0
permute(y, x, c) → s(s(permute(x, y, a)))
p(0) → 0
p(s(x)) → x
ack(0, x) → plus(x, s(0))
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, s(0)) → s(x)
plus(x, 0) → x
isZero(0) → true
isZero(s(x)) → false

The set Q consists of the following terms:

double(x0)
permute(x0, x1, a)
permute(false, x0, b)
permute(true, x0, b)
permute(x0, x1, c)
p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(19) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(20) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACK(s(x), s(y)) → ACK(x, ack(s(x), y))
ACK(s(x), 0) → ACK(x, s(0))
ACK(s(x), s(y)) → ACK(s(x), y)

The TRS R consists of the following rules:

ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
ack(0, x) → plus(x, s(0))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

double(x0)
permute(x0, x1, a)
permute(false, x0, b)
permute(true, x0, b)
permute(x0, x1, c)
p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(21) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

double(x0)
permute(x0, x1, a)
permute(false, x0, b)
permute(true, x0, b)
permute(x0, x1, c)
p(0)
p(s(x0))
isZero(0)
isZero(s(x0))

(22) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACK(s(x), s(y)) → ACK(x, ack(s(x), y))
ACK(s(x), 0) → ACK(x, s(0))
ACK(s(x), s(y)) → ACK(s(x), y)

The TRS R consists of the following rules:

ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
ack(0, x) → plus(x, s(0))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)

We have to consider all minimal (P,Q,R)-chains.

(23) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • ACK(s(x), 0) → ACK(x, s(0))
    The graph contains the following edges 1 > 1

  • ACK(s(x), s(y)) → ACK(x, ack(s(x), y))
    The graph contains the following edges 1 > 1

  • ACK(s(x), s(y)) → ACK(s(x), y)
    The graph contains the following edges 1 >= 1, 2 > 2

(24) TRUE

(25) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c)
PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(x, y, a) → PERMUTE(isZero(x), x, b)

The TRS R consists of the following rules:

double(x) → permute(x, x, a)
permute(x, y, a) → permute(isZero(x), x, b)
permute(false, x, b) → permute(ack(x, x), p(x), c)
permute(true, x, b) → 0
permute(y, x, c) → s(s(permute(x, y, a)))
p(0) → 0
p(s(x)) → x
ack(0, x) → plus(x, s(0))
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, s(0)) → s(x)
plus(x, 0) → x
isZero(0) → true
isZero(s(x)) → false

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(26) MNOCProof (EQUIVALENT transformation)

We use the modular non-overlap check [LPAR04] to enlarge Q to all left-hand sides of R.

(27) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c)
PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(x, y, a) → PERMUTE(isZero(x), x, b)

The TRS R consists of the following rules:

double(x) → permute(x, x, a)
permute(x, y, a) → permute(isZero(x), x, b)
permute(false, x, b) → permute(ack(x, x), p(x), c)
permute(true, x, b) → 0
permute(y, x, c) → s(s(permute(x, y, a)))
p(0) → 0
p(s(x)) → x
ack(0, x) → plus(x, s(0))
ack(s(x), 0) → ack(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, s(0)) → s(x)
plus(x, 0) → x
isZero(0) → true
isZero(s(x)) → false

The set Q consists of the following terms:

double(x0)
permute(x0, x1, a)
permute(false, x0, b)
permute(true, x0, b)
permute(x0, x1, c)
p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(28) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(29) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c)
PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(x, y, a) → PERMUTE(isZero(x), x, b)

The TRS R consists of the following rules:

isZero(0) → true
isZero(s(x)) → false
ack(0, x) → plus(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
p(0) → 0
p(s(x)) → x
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

double(x0)
permute(x0, x1, a)
permute(false, x0, b)
permute(true, x0, b)
permute(x0, x1, c)
p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(30) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

double(x0)
permute(x0, x1, a)
permute(false, x0, b)
permute(true, x0, b)
permute(x0, x1, c)

(31) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c)
PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(x, y, a) → PERMUTE(isZero(x), x, b)

The TRS R consists of the following rules:

isZero(0) → true
isZero(s(x)) → false
ack(0, x) → plus(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
p(0) → 0
p(s(x)) → x
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(32) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule PERMUTE(x, y, a) → PERMUTE(isZero(x), x, b) at position [0] we obtained the following new rules [LPAR04]:

PERMUTE(0, y1, a) → PERMUTE(true, 0, b)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)

(33) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c)
PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(0, y1, a) → PERMUTE(true, 0, b)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)

The TRS R consists of the following rules:

isZero(0) → true
isZero(s(x)) → false
ack(0, x) → plus(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
p(0) → 0
p(s(x)) → x
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(34) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(35) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c)

The TRS R consists of the following rules:

isZero(0) → true
isZero(s(x)) → false
ack(0, x) → plus(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
p(0) → 0
p(s(x)) → x
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(36) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(37) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c)

The TRS R consists of the following rules:

ack(0, x) → plus(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
p(0) → 0
p(s(x)) → x
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)
isZero(0)
isZero(s(x0))

We have to consider all minimal (P,Q,R)-chains.

(38) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

isZero(0)
isZero(s(x0))

(39) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c)

The TRS R consists of the following rules:

ack(0, x) → plus(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
p(0) → 0
p(s(x)) → x
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)

We have to consider all minimal (P,Q,R)-chains.

(40) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule PERMUTE(false, x, b) → PERMUTE(ack(x, x), p(x), c) we obtained the following new rules [LPAR04]:

PERMUTE(false, s(z0), b) → PERMUTE(ack(s(z0), s(z0)), p(s(z0)), c)

(41) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, s(z0), b) → PERMUTE(ack(s(z0), s(z0)), p(s(z0)), c)

The TRS R consists of the following rules:

ack(0, x) → plus(x, s(0))
ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
p(0) → 0
p(s(x)) → x
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)

We have to consider all minimal (P,Q,R)-chains.

(42) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(43) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, s(z0), b) → PERMUTE(ack(s(z0), s(z0)), p(s(z0)), c)

The TRS R consists of the following rules:

ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
p(s(x)) → x
ack(0, x) → plus(x, s(0))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)

We have to consider all minimal (P,Q,R)-chains.

(44) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule PERMUTE(false, s(z0), b) → PERMUTE(ack(s(z0), s(z0)), p(s(z0)), c) at position [1] we obtained the following new rules [LPAR04]:

PERMUTE(false, s(z0), b) → PERMUTE(ack(s(z0), s(z0)), z0, c)

(45) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, s(z0), b) → PERMUTE(ack(s(z0), s(z0)), z0, c)

The TRS R consists of the following rules:

ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
p(s(x)) → x
ack(0, x) → plus(x, s(0))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)

We have to consider all minimal (P,Q,R)-chains.

(46) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(47) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, s(z0), b) → PERMUTE(ack(s(z0), s(z0)), z0, c)

The TRS R consists of the following rules:

ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
ack(0, x) → plus(x, s(0))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

p(0)
p(s(x0))
ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)

We have to consider all minimal (P,Q,R)-chains.

(48) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

p(0)
p(s(x0))

(49) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, s(z0), b) → PERMUTE(ack(s(z0), s(z0)), z0, c)

The TRS R consists of the following rules:

ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
ack(0, x) → plus(x, s(0))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)

We have to consider all minimal (P,Q,R)-chains.

(50) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule PERMUTE(false, s(z0), b) → PERMUTE(ack(s(z0), s(z0)), z0, c) at position [0] we obtained the following new rules [LPAR04]:

PERMUTE(false, s(x0), b) → PERMUTE(ack(x0, ack(s(x0), x0)), x0, c)

(51) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(y, x, c) → PERMUTE(x, y, a)
PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, s(x0), b) → PERMUTE(ack(x0, ack(s(x0), x0)), x0, c)

The TRS R consists of the following rules:

ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
ack(0, x) → plus(x, s(0))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)

We have to consider all minimal (P,Q,R)-chains.

(52) ForwardInstantiation (EQUIVALENT transformation)

By forward instantiating [JAR06] the rule PERMUTE(y, x, c) → PERMUTE(x, y, a) we obtained the following new rules [LPAR04]:

PERMUTE(x0, s(y_0), c) → PERMUTE(s(y_0), x0, a)

(53) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
PERMUTE(false, s(x0), b) → PERMUTE(ack(x0, ack(s(x0), x0)), x0, c)
PERMUTE(x0, s(y_0), c) → PERMUTE(s(y_0), x0, a)

The TRS R consists of the following rules:

ack(s(x), s(y)) → ack(x, ack(s(x), y))
ack(s(x), 0) → ack(x, s(0))
ack(0, x) → plus(x, s(0))
plus(0, y) → y
plus(s(x), y) → plus(x, s(y))
plus(x, s(0)) → s(x)
plus(x, s(s(y))) → s(plus(s(x), y))
plus(x, 0) → x

The set Q consists of the following terms:

ack(0, x0)
ack(s(x0), 0)
ack(s(x0), s(x1))
plus(0, x0)
plus(s(x0), x1)
plus(x0, s(s(x1)))
plus(x0, s(0))
plus(x0, 0)

We have to consider all minimal (P,Q,R)-chains.

(54) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • PERMUTE(false, s(x0), b) → PERMUTE(ack(x0, ack(s(x0), x0)), x0, c)
    The graph contains the following edges 2 > 2

  • PERMUTE(x0, s(y_0), c) → PERMUTE(s(y_0), x0, a)
    The graph contains the following edges 2 >= 1, 1 >= 2

  • PERMUTE(s(x0), y1, a) → PERMUTE(false, s(x0), b)
    The graph contains the following edges 1 >= 2

(55) TRUE