YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (35ms).
 | – Problem 2 was processed with processor PolynomialOrderingProcessor (810ms).
 | – Problem 3 was processed with processor PolynomialLinearRange4iUR (88ms).
 | – Problem 4 was processed with processor SubtermCriterion (5ms).
 | – Problem 5 was processed with processor SubtermCriterion (1ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

bubble#(.(x, .(y, z)))bubble#(.(y, z))bsort#(.(x, y))butlast#(bubble(.(x, y)))
last#(.(x, .(y, z)))last#(.(y, z))bsort#(.(x, y))last#(.(bubble(.(x, y)), bsort(butlast(bubble(.(x, y))))))
bubble#(.(x, .(y, z)))bubble#(.(x, z))butlast#(.(x, .(y, z)))butlast#(.(y, z))
bsort#(.(x, y))bsort#(butlast(bubble(.(x, y))))bsort#(.(x, y))bubble#(.(x, y))

Rewrite Rules

bsort(nil)nilbsort(.(x, y))last(.(bubble(.(x, y)), bsort(butlast(bubble(.(x, y))))))
bubble(nil)nilbubble(.(x, nil)).(x, nil)
bubble(.(x, .(y, z)))if(<=(x, y), .(y, bubble(.(x, z))), .(x, bubble(.(y, z))))last(nil)0
last(.(x, nil))xlast(.(x, .(y, z)))last(.(y, z))
butlast(nil)nilbutlast(.(x, nil))nil
butlast(.(x, .(y, z))).(x, butlast(.(y, z)))

Original Signature

Termination of terms over the following signature is verified: bsort, bubble, 0, last, if, <=, ., butlast, nil

Strategy


The following SCCs where found

last#(.(x, .(y, z))) → last#(.(y, z))

butlast#(.(x, .(y, z))) → butlast#(.(y, z))

bsort#(.(x, y)) → bsort#(butlast(bubble(.(x, y))))

bubble#(.(x, .(y, z))) → bubble#(.(y, z))bubble#(.(x, .(y, z))) → bubble#(.(x, z))

Problem 2: PolynomialOrderingProcessor



Dependency Pair Problem

Dependency Pairs

bsort#(.(x, y))bsort#(butlast(bubble(.(x, y))))

Rewrite Rules

bsort(nil)nilbsort(.(x, y))last(.(bubble(.(x, y)), bsort(butlast(bubble(.(x, y))))))
bubble(nil)nilbubble(.(x, nil)).(x, nil)
bubble(.(x, .(y, z)))if(<=(x, y), .(y, bubble(.(x, z))), .(x, bubble(.(y, z))))last(nil)0
last(.(x, nil))xlast(.(x, .(y, z)))last(.(y, z))
butlast(nil)nilbutlast(.(x, nil))nil
butlast(.(x, .(y, z))).(x, butlast(.(y, z)))

Original Signature

Termination of terms over the following signature is verified: bsort, bubble, 0, last, if, <=, ., butlast, nil

Strategy


Polynomial Interpretation

Improved Usable rules

butlast(.(x, .(y, z))).(x, butlast(.(y, z)))bubble(.(x, nil)).(x, nil)
butlast(.(x, nil))nilbutlast(nil)nil
bubble(.(x, .(y, z)))if(<=(x, y), .(y, bubble(.(x, z))), .(x, bubble(.(y, z))))bubble(nil)nil

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

bsort#(.(x, y))bsort#(butlast(bubble(.(x, y))))

Problem 3: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

bubble#(.(x, .(y, z)))bubble#(.(y, z))bubble#(.(x, .(y, z)))bubble#(.(x, z))

Rewrite Rules

bsort(nil)nilbsort(.(x, y))last(.(bubble(.(x, y)), bsort(butlast(bubble(.(x, y))))))
bubble(nil)nilbubble(.(x, nil)).(x, nil)
bubble(.(x, .(y, z)))if(<=(x, y), .(y, bubble(.(x, z))), .(x, bubble(.(y, z))))last(nil)0
last(.(x, nil))xlast(.(x, .(y, z)))last(.(y, z))
butlast(nil)nilbutlast(.(x, nil))nil
butlast(.(x, .(y, z))).(x, butlast(.(y, z)))

Original Signature

Termination of terms over the following signature is verified: bsort, bubble, 0, last, if, <=, ., butlast, nil

Strategy


Polynomial Interpretation

There are no usable rules

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

bubble#(.(x, .(y, z)))bubble#(.(y, z))bubble#(.(x, .(y, z)))bubble#(.(x, z))

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

butlast#(.(x, .(y, z)))butlast#(.(y, z))

Rewrite Rules

bsort(nil)nilbsort(.(x, y))last(.(bubble(.(x, y)), bsort(butlast(bubble(.(x, y))))))
bubble(nil)nilbubble(.(x, nil)).(x, nil)
bubble(.(x, .(y, z)))if(<=(x, y), .(y, bubble(.(x, z))), .(x, bubble(.(y, z))))last(nil)0
last(.(x, nil))xlast(.(x, .(y, z)))last(.(y, z))
butlast(nil)nilbutlast(.(x, nil))nil
butlast(.(x, .(y, z))).(x, butlast(.(y, z)))

Original Signature

Termination of terms over the following signature is verified: bsort, bubble, 0, last, if, <=, ., butlast, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

butlast#(.(x, .(y, z)))butlast#(.(y, z))

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

last#(.(x, .(y, z)))last#(.(y, z))

Rewrite Rules

bsort(nil)nilbsort(.(x, y))last(.(bubble(.(x, y)), bsort(butlast(bubble(.(x, y))))))
bubble(nil)nilbubble(.(x, nil)).(x, nil)
bubble(.(x, .(y, z)))if(<=(x, y), .(y, bubble(.(x, z))), .(x, bubble(.(y, z))))last(nil)0
last(.(x, nil))xlast(.(x, .(y, z)))last(.(y, z))
butlast(nil)nilbutlast(.(x, nil))nil
butlast(.(x, .(y, z))).(x, butlast(.(y, z)))

Original Signature

Termination of terms over the following signature is verified: bsort, bubble, 0, last, if, <=, ., butlast, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

last#(.(x, .(y, z)))last#(.(y, z))