TIMEOUT

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

The following DP Processors were used


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

The following open problems remain:



Open Dependency Pair Problem 3

Dependency Pairs

if#(false, true, n, m, xs, ys) → listify#(n, ys)listify#(n, xs) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if#(false, false, n, m, xs, ys) → listify#(m, xs)

Rewrite Rules

isEmpty(empty) → trueisEmpty(node(l, x, r)) → false
left(empty) → emptyleft(node(l, x, r)) → l
right(empty) → emptyright(node(l, x, r)) → r
elem(node(l, x, r)) → xappend(nil, x) → cons(x, nil)
append(cons(y, ys), x) → cons(y, append(ys, x))listify(n, xs) → if(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if(true, b, n, m, xs, ys) → xsif(false, false, n, m, xs, ys) → listify(m, xs)
if(false, true, n, m, xs, ys) → listify(n, ys)toList(n) → listify(n, nil)

Original Signature

Termination of terms over the following signature is verified: append, true, elem, isEmpty, node, if, empty, false, listify, left, toList, right, y, cons, nil


Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

if#(false, true, n, m, xs, ys) → listify#(n, ys)listify#(n, xs) → right#(n)
listify#(n, xs) → left#(left(n))listify#(n, xs) → right#(left(n))
append#(cons(y, ys), x) → append#(ys, x)listify#(n, xs) → isEmpty#(left(n))
listify#(n, xs) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))listify#(n, xs) → left#(n)
listify#(n, xs) → elem#(left(n))listify#(n, xs) → isEmpty#(n)
toList#(n) → listify#(n, nil)listify#(n, xs) → elem#(n)
listify#(n, xs) → append#(xs, n)if#(false, false, n, m, xs, ys) → listify#(m, xs)

Rewrite Rules

isEmpty(empty) → trueisEmpty(node(l, x, r)) → false
left(empty) → emptyleft(node(l, x, r)) → l
right(empty) → emptyright(node(l, x, r)) → r
elem(node(l, x, r)) → xappend(nil, x) → cons(x, nil)
append(cons(y, ys), x) → cons(y, append(ys, x))listify(n, xs) → if(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if(true, b, n, m, xs, ys) → xsif(false, false, n, m, xs, ys) → listify(m, xs)
if(false, true, n, m, xs, ys) → listify(n, ys)toList(n) → listify(n, nil)

Original Signature

Termination of terms over the following signature is verified: append, true, elem, isEmpty, node, if, empty, false, listify, left, toList, right, y, nil, cons

Strategy


The following SCCs where found

append#(cons(y, ys), x) → append#(ys, x)

if#(false, true, n, m, xs, ys) → listify#(n, ys)listify#(n, xs) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if#(false, false, n, m, xs, ys) → listify#(m, xs)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

append#(cons(y, ys), x) → append#(ys, x)

Rewrite Rules

isEmpty(empty) → trueisEmpty(node(l, x, r)) → false
left(empty) → emptyleft(node(l, x, r)) → l
right(empty) → emptyright(node(l, x, r)) → r
elem(node(l, x, r)) → xappend(nil, x) → cons(x, nil)
append(cons(y, ys), x) → cons(y, append(ys, x))listify(n, xs) → if(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if(true, b, n, m, xs, ys) → xsif(false, false, n, m, xs, ys) → listify(m, xs)
if(false, true, n, m, xs, ys) → listify(n, ys)toList(n) → listify(n, nil)

Original Signature

Termination of terms over the following signature is verified: append, true, elem, isEmpty, node, if, empty, false, listify, left, toList, right, y, nil, cons

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

append#(cons(y, ys), x) → append#(ys, x)

Problem 3: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

if#(false, true, n, m, xs, ys) → listify#(n, ys)listify#(n, xs) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if#(false, false, n, m, xs, ys) → listify#(m, xs)

Rewrite Rules

isEmpty(empty) → trueisEmpty(node(l, x, r)) → false
left(empty) → emptyleft(node(l, x, r)) → l
right(empty) → emptyright(node(l, x, r)) → r
elem(node(l, x, r)) → xappend(nil, x) → cons(x, nil)
append(cons(y, ys), x) → cons(y, append(ys, x))listify(n, xs) → if(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if(true, b, n, m, xs, ys) → xsif(false, false, n, m, xs, ys) → listify(m, xs)
if(false, true, n, m, xs, ys) → listify(n, ys)toList(n) → listify(n, nil)

Original Signature

Termination of terms over the following signature is verified: append, true, elem, isEmpty, node, if, empty, false, listify, left, toList, right, y, nil, cons

Strategy


Instantiation

For all potential predecessors l → r of the rule listify#(n, xs) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n)) on dependency pair chains it holds that: Thus, listify#(n, xs) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n)) is replaced by instances determined through the above matching. These instances are:
listify#(_m, _xs) → if#(isEmpty(_m), isEmpty(left(_m)), right(_m), node(left(left(_m)), elem(left(_m)), node(right(left(_m)), elem(_m), right(_m))), _xs, append(_xs, _m))listify#(_n, _ys) → if#(isEmpty(_n), isEmpty(left(_n)), right(_n), node(left(left(_n)), elem(left(_n)), node(right(left(_n)), elem(_n), right(_n))), _ys, append(_ys, _n))

Problem 4: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

if#(false, true, n, m, xs, ys) → listify#(n, ys)listify#(_m, _xs) → if#(isEmpty(_m), isEmpty(left(_m)), right(_m), node(left(left(_m)), elem(left(_m)), node(right(left(_m)), elem(_m), right(_m))), _xs, append(_xs, _m))
listify#(_n, _ys) → if#(isEmpty(_n), isEmpty(left(_n)), right(_n), node(left(left(_n)), elem(left(_n)), node(right(left(_n)), elem(_n), right(_n))), _ys, append(_ys, _n))if#(false, false, n, m, xs, ys) → listify#(m, xs)

Rewrite Rules

isEmpty(empty) → trueisEmpty(node(l, x, r)) → false
left(empty) → emptyleft(node(l, x, r)) → l
right(empty) → emptyright(node(l, x, r)) → r
elem(node(l, x, r)) → xappend(nil, x) → cons(x, nil)
append(cons(y, ys), x) → cons(y, append(ys, x))listify(n, xs) → if(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if(true, b, n, m, xs, ys) → xsif(false, false, n, m, xs, ys) → listify(m, xs)
if(false, true, n, m, xs, ys) → listify(n, ys)toList(n) → listify(n, nil)

Original Signature

Termination of terms over the following signature is verified: append, true, elem, isEmpty, node, if, empty, false, listify, left, toList, right, y, cons, nil

Strategy


Instantiation

For all potential predecessors l → r of the rule listify#(_m, _xs) → if#(isEmpty(_m), isEmpty(left(_m)), right(_m), node(left(left(_m)), elem(left(_m)), node(right(left(_m)), elem(_m), right(_m))), _xs, append(_xs, _m)) on dependency pair chains it holds that: Thus, listify#(_m, _xs) → if#(isEmpty(_m), isEmpty(left(_m)), right(_m), node(left(left(_m)), elem(left(_m)), node(right(left(_m)), elem(_m), right(_m))), _xs, append(_xs, _m)) is replaced by instances determined through the above matching. These instances are:
listify#(m, xs) → if#(isEmpty(m), isEmpty(left(m)), right(m), node(left(left(m)), elem(left(m)), node(right(left(m)), elem(m), right(m))), xs, append(xs, m))listify#(n, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n))

Instantiation

For all potential predecessors l → r of the rule listify#(_n, _ys) → if#(isEmpty(_n), isEmpty(left(_n)), right(_n), node(left(left(_n)), elem(left(_n)), node(right(left(_n)), elem(_n), right(_n))), _ys, append(_ys, _n)) on dependency pair chains it holds that: Thus, listify#(_n, _ys) → if#(isEmpty(_n), isEmpty(left(_n)), right(_n), node(left(left(_n)), elem(left(_n)), node(right(left(_n)), elem(_n), right(_n))), _ys, append(_ys, _n)) is replaced by instances determined through the above matching. These instances are:
listify#(m, xs) → if#(isEmpty(m), isEmpty(left(m)), right(m), node(left(left(m)), elem(left(m)), node(right(left(m)), elem(m), right(m))), xs, append(xs, m))listify#(n, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n))

Problem 5: ForwardInstantiation



Dependency Pair Problem

Dependency Pairs

if#(false, true, n, m, xs, ys) → listify#(n, ys)listify#(m, xs) → if#(isEmpty(m), isEmpty(left(m)), right(m), node(left(left(m)), elem(left(m)), node(right(left(m)), elem(m), right(m))), xs, append(xs, m))
listify#(n, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n))if#(false, false, n, m, xs, ys) → listify#(m, xs)

Rewrite Rules

isEmpty(empty) → trueisEmpty(node(l, x, r)) → false
left(empty) → emptyleft(node(l, x, r)) → l
right(empty) → emptyright(node(l, x, r)) → r
elem(node(l, x, r)) → xappend(nil, x) → cons(x, nil)
append(cons(y, ys), x) → cons(y, append(ys, x))listify(n, xs) → if(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if(true, b, n, m, xs, ys) → xsif(false, false, n, m, xs, ys) → listify(m, xs)
if(false, true, n, m, xs, ys) → listify(n, ys)toList(n) → listify(n, nil)

Original Signature

Termination of terms over the following signature is verified: append, true, elem, isEmpty, node, if, empty, false, listify, left, toList, right, y, nil, cons

Strategy


Instantiation

For all potential successors l → r of the rule if#(false, true, n, m, xs, ys) → listify#(n, ys) on dependency pair chains it holds that: Thus, if#(false, true, n, m, xs, ys) → listify#(n, ys) is replaced by instances determined through the above matching. These instances are:
if#(false, true, n, m, xs, ys) → listify#(n, ys)if#(false, true, n, n, ys, ys) → listify#(n, ys)

Instantiation

For all potential successors l → r of the rule if#(false, false, n, m, xs, ys) → listify#(m, xs) on dependency pair chains it holds that: Thus, if#(false, false, n, m, xs, ys) → listify#(m, xs) is replaced by instances determined through the above matching. These instances are:
if#(false, false, m, m, xs, xs) → listify#(m, xs)if#(false, false, n, m, xs, ys) → listify#(m, xs)

Problem 6: Propagation



Dependency Pair Problem

Dependency Pairs

if#(false, true, n, m, xs, ys) → listify#(n, ys)if#(false, false, m, m, xs, xs) → listify#(m, xs)
listify#(m, xs) → if#(isEmpty(m), isEmpty(left(m)), right(m), node(left(left(m)), elem(left(m)), node(right(left(m)), elem(m), right(m))), xs, append(xs, m))if#(false, true, n, n, ys, ys) → listify#(n, ys)
listify#(n, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n))if#(false, false, n, m, xs, ys) → listify#(m, xs)

Rewrite Rules

isEmpty(empty) → trueisEmpty(node(l, x, r)) → false
left(empty) → emptyleft(node(l, x, r)) → l
right(empty) → emptyright(node(l, x, r)) → r
elem(node(l, x, r)) → xappend(nil, x) → cons(x, nil)
append(cons(y, ys), x) → cons(y, append(ys, x))listify(n, xs) → if(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if(true, b, n, m, xs, ys) → xsif(false, false, n, m, xs, ys) → listify(m, xs)
if(false, true, n, m, xs, ys) → listify(n, ys)toList(n) → listify(n, nil)

Original Signature

Termination of terms over the following signature is verified: append, true, elem, isEmpty, node, if, empty, false, listify, left, toList, right, y, cons, nil

Strategy


The dependency pairs if#(false, true, n, m, xs, ys) → listify#(n, ys) and listify#(n, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n)) are consolidated into the rule if#(false, true, n, m, xs, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n)) .

This is possible as


Summary

Removed Dependency PairsAdded Dependency Pairs
if#(false, true, n, m, xs, ys) → listify#(n, ys)if#(false, true, n, m, xs, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n))
listify#(n, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n)) 

Problem 7: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

if#(false, false, m, m, xs, xs) → listify#(m, xs)listify#(m, xs) → if#(isEmpty(m), isEmpty(left(m)), right(m), node(left(left(m)), elem(left(m)), node(right(left(m)), elem(m), right(m))), xs, append(xs, m))
if#(false, true, n, n, ys, ys) → listify#(n, ys)if#(false, true, n, m, xs, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n))
if#(false, false, n, m, xs, ys) → listify#(m, xs)

Rewrite Rules

isEmpty(empty) → trueisEmpty(node(l, x, r)) → false
left(empty) → emptyleft(node(l, x, r)) → l
right(empty) → emptyright(node(l, x, r)) → r
elem(node(l, x, r)) → xappend(nil, x) → cons(x, nil)
append(cons(y, ys), x) → cons(y, append(ys, x))listify(n, xs) → if(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), xs, append(xs, n))
if(true, b, n, m, xs, ys) → xsif(false, false, n, m, xs, ys) → listify(m, xs)
if(false, true, n, m, xs, ys) → listify(n, ys)toList(n) → listify(n, nil)

Original Signature

Termination of terms over the following signature is verified: append, true, elem, isEmpty, node, if, empty, false, listify, left, toList, right, y, nil, cons

Strategy


Instantiation

For all potential predecessors l → r of the rule listify#(m, xs) → if#(isEmpty(m), isEmpty(left(m)), right(m), node(left(left(m)), elem(left(m)), node(right(left(m)), elem(m), right(m))), xs, append(xs, m)) on dependency pair chains it holds that: Thus, listify#(m, xs) → if#(isEmpty(m), isEmpty(left(m)), right(m), node(left(left(m)), elem(left(m)), node(right(left(m)), elem(m), right(m))), xs, append(xs, m)) is replaced by instances determined through the above matching. These instances are:
listify#(_m, _xs) → if#(isEmpty(_m), isEmpty(left(_m)), right(_m), node(left(left(_m)), elem(left(_m)), node(right(left(_m)), elem(_m), right(_m))), _xs, append(_xs, _m))listify#(n, ys) → if#(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), elem(left(n)), node(right(left(n)), elem(n), right(n))), ys, append(ys, n))