YES

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

The following DP Processors were used


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

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

and#(x, or(y, z))and#(x, z)not#(and(x, y))not#(x)
not#(or(x, y))and#(not(x), not(y))not#(or(x, y))not#(x)
and#(x, or(y, z))and#(x, y)not#(and(x, y))not#(y)
not#(or(x, y))not#(y)

Rewrite Rules

not(and(x, y))or(not(x), not(y))not(or(x, y))and(not(x), not(y))
and(x, or(y, z))or(and(x, y), and(x, z))

Original Signature

Termination of terms over the following signature is verified: not, or, and

Strategy


The following SCCs where found

not#(and(x, y)) → not#(x)not#(or(x, y)) → not#(x)
not#(and(x, y)) → not#(y)not#(or(x, y)) → not#(y)

and#(x, or(y, z)) → and#(x, z)and#(x, or(y, z)) → and#(x, y)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

and#(x, or(y, z))and#(x, z)and#(x, or(y, z))and#(x, y)

Rewrite Rules

not(and(x, y))or(not(x), not(y))not(or(x, y))and(not(x), not(y))
and(x, or(y, z))or(and(x, y), and(x, z))

Original Signature

Termination of terms over the following signature is verified: not, or, and

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

and#(x, or(y, z))and#(x, z)and#(x, or(y, z))and#(x, y)

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

not#(and(x, y))not#(x)not#(or(x, y))not#(x)
not#(and(x, y))not#(y)not#(or(x, y))not#(y)

Rewrite Rules

not(and(x, y))or(not(x), not(y))not(or(x, y))and(not(x), not(y))
and(x, or(y, z))or(and(x, y), and(x, z))

Original Signature

Termination of terms over the following signature is verified: not, or, and

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

not#(and(x, y))not#(x)not#(or(x, y))not#(x)
not#(and(x, y))not#(y)not#(or(x, y))not#(y)