TIMEOUT

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (96ms).
 | – Problem 2 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (3ms), PolynomialLinearRange4iUR (232ms), DependencyGraph (3ms), PolynomialLinearRange8NegiUR (571ms), DependencyGraph (3ms)].
 | – Problem 3 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (2ms), PolynomialLinearRange4iUR (380ms), DependencyGraph (6ms), PolynomialLinearRange8NegiUR (1245ms), DependencyGraph (2ms)].
 | – Problem 4 was processed with processor SubtermCriterion (1ms).
 | – Problem 5 was processed with processor SubtermCriterion (1ms).

The following open problems remain:



Open Dependency Pair Problem 2

Dependency Pairs

timesIter#(x, y, z, u) → ifTimes#(ge(u, x), x, y, z, u)ifTimes#(false, x, y, z, u) → timesIter#(x, y, plus(y, z), s(u))

Rewrite Rules

prod(xs) → prodIter(xs, s(0))prodIter(xs, x) → ifProd(isempty(xs), xs, x)
ifProd(true, xs, x) → xifProd(false, xs, x) → prodIter(tail(xs), times(x, head(xs)))
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
times(x, y) → timesIter(x, y, 0, 0)timesIter(x, y, z, u) → ifTimes(ge(u, x), x, y, z, u)
ifTimes(true, x, y, z, u) → zifTimes(false, x, y, z, u) → timesIter(x, y, plus(y, z), s(u))
isempty(nil) → trueisempty(cons(x, xs)) → false
head(nil) → errorhead(cons(x, xs)) → x
tail(nil) → niltail(cons(x, xs)) → xs
ge(x, 0) → truege(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)a → b
a → c

Original Signature

Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, isempty, times, false, head, cons, nil, prod




Open Dependency Pair Problem 3

Dependency Pairs

ifProd#(false, xs, x) → prodIter#(tail(xs), times(x, head(xs)))prodIter#(xs, x) → ifProd#(isempty(xs), xs, x)

Rewrite Rules

prod(xs) → prodIter(xs, s(0))prodIter(xs, x) → ifProd(isempty(xs), xs, x)
ifProd(true, xs, x) → xifProd(false, xs, x) → prodIter(tail(xs), times(x, head(xs)))
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
times(x, y) → timesIter(x, y, 0, 0)timesIter(x, y, z, u) → ifTimes(ge(u, x), x, y, z, u)
ifTimes(true, x, y, z, u) → zifTimes(false, x, y, z, u) → timesIter(x, y, plus(y, z), s(u))
isempty(nil) → trueisempty(cons(x, xs)) → false
head(nil) → errorhead(cons(x, xs)) → x
tail(nil) → niltail(cons(x, xs)) → xs
ge(x, 0) → truege(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)a → b
a → c

Original Signature

Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, isempty, times, false, head, cons, nil, prod


Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

timesIter#(x, y, z, u) → ifTimes#(ge(u, x), x, y, z, u)prodIter#(xs, x) → ifProd#(isempty(xs), xs, x)
ifProd#(false, xs, x) → head#(xs)ifProd#(false, xs, x) → tail#(xs)
times#(x, y) → timesIter#(x, y, 0, 0)ifProd#(false, xs, x) → prodIter#(tail(xs), times(x, head(xs)))
ifProd#(false, xs, x) → times#(x, head(xs))plus#(s(x), y) → plus#(x, y)
ifTimes#(false, x, y, z, u) → timesIter#(x, y, plus(y, z), s(u))prod#(xs) → prodIter#(xs, s(0))
ge#(s(x), s(y)) → ge#(x, y)ifTimes#(false, x, y, z, u) → plus#(y, z)
prodIter#(xs, x) → isempty#(xs)timesIter#(x, y, z, u) → ge#(u, x)

Rewrite Rules

prod(xs) → prodIter(xs, s(0))prodIter(xs, x) → ifProd(isempty(xs), xs, x)
ifProd(true, xs, x) → xifProd(false, xs, x) → prodIter(tail(xs), times(x, head(xs)))
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
times(x, y) → timesIter(x, y, 0, 0)timesIter(x, y, z, u) → ifTimes(ge(u, x), x, y, z, u)
ifTimes(true, x, y, z, u) → zifTimes(false, x, y, z, u) → timesIter(x, y, plus(y, z), s(u))
isempty(nil) → trueisempty(cons(x, xs)) → false
head(nil) → errorhead(cons(x, xs)) → x
tail(nil) → niltail(cons(x, xs)) → xs
ge(x, 0) → truege(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)a → b
a → c

Original Signature

Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, times, isempty, false, head, prod, nil, cons

Strategy


The following SCCs where found

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

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

ifProd#(false, xs, x) → prodIter#(tail(xs), times(x, head(xs)))prodIter#(xs, x) → ifProd#(isempty(xs), xs, x)

timesIter#(x, y, z, u) → ifTimes#(ge(u, x), x, y, z, u)ifTimes#(false, x, y, z, u) → timesIter#(x, y, plus(y, z), s(u))

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

prod(xs) → prodIter(xs, s(0))prodIter(xs, x) → ifProd(isempty(xs), xs, x)
ifProd(true, xs, x) → xifProd(false, xs, x) → prodIter(tail(xs), times(x, head(xs)))
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
times(x, y) → timesIter(x, y, 0, 0)timesIter(x, y, z, u) → ifTimes(ge(u, x), x, y, z, u)
ifTimes(true, x, y, z, u) → zifTimes(false, x, y, z, u) → timesIter(x, y, plus(y, z), s(u))
isempty(nil) → trueisempty(cons(x, xs)) → false
head(nil) → errorhead(cons(x, xs)) → x
tail(nil) → niltail(cons(x, xs)) → xs
ge(x, 0) → truege(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)a → b
a → c

Original Signature

Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, times, isempty, false, head, prod, nil, cons

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

prod(xs) → prodIter(xs, s(0))prodIter(xs, x) → ifProd(isempty(xs), xs, x)
ifProd(true, xs, x) → xifProd(false, xs, x) → prodIter(tail(xs), times(x, head(xs)))
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
times(x, y) → timesIter(x, y, 0, 0)timesIter(x, y, z, u) → ifTimes(ge(u, x), x, y, z, u)
ifTimes(true, x, y, z, u) → zifTimes(false, x, y, z, u) → timesIter(x, y, plus(y, z), s(u))
isempty(nil) → trueisempty(cons(x, xs)) → false
head(nil) → errorhead(cons(x, xs)) → x
tail(nil) → niltail(cons(x, xs)) → xs
ge(x, 0) → truege(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)a → b
a → c

Original Signature

Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, times, isempty, false, head, prod, nil, cons

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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