YES
The TRS could be proven terminating. The proof took 524 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (15ms).
| Problem 2 was processed with processor SubtermCriterion (3ms).
| Problem 3 was processed with processor SubtermCriterion (1ms).
| Problem 4 was processed with processor PolynomialLinearRange4iUR (340ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
msort#(.(x, y)) | → | min#(x, y) | | min#(x, .(y, z)) | → | min#(y, z) |
msort#(.(x, y)) | → | msort#(del(min(x, y), .(x, y))) | | msort#(.(x, y)) | → | del#(min(x, y), .(x, y)) |
del#(x, .(y, z)) | → | del#(x, z) | | min#(x, .(y, z)) | → | min#(x, z) |
Rewrite Rules
msort(nil) | → | nil | | msort(.(x, y)) | → | .(min(x, y), msort(del(min(x, y), .(x, y)))) |
min(x, nil) | → | x | | min(x, .(y, z)) | → | if(<=(x, y), min(x, z), min(y, z)) |
del(x, nil) | → | nil | | del(x, .(y, z)) | → | if(=(x, y), z, .(y, del(x, z))) |
Original Signature
Termination of terms over the following signature is verified: min, msort, if, <=, del, ., =, nil
Strategy
The following SCCs where found
msort#(.(x, y)) → msort#(del(min(x, y), .(x, y))) |
del#(x, .(y, z)) → del#(x, z) |
min#(x, .(y, z)) → min#(y, z) | min#(x, .(y, z)) → min#(x, z) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
min#(x, .(y, z)) | → | min#(y, z) | | min#(x, .(y, z)) | → | min#(x, z) |
Rewrite Rules
msort(nil) | → | nil | | msort(.(x, y)) | → | .(min(x, y), msort(del(min(x, y), .(x, y)))) |
min(x, nil) | → | x | | min(x, .(y, z)) | → | if(<=(x, y), min(x, z), min(y, z)) |
del(x, nil) | → | nil | | del(x, .(y, z)) | → | if(=(x, y), z, .(y, del(x, z))) |
Original Signature
Termination of terms over the following signature is verified: min, msort, if, <=, del, ., =, nil
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
min#(x, .(y, z)) | → | min#(y, z) | | min#(x, .(y, z)) | → | min#(x, z) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
del#(x, .(y, z)) | → | del#(x, z) |
Rewrite Rules
msort(nil) | → | nil | | msort(.(x, y)) | → | .(min(x, y), msort(del(min(x, y), .(x, y)))) |
min(x, nil) | → | x | | min(x, .(y, z)) | → | if(<=(x, y), min(x, z), min(y, z)) |
del(x, nil) | → | nil | | del(x, .(y, z)) | → | if(=(x, y), z, .(y, del(x, z))) |
Original Signature
Termination of terms over the following signature is verified: min, msort, if, <=, del, ., =, nil
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
del#(x, .(y, z)) | → | del#(x, z) |
Problem 4: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
msort#(.(x, y)) | → | msort#(del(min(x, y), .(x, y))) |
Rewrite Rules
msort(nil) | → | nil | | msort(.(x, y)) | → | .(min(x, y), msort(del(min(x, y), .(x, y)))) |
min(x, nil) | → | x | | min(x, .(y, z)) | → | if(<=(x, y), min(x, z), min(y, z)) |
del(x, nil) | → | nil | | del(x, .(y, z)) | → | if(=(x, y), z, .(y, del(x, z))) |
Original Signature
Termination of terms over the following signature is verified: min, msort, if, <=, del, ., =, nil
Strategy
Polynomial Interpretation
- .(x,y): 3x + 2
- <=(x,y): 3y + 1
- =(x,y): 0
- del(x,y): 0
- if(x,y,z): 3x
- min(x,y): 2
- msort(x): 0
- msort#(x): x
- nil: 0
Improved Usable rules
del(x, nil) | → | nil | | del(x, .(y, z)) | → | if(=(x, y), z, .(y, del(x, z))) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
msort#(.(x, y)) | → | msort#(del(min(x, y), .(x, y))) |