YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (42ms).
 | – Problem 2 was processed with processor SubtermCriterion (3ms).
 | – Problem 3 was processed with processor SubtermCriterion (11ms).
 | – Problem 4 was processed with processor PolynomialLinearRange4iUR (226ms).
 |    | – Problem 6 was processed with processor PolynomialOrderingProcessor (880ms).
 |    |    | – Problem 7 was processed with processor DependencyGraph (0ms).
 | – Problem 5 was processed with processor SubtermCriterion (0ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

if_times#(false, s(x), y)plus#(y, times(x, y))if_times#(true, s(x), y)plus#(times(half(s(x)), y), times(half(s(x)), y))
plus#(s(x), y)plus#(x, y)even#(s(s(x)))even#(x)
times#(s(x), y)even#(s(x))half#(s(s(x)))half#(x)
times#(s(x), y)if_times#(even(s(x)), s(x), y)if_times#(false, s(x), y)times#(x, y)
if_times#(true, s(x), y)times#(half(s(x)), y)if_times#(true, s(x), y)half#(s(x))

Rewrite Rules

even(0)trueeven(s(0))false
even(s(s(x)))even(x)half(0)0
half(s(s(x)))s(half(x))plus(0, y)y
plus(s(x), y)s(plus(x, y))times(0, y)0
times(s(x), y)if_times(even(s(x)), s(x), y)if_times(true, s(x), y)plus(times(half(s(x)), y), times(half(s(x)), y))
if_times(false, s(x), y)plus(y, times(x, y))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, times, true, false, half, even, if_times

Strategy


The following SCCs where found

times#(s(x), y) → if_times#(even(s(x)), s(x), y)if_times#(false, s(x), y) → times#(x, y)
if_times#(true, s(x), y) → times#(half(s(x)), y)

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

even#(s(s(x))) → even#(x)

half#(s(s(x))) → half#(x)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

even#(s(s(x)))even#(x)

Rewrite Rules

even(0)trueeven(s(0))false
even(s(s(x)))even(x)half(0)0
half(s(s(x)))s(half(x))plus(0, y)y
plus(s(x), y)s(plus(x, y))times(0, y)0
times(s(x), y)if_times(even(s(x)), s(x), y)if_times(true, s(x), y)plus(times(half(s(x)), y), times(half(s(x)), y))
if_times(false, s(x), y)plus(y, times(x, y))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, times, true, false, half, even, if_times

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

even#(s(s(x)))even#(x)

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

even(0)trueeven(s(0))false
even(s(s(x)))even(x)half(0)0
half(s(s(x)))s(half(x))plus(0, y)y
plus(s(x), y)s(plus(x, y))times(0, y)0
times(s(x), y)if_times(even(s(x)), s(x), y)if_times(true, s(x), y)plus(times(half(s(x)), y), times(half(s(x)), y))
if_times(false, s(x), y)plus(y, times(x, y))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, times, true, false, half, even, if_times

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 4: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

times#(s(x), y)if_times#(even(s(x)), s(x), y)if_times#(false, s(x), y)times#(x, y)
if_times#(true, s(x), y)times#(half(s(x)), y)

Rewrite Rules

even(0)trueeven(s(0))false
even(s(s(x)))even(x)half(0)0
half(s(s(x)))s(half(x))plus(0, y)y
plus(s(x), y)s(plus(x, y))times(0, y)0
times(s(x), y)if_times(even(s(x)), s(x), y)if_times(true, s(x), y)plus(times(half(s(x)), y), times(half(s(x)), y))
if_times(false, s(x), y)plus(y, times(x, y))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, times, true, false, half, even, if_times

Strategy


Polynomial Interpretation

Improved Usable rules

half(0)0half(s(s(x)))s(half(x))

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

if_times#(false, s(x), y)times#(x, y)

Problem 6: PolynomialOrderingProcessor



Dependency Pair Problem

Dependency Pairs

times#(s(x), y)if_times#(even(s(x)), s(x), y)if_times#(true, s(x), y)times#(half(s(x)), y)

Rewrite Rules

even(0)trueeven(s(0))false
even(s(s(x)))even(x)half(0)0
half(s(s(x)))s(half(x))plus(0, y)y
plus(s(x), y)s(plus(x, y))times(0, y)0
times(s(x), y)if_times(even(s(x)), s(x), y)if_times(true, s(x), y)plus(times(half(s(x)), y), times(half(s(x)), y))
if_times(false, s(x), y)plus(y, times(x, y))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, times, half, false, true, even, if_times

Strategy


Polynomial Interpretation

Improved Usable rules

half(0)0half(s(s(x)))s(half(x))

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

times#(s(x), y)if_times#(even(s(x)), s(x), y)

Problem 7: DependencyGraph



Dependency Pair Problem

Dependency Pairs

if_times#(true, s(x), y)times#(half(s(x)), y)

Rewrite Rules

even(0)trueeven(s(0))false
even(s(s(x)))even(x)half(0)0
half(s(s(x)))s(half(x))plus(0, y)y
plus(s(x), y)s(plus(x, y))times(0, y)0
times(s(x), y)if_times(even(s(x)), s(x), y)if_times(true, s(x), y)plus(times(half(s(x)), y), times(half(s(x)), y))
if_times(false, s(x), y)plus(y, times(x, y))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, times, true, false, half, even, if_times

Strategy


There are no SCCs!

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

half#(s(s(x)))half#(x)

Rewrite Rules

even(0)trueeven(s(0))false
even(s(s(x)))even(x)half(0)0
half(s(s(x)))s(half(x))plus(0, y)y
plus(s(x), y)s(plus(x, y))times(0, y)0
times(s(x), y)if_times(even(s(x)), s(x), y)if_times(true, s(x), y)plus(times(half(s(x)), y), times(half(s(x)), y))
if_times(false, s(x), y)plus(y, times(x, y))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, times, true, false, half, even, if_times

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

half#(s(s(x)))half#(x)