YES

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

The following DP Processors were used


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

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

max#(g(g(g(x, y), z), u)) → max#(g(g(x, y), z))mem#(g(x, y), z) → mem#(x, z)
f#(x, g(y, z)) → f#(x, y)++#(x, g(y, z)) → ++#(x, y)
mem#(x, max(x)) → null#(x)

Rewrite Rules

f(x, nil) → g(nil, x)f(x, g(y, z)) → g(f(x, y), z)
++(x, nil) → x++(x, g(y, z)) → g(++(x, y), z)
null(nil) → truenull(g(x, y)) → false
mem(nil, y) → falsemem(g(x, y), z) → or(=(y, z), mem(x, z))
mem(x, max(x)) → not(null(x))max(g(g(nil, x), y)) → max'(x, y)
max(g(g(g(x, y), z), u)) → max'(max(g(g(x, y), z)), u)

Original Signature

Termination of terms over the following signature is verified: f, g, max, or, true, not, u, mem, false, ++, null, =, max', nil

Strategy


The following SCCs where found

max#(g(g(g(x, y), z), u)) → max#(g(g(x, y), z))

mem#(g(x, y), z) → mem#(x, z)

f#(x, g(y, z)) → f#(x, y)

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

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

f(x, nil) → g(nil, x)f(x, g(y, z)) → g(f(x, y), z)
++(x, nil) → x++(x, g(y, z)) → g(++(x, y), z)
null(nil) → truenull(g(x, y)) → false
mem(nil, y) → falsemem(g(x, y), z) → or(=(y, z), mem(x, z))
mem(x, max(x)) → not(null(x))max(g(g(nil, x), y)) → max'(x, y)
max(g(g(g(x, y), z), u)) → max'(max(g(g(x, y), z)), u)

Original Signature

Termination of terms over the following signature is verified: f, g, max, or, true, not, u, mem, false, ++, null, =, max', nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

max#(g(g(g(x, y), z), u)) → max#(g(g(x, y), z))

Rewrite Rules

f(x, nil) → g(nil, x)f(x, g(y, z)) → g(f(x, y), z)
++(x, nil) → x++(x, g(y, z)) → g(++(x, y), z)
null(nil) → truenull(g(x, y)) → false
mem(nil, y) → falsemem(g(x, y), z) → or(=(y, z), mem(x, z))
mem(x, max(x)) → not(null(x))max(g(g(nil, x), y)) → max'(x, y)
max(g(g(g(x, y), z), u)) → max'(max(g(g(x, y), z)), u)

Original Signature

Termination of terms over the following signature is verified: f, g, max, or, true, not, u, mem, false, ++, null, =, max', nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

max#(g(g(g(x, y), z), u)) → max#(g(g(x, y), z))

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

mem#(g(x, y), z) → mem#(x, z)

Rewrite Rules

f(x, nil) → g(nil, x)f(x, g(y, z)) → g(f(x, y), z)
++(x, nil) → x++(x, g(y, z)) → g(++(x, y), z)
null(nil) → truenull(g(x, y)) → false
mem(nil, y) → falsemem(g(x, y), z) → or(=(y, z), mem(x, z))
mem(x, max(x)) → not(null(x))max(g(g(nil, x), y)) → max'(x, y)
max(g(g(g(x, y), z), u)) → max'(max(g(g(x, y), z)), u)

Original Signature

Termination of terms over the following signature is verified: f, g, max, or, true, not, u, mem, false, ++, null, =, max', nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

mem#(g(x, y), z) → mem#(x, z)

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

f#(x, g(y, z)) → f#(x, y)

Rewrite Rules

f(x, nil) → g(nil, x)f(x, g(y, z)) → g(f(x, y), z)
++(x, nil) → x++(x, g(y, z)) → g(++(x, y), z)
null(nil) → truenull(g(x, y)) → false
mem(nil, y) → falsemem(g(x, y), z) → or(=(y, z), mem(x, z))
mem(x, max(x)) → not(null(x))max(g(g(nil, x), y)) → max'(x, y)
max(g(g(g(x, y), z), u)) → max'(max(g(g(x, y), z)), u)

Original Signature

Termination of terms over the following signature is verified: f, g, max, or, true, not, u, mem, false, ++, null, =, max', nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

f#(x, g(y, z)) → f#(x, y)