TIMEOUT

The TRS could not be proven terminating. The proof attempt took 60002 ms.

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (55ms).
 | – Problem 2 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 5 was processed with processor DependencyGraph (1ms).
 | – Problem 3 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor BackwardInstantiation (4ms).
 |    | – Problem 6 was processed with processor BackwardInstantiation (2ms).
 |    |    | – Problem 7 was processed with processor Propagation (5ms).
 |    |    |    | – Problem 8 remains open; application of the following processors failed [ForwardNarrowing (1ms), BackwardInstantiation (0ms), ForwardInstantiation (1ms), Propagation (2ms)].

The following open problems remain:



Open Dependency Pair Problem 4

Dependency Pairs

if2#(false, x, y) → test#(x, s(y))if1#(true, x, y) → if2#(divides(x, y), x, y)
test#(x, y) → if1#(gt(x, y), x, y)

Rewrite Rules

gt(s(x), 0) → truegt(0, y) → false
gt(s(x), s(y)) → gt(x, y)divides(x, y) → div(x, y, y)
div(0, 0, z) → truediv(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)if1(false, x, y) → true
if2(true, x, y) → falseif2(false, x, y) → test(x, s(y))

Original Signature

Termination of terms over the following signature is verified: prime, 0, s, test, div, false, true, if1, divides, gt, if2


Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

div#(s(x), 0, s(z)) → div#(s(x), s(z), s(z))if2#(false, x, y) → test#(x, s(y))
divides#(x, y) → div#(x, y, y)test#(x, y) → gt#(x, y)
test#(x, y) → if1#(gt(x, y), x, y)if1#(true, x, y) → if2#(divides(x, y), x, y)
gt#(s(x), s(y)) → gt#(x, y)if1#(true, x, y) → divides#(x, y)
prime#(x) → test#(x, s(s(0)))div#(s(x), s(y), z) → div#(x, y, z)

Rewrite Rules

gt(s(x), 0) → truegt(0, y) → false
gt(s(x), s(y)) → gt(x, y)divides(x, y) → div(x, y, y)
div(0, 0, z) → truediv(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)if1(false, x, y) → true
if2(true, x, y) → falseif2(false, x, y) → test(x, s(y))

Original Signature

Termination of terms over the following signature is verified: prime, 0, s, test, div, true, false, gt, divides, if1, if2

Strategy


The following SCCs where found

gt#(s(x), s(y)) → gt#(x, y)

if2#(false, x, y) → test#(x, s(y))test#(x, y) → if1#(gt(x, y), x, y)
if1#(true, x, y) → if2#(divides(x, y), x, y)

div#(s(x), 0, s(z)) → div#(s(x), s(z), s(z))div#(s(x), s(y), z) → div#(x, y, z)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

div#(s(x), 0, s(z)) → div#(s(x), s(z), s(z))div#(s(x), s(y), z) → div#(x, y, z)

Rewrite Rules

gt(s(x), 0) → truegt(0, y) → false
gt(s(x), s(y)) → gt(x, y)divides(x, y) → div(x, y, y)
div(0, 0, z) → truediv(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)if1(false, x, y) → true
if2(true, x, y) → falseif2(false, x, y) → test(x, s(y))

Original Signature

Termination of terms over the following signature is verified: prime, 0, s, test, div, true, false, gt, divides, if1, if2

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

div#(s(x), s(y), z) → div#(x, y, z)

Problem 5: DependencyGraph



Dependency Pair Problem

Dependency Pairs

div#(s(x), 0, s(z)) → div#(s(x), s(z), s(z))

Rewrite Rules

gt(s(x), 0) → truegt(0, y) → false
gt(s(x), s(y)) → gt(x, y)divides(x, y) → div(x, y, y)
div(0, 0, z) → truediv(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)if1(false, x, y) → true
if2(true, x, y) → falseif2(false, x, y) → test(x, s(y))

Original Signature

Termination of terms over the following signature is verified: prime, 0, s, test, div, false, true, if1, divides, gt, if2

Strategy


There are no SCCs!

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

gt#(s(x), s(y)) → gt#(x, y)

Rewrite Rules

gt(s(x), 0) → truegt(0, y) → false
gt(s(x), s(y)) → gt(x, y)divides(x, y) → div(x, y, y)
div(0, 0, z) → truediv(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)if1(false, x, y) → true
if2(true, x, y) → falseif2(false, x, y) → test(x, s(y))

Original Signature

