YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (10ms).
 | – Problem 2 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 4 was processed with processor SubtermCriterion (1ms).
 | – Problem 3 was processed with processor SubtermCriterion (1ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

merge#(.(x, y), .(u, v))if#(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))merge#(.(x, y), .(u, v))merge#(.(x, y), v)
++#(.(x, y), z)++#(y, z)merge#(.(x, y), .(u, v))merge#(y, .(u, v))

Rewrite Rules

merge(nil, y)ymerge(x, nil)x
merge(.(x, y), .(u, v))if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))++(nil, y)y
++(.(x, y), z).(x, ++(y, z))if(true, x, y)x
if(false, x, y)x

Original Signature

Termination of terms over the following signature is verified: if, merge, true, false, ., ++, nil, <

Strategy


The following SCCs where found

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

merge#(.(x, y), .(u, v)) → merge#(.(x, y), v)merge#(.(x, y), .(u, v)) → merge#(y, .(u, v))

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

merge#(.(x, y), .(u, v))merge#(.(x, y), v)merge#(.(x, y), .(u, v))merge#(y, .(u, v))

Rewrite Rules

merge(nil, y)ymerge(x, nil)x
merge(.(x, y), .(u, v))if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))++(nil, y)y
++(.(x, y), z).(x, ++(y, z))if(true, x, y)x
if(false, x, y)x

Original Signature

Termination of terms over the following signature is verified: if, merge, true, false, ., ++, nil, <

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

merge#(.(x, y), .(u, v))merge#(y, .(u, v))

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

merge#(.(x, y), .(u, v))merge#(.(x, y), v)

Rewrite Rules

merge(nil, y)ymerge(x, nil)x
merge(.(x, y), .(u, v))if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))++(nil, y)y
++(.(x, y), z).(x, ++(y, z))if(true, x, y)x
if(false, x, y)x

Original Signature

Termination of terms over the following signature is verified: if, merge, false, true, ++, ., <, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

merge#(.(x, y), .(u, v))merge#(.(x, y), v)

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

merge(nil, y)ymerge(x, nil)x
merge(.(x, y), .(u, v))if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))++(nil, y)y
++(.(x, y), z).(x, ++(y, z))if(true, x, y)x
if(false, x, y)x

Original Signature

Termination of terms over the following signature is verified: if, merge, true, false, ., ++, nil, <

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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