YES

The TRS could be proven terminating. The proof took 1033 ms.

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (102ms).
 | – Problem 2 was processed with processor PolynomialLinearRange4iUR (345ms).
 |    | – Problem 5 was processed with processor PolynomialLinearRange4iUR (257ms).
 |    |    | – Problem 6 was processed with processor DependencyGraph (36ms).
 |    |    |    | – Problem 7 was processed with processor PolynomialLinearRange4iUR (63ms).
 |    |    |    |    | – Problem 8 was processed with processor DependencyGraph (0ms).
 | – Problem 3 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor SubtermCriterion (0ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

if_reach_2#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, h)reach#(x, y, edge(u, v, i), h) → eq#(x, u)
if_reach_1#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, edge(u, v, h))if_reach_1#(true, x, y, edge(u, v, i), h) → if_reach_2#(eq(y, v), x, y, edge(u, v, i), h)
if_reach_2#(false, x, y, edge(u, v, i), h) → union#(i, h)eq#(s(x), s(y)) → eq#(x, y)
if_reach_1#(true, x, y, edge(u, v, i), h) → eq#(y, v)if_reach_2#(false, x, y, edge(u, v, i), h) → or#(reach(x, y, i, h), reach(v, y, union(i, h), empty))
if_reach_2#(false, x, y, edge(u, v, i), h) → reach#(v, y, union(i, h), empty)reach#(x, y, edge(u, v, i), h) → if_reach_1#(eq(x, u), x, y, edge(u, v, i), h)
union#(edge(x, y, i), h) → union#(i, h)

Rewrite Rules

eq(0, 0) → trueeq(0, s(x)) → false
eq(s(x), 0) → falseeq(s(x), s(y)) → eq(x, y)
or(true, y) → trueor(false, y) → y
union(empty, h) → hunion(edge(x, y, i), h) → edge(x, y, union(i, h))
reach(x, y, empty, h) → falsereach(x, y, edge(u, v, i), h) → if_reach_1(eq(x, u), x, y, edge(u, v, i), h)
if_reach_1(true, x, y, edge(u, v, i), h) → if_reach_2(eq(y, v), x, y, edge(u, v, i), h)if_reach_2(true, x, y, edge(u, v, i), h) → true
if_reach_2(false, x, y, edge(u, v, i), h) → or(reach(x, y, i, h), reach(v, y, union(i, h), empty))if_reach_1(false, x, y, edge(u, v, i), h) → reach(x, y, i, edge(u, v, h))

Original Signature

Termination of terms over the following signature is verified: reach, 0, edge, s, or, union, empty, true, false, if_reach_2, if_reach_1, eq

Strategy


The following SCCs where found

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

if_reach_2#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, h)if_reach_1#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, edge(u, v, h))
if_reach_1#(true, x, y, edge(u, v, i), h) → if_reach_2#(eq(y, v), x, y, edge(u, v, i), h)if_reach_2#(false, x, y, edge(u, v, i), h) → reach#(v, y, union(i, h), empty)
reach#(x, y, edge(u, v, i), h) → if_reach_1#(eq(x, u), x, y, edge(u, v, i), h)

union#(edge(x, y, i), h) → union#(i, h)

Problem 2: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

if_reach_2#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, h)if_reach_1#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, edge(u, v, h))
if_reach_1#(true, x, y, edge(u, v, i), h) → if_reach_2#(eq(y, v), x, y, edge(u, v, i), h)if_reach_2#(false, x, y, edge(u, v, i), h) → reach#(v, y, union(i, h), empty)
reach#(x, y, edge(u, v, i), h) → if_reach_1#(eq(x, u), x, y, edge(u, v, i), h)

Rewrite Rules

eq(0, 0) → trueeq(0, s(x)) → false
eq(s(x), 0) → falseeq(s(x), s(y)) → eq(x, y)
or(true, y) → trueor(false, y) → y
union(empty, h) → hunion(edge(x, y, i), h) → edge(x, y, union(i, h))
reach(x, y, empty, h) → falsereach(x, y, edge(u, v, i), h) → if_reach_1(eq(x, u), x, y, edge(u, v, i), h)
if_reach_1(true, x, y, edge(u, v, i), h) → if_reach_2(eq(y, v), x, y, edge(u, v, i), h)if_reach_2(true, x, y, edge(u, v, i), h) → true
if_reach_2(false, x, y, edge(u, v, i), h) → or(reach(x, y, i, h), reach(v, y, union(i, h), empty))if_reach_1(false, x, y, edge(u, v, i), h) → reach(x, y, i, edge(u, v, h))

Original Signature

Termination of terms over the following signature is verified: reach, 0, edge, s, or, union, empty, true, false, if_reach_2, if_reach_1, eq

Strategy


Polynomial Interpretation

Improved Usable rules

union(edge(x, y, i), h) → edge(x, y, union(i, h))union(empty, h) → h

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

if_reach_2#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, h)

Problem 5: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

if_reach_1#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, edge(u, v, h))if_reach_1#(true, x, y, edge(u, v, i), h) → if_reach_2#(eq(y, v), x, y, edge(u, v, i), h)
if_reach_2#(false, x, y, edge(u, v, i), h) → reach#(v, y, union(i, h), empty)reach#(x, y, edge(u, v, i), h) → if_reach_1#(eq(x, u), x, y, edge(u, v, i), h)

Rewrite Rules

eq(0, 0) → trueeq(0, s(x)) → false
eq(s(x), 0) → falseeq(s(x), s(y)) → eq(x, y)
or(true, y) → trueor(false, y) → y
union(empty, h) → hunion(edge(x, y, i), h) → edge(x, y, union(i, h))
reach(x, y, empty, h) → falsereach(x, y, edge(u, v, i), h) → if_reach_1(eq(x, u), x, y, edge(u, v, i), h)
if_reach_1(true, x, y, edge(u, v, i), h) → if_reach_2(eq(y, v), x, y, edge(u, v, i), h)if_reach_2(true, x, y, edge(u, v, i), h) → true
if_reach_2(false, x, y, edge(u, v, i), h) → or(reach(x, y, i, h), reach(v, y, union(i, h), empty))if_reach_1(false, x, y, edge(u, v, i), h) → reach(x, y, i, edge(u, v, h))

Original Signature

Termination of terms over the following signature is verified: reach, edge, 0, s, or, union, empty, if_reach_2, false, true, if_reach_1, eq

Strategy


Polynomial Interpretation

Improved Usable rules

union(edge(x, y, i), h) → edge(x, y, union(i, h))union(empty, h) → h

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

if_reach_2#(false, x, y, edge(u, v, i), h) → reach#(v, y, union(i, h), empty)

Problem 6: DependencyGraph



Dependency Pair Problem

Dependency Pairs

if_reach_1#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, edge(u, v, h))if_reach_1#(true, x, y, edge(u, v, i), h) → if_reach_2#(eq(y, v), x, y, edge(u, v, i), h)
reach#(x, y, edge(u, v, i), h) → if_reach_1#(eq(x, u), x, y, edge(u, v, i), h)

Rewrite Rules

eq(0, 0) → trueeq(0, s(x)) → false
eq(s(x), 0) → falseeq(s(x), s(y)) → eq(x, y)
or(true, y) → trueor(false, y) → y
union(empty, h) → hunion(edge(x, y, i), h) → edge(x, y, union(i, h))
reach(x, y, empty, h) → falsereach(x, y, edge(u, v, i), h) → if_reach_1(eq(x, u), x, y, edge(u, v, i), h)
if_reach_1(true, x, y, edge(u, v, i), h) → if_reach_2(eq(y, v), x, y, edge(u, v, i), h)if_reach_2(true, x, y, edge(u, v, i), h) → true
if_reach_2(false, x, y, edge(u, v, i), h) → or(reach(x, y, i, h), reach(v, y, union(i, h), empty))if_reach_1(false, x, y, edge(u, v, i), h) → reach(x, y, i, edge(u, v, h))

Original Signature

Termination of terms over the following signature is verified: reach, 0, edge, s, or, union, empty, true, false, if_reach_2, if_reach_1, eq

Strategy


The following SCCs where found

if_reach_1#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, edge(u, v, h))reach#(x, y, edge(u, v, i), h) → if_reach_1#(eq(x, u), x, y, edge(u, v, i), h)

Problem 7: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

if_reach_1#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, edge(u, v, h))reach#(x, y, edge(u, v, i), h) → if_reach_1#(eq(x, u), x, y, edge(u, v, i), h)

Rewrite Rules

eq(0, 0) → trueeq(0, s(x)) → false
eq(s(x), 0) → falseeq(s(x), s(y)) → eq(x, y)
or(true, y) → trueor(false, y) → y
union(empty, h) → hunion(edge(x, y, i), h) → edge(x, y, union(i, h))
reach(x, y, empty, h) → falsereach(x, y, edge(u, v, i), h) → if_reach_1(eq(x, u), x, y, edge(u, v, i), h)
if_reach_1(true, x, y, edge(u, v, i), h) → if_reach_2(eq(y, v), x, y, edge(u, v, i), h)if_reach_2(true, x, y, edge(u, v, i), h) → true
if_reach_2(false, x, y, edge(u, v, i), h) → or(reach(x, y, i, h), reach(v, y, union(i, h), empty))if_reach_1(false, x, y, edge(u, v, i), h) → reach(x, y, i, edge(u, v, h))

Original Signature

Termination of terms over the following signature is verified: reach, 0, edge, s, or, union, empty, true, false, if_reach_2, if_reach_1, eq

Strategy


Polynomial Interpretation

Improved Usable rules

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

if_reach_1#(false, x, y, edge(u, v, i), h) → reach#(x, y, i, edge(u, v, h))

Problem 8: DependencyGraph



Dependency Pair Problem

Dependency Pairs

reach#(x, y, edge(u, v, i), h) → if_reach_1#(eq(x, u), x, y, edge(u, v, i), h)

Rewrite Rules

eq(0, 0) → trueeq(0, s(x)) → false
eq(s(x), 0) → falseeq(s(x), s(y)) → eq(x, y)
or(true, y) → trueor(false, y) → y
union(empty, h) → hunion(edge(x, y, i), h) → edge(x, y, union(i, h))
reach(x, y, empty, h) → falsereach(x, y, edge(u, v, i), h) → if_reach_1(eq(x, u), x, y, edge(u, v, i), h)
if_reach_1(true, x, y, edge(u, v, i), h) → if_reach_2(eq(y, v), x, y, edge(u, v, i), h)if_reach_2(true, x, y, edge(u, v, i), h) → true
if_reach_2(false, x, y, edge(u, v, i), h) → or(reach(x, y, i, h), reach(v, y, union(i, h), empty))if_reach_1(false, x, y, edge(u, v, i), h) → reach(x, y, i, edge(u, v, h))

Original Signature

Termination of terms over the following signature is verified: reach, edge, 0, s, or, union, empty, if_reach_2, false, true, if_reach_1, eq

Strategy


There are no SCCs!

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

union#(edge(x, y, i), h) → union#(i, h)

Rewrite Rules

eq(0, 0) → trueeq(0, s(x)) → false
eq(s(x), 0) → falseeq(s(x), s(y)) → eq(x, y)
or(true, y) → trueor(false, y) → y
union(empty, h) → hunion(edge(x, y, i), h) → edge(x, y, union(i, h))
reach(x, y, empty, h) → falsereach(x, y, edge(u, v, i), h) → if_reach_1(eq(x, u), x, y, edge(u, v, i), h)
if_reach_1(true, x, y, edge(u, v, i), h) → if_reach_2(eq(y, v), x, y, edge(u, v, i), h)if_reach_2(true, x, y, edge(u, v, i), h) → true
if_reach_2(false, x, y, edge(u, v, i), h) → or(reach(x, y, i, h), reach(v, y, union(i, h), empty))if_reach_1(false, x, y, edge(u, v, i), h) → reach(x, y, i, edge(u, v, h))

Original Signature

Termination of terms over the following signature is verified: reach, 0, edge, s, or, union, empty, true, false, if_reach_2, if_reach_1, eq

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

union#(edge(x, y, i), h) → union#(i, h)

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

eq(0, 0) → trueeq(0, s(x)) → false
eq(s(x), 0) → falseeq(s(x), s(y)) → eq(x, y)
or(true, y) → trueor(false, y) → y
union(empty, h) → hunion(edge(x, y, i), h) → edge(x, y, union(i, h))
reach(x, y, empty, h) → falsereach(x, y, edge(u, v, i), h) → if_reach_1(eq(x, u), x, y, edge(u, v, i), h)
if_reach_1(true, x, y, edge(u, v, i), h) → if_reach_2(eq(y, v), x, y, edge(u, v, i), h)if_reach_2(true, x, y, edge(u, v, i), h) → true
if_reach_2(false, x, y, edge(u, v, i), h) → or(reach(x, y, i, h), reach(v, y, union(i, h), empty))if_reach_1(false, x, y, edge(u, v, i), h) → reach(x, y, i, edge(u, v, h))

Original Signature

Termination of terms over the following signature is verified: reach, 0, edge, s, or, union, empty, true, false, if_reach_2, if_reach_1, eq

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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