Termination of terms over the following signature is verified: prime, 0, s, test, div, true, false, gt, divides, if1, if2

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

gt#(s(x), s(y)) → gt#(x, y)

Problem 4: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

if2#(false, x, y) → test#(x, s(y))test#(x, y) → if1#(gt(x, y), x, y)
if1#(true, x, y) → if2#(divides(x, y), x, y)

Rewrite Rules

gt(s(x), 0) → truegt(0, y) → false
gt(s(x), s(y)) → gt(x, y)divides(x, y) → div(x, y, y)
div(0, 0, z) → truediv(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)if1(false, x, y) → true
if2(true, x, y) → falseif2(false, x, y) → test(x, s(y))

Original Signature

Termination of terms over the following signature is verified: prime, 0, s, test, div, true, false, gt, divides, if1, if2

Strategy


Instantiation

For all potential predecessors l → r of the rule test#(x, y) → if1#(gt(x, y), x, y) on dependency pair chains it holds that: Thus, test#(x, y) → if1#(gt(x, y), x, y) is replaced by instances determined through the above matching. These instances are:
test#(_x, s(_y)) → if1#(gt(_x, s(_y)), _x, s(_y))

Problem 6: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

if2#(false, x, y) → test#(x, s(y))if1#(true, x, y) → if2#(divides(x, y), x, y)
test#(_x, s(_y)) → if1#(gt(_x, s(_y)), _x, s(_y))

Rewrite Rules

gt(s(x), 0) → truegt(0, y) → false
gt(s(x), s(y)) → gt(x, y)divides(x, y) → div(x, y, y)
div(0, 0, z) → truediv(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)if1(false, x, y) → true
if2(true, x, y) → falseif2(false, x, y) → test(x, s(y))

Original Signature

Termination of terms over the following signature is verified: prime, 0, s, test, div, false, true, if1, divides, gt, if2

Strategy


Instantiation

For all potential predecessors l → r of the rule test#(_x, s(_y)) → if1#(gt(_x, s(_y)), _x, s(_y)) on dependency pair chains it holds that: Thus, test#(_x, s(_y)) → if1#(gt(_x, s(_y)), _x, s(_y)) is replaced by instances determined through the above matching. These instances are:
test#(x, s(y)) → if1#(gt(x, s(y)), x, s(y))

Problem 7: Propagation



Dependency Pair Problem

Dependency Pairs

if2#(false, x, y) → test#(x, s(y))test#(x, s(y)) → if1#(gt(x, s(y)), x, s(y))
if1#(true, x, y) → if2#(divides(x, y), x, y)

Rewrite Rules

gt(s(x), 0) → truegt(0, y) → false
gt(s(x), s(y)) → gt(x, y)divides(x, y) → div(x, y, y)
div(0, 0, z) → truediv(0, s(x), z) → false
div(s(x), 0, s(z)) → div(s(x), s(z), s(z))div(s(x), s(y), z) → div(x, y, z)
prime(x) → test(x, s(s(0)))test(x, y) → if1(gt(x, y), x, y)
if1(true, x, y) → if2(divides(x, y), x, y)if1(false, x, y) → true
if2(true, x, y) → falseif2(false, x, y) → test(x, s(y))

Original Signature

Termination of terms over the following signature is verified: prime, 0, s, test, div, true, false, gt, divides, if1, if2

Strategy


The dependency pairs if2#(false, x, y) → test#(x, s(y)) and test#(x, s(y)) → if1#(gt(x, s(y)), x, s(y)) are consolidated into the rule if2#(false, x, y) → if1#(gt(x, s(y)), x, s(y)) .

This is possible as

The dependency pairs if2#(false, x, y) → test#(x, s(y)) and test#(x, s(y)) → if1#(gt(x, s(y)), x, s(y)) are consolidated into the rule if2#(false, x, y) → if1#(gt(x, s(y)), x, s(y)) .

This is possible as

The dependency pairs if2#(false, x, y) → test#(x, s(y)) and test#(x, s(y)) → if1#(gt(x, s(y)), x, s(y)) are consolidated into the rule if2#(false, x, y) → if1#(gt(x, s(y)), x, s(y)) .

This is possible as


Summary

Removed Dependency PairsAdded Dependency Pairs
test#(x, s(y)) → if1#(gt(x, s(y)), x, s(y))if2#(false, x, y) → if1#(gt(x, s(y)), x, s(y))
if2#(false, x, y) → test#(x, s(y))