YES Termination Proof using AProVETerm Rewriting System R:
[X, Y, A, B, y, z', x]
union(X, empty) -> X
union(empty, X) -> X
0(z) -> z
and(tt, X) -> X
mult(z, X) -> z
mult(0(X), Y) -> 0(mult(X, Y))
mult(1(X), Y) -> plus(0(mult(X, Y)), Y)
plus(z, X) -> X
plus(0(X), 0(Y)) -> 0(plus(X, Y))
plus(0(X), 1(Y)) -> 1(plus(X, Y))
plus(1(X), 1(Y)) -> 0(plus(plus(X, Y), 1(z)))
prod(empty) -> 1(z)
prod(singl(X)) -> X
prod(union(A, B)) -> mult(prod(A), prod(B))
sum(empty) -> 0(z)
sum(singl(X)) -> X
sum(union(A, B)) -> plus(sum(A), sum(B))
union(union(x, y), z') == union(x, union(y, z'))
union(x, y) == union(y, x)
mult(x, mult(y, z')) == mult(mult(x, y), z')
mult(x, y) == mult(y, x)
plus(plus(x, y), z') == plus(x, plus(y, z'))
plus(x, y) == plus(y, x)

Termination of R to be shown.



   R
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

union(X, empty) -> X
union(empty, X) -> X
mult(1(X), Y) -> plus(0(mult(X, Y)), Y)
plus(1(X), 1(Y)) -> 0(plus(plus(X, Y), 1(z)))
sum(empty) -> 0(z)

where the Polynomial interpretation:
  POL(mult(x1, x2))=  x1 + x1·x2 + x2  
  POL(and(x1, x2))=  x1 + x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  x1  
  POL(prod(x1))=  x1  
  POL(z)=  0  
  POL(union(x1, x2))=  x1 + x1·x2 + x2  
  POL(1(x1))=  1 + x1  
  POL(tt)=  0  
  POL(sum(x1))=  x1  
  POL(empty)=  1  
  POL(singl(x1))=  x1  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

prod(empty) -> 1(z)

where the Polynomial interpretation:
  POL(mult(x1, x2))=  x1 + x2  
  POL(and(x1, x2))=  x1 + x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  x1  
  POL(prod(x1))=  x1  
  POL(z)=  0  
  POL(union(x1, x2))=  x1 + x2  
  POL(1(x1))=  x1  
  POL(tt)=  0  
  POL(sum(x1))=  x1  
  POL(empty)=  1  
  POL(singl(x1))=  x1  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

sum(union(A, B)) -> plus(sum(A), sum(B))
prod(union(A, B)) -> mult(prod(A), prod(B))

where the Polynomial interpretation:
  POL(mult(x1, x2))=  x1 + x2  
  POL(and(x1, x2))=  x1 + x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  x1  
  POL(prod(x1))=  x1  
  POL(z)=  0  
  POL(union(x1, x2))=  1 + x1 + x2  
  POL(1(x1))=  x1  
  POL(tt)=  0  
  POL(sum(x1))=  x1  
  POL(singl(x1))=  x1  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
RRRPolo
             ...
               →TRS4
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

and(tt, X) -> X

where the Polynomial interpretation:
  POL(mult(x1, x2))=  x1 + x2  
  POL(and(x1, x2))=  1 + x1 + x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  x1  
  POL(prod(x1))=  x1  
  POL(z)=  0  
  POL(1(x1))=  x1  
  POL(union(x1, x2))=  x1 + x2  
  POL(tt)=  0  
  POL(sum(x1))=  x1  
  POL(singl(x1))=  x1  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
RRRPolo
             ...
               →TRS5
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

prod(singl(X)) -> X

where the Polynomial interpretation:
  POL(mult(x1, x2))=  x1 + x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  x1  
  POL(prod(x1))=  1 + x1  
  POL(z)=  0  
  POL(1(x1))=  x1  
  POL(union(x1, x2))=  x1 + x2  
  POL(sum(x1))=  x1  
  POL(singl(x1))=  x1  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
RRRPolo
             ...
               →TRS6
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

sum(singl(X)) -> X

where the Polynomial interpretation:
  POL(mult(x1, x2))=  x1 + x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  x1  
  POL(z)=  0  
  POL(1(x1))=  x1  
  POL(union(x1, x2))=  x1 + x2  
  POL(sum(x1))=  1 + x1  
  POL(singl(x1))=  x1  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
RRRPolo
             ...
               →TRS7
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

mult(z, X) -> z

where the Polynomial interpretation:
  POL(mult(x1, x2))=  1 + x1 + x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  x1  
  POL(z)=  0  
  POL(1(x1))=  x1  
  POL(union(x1, x2))=  x1 + x2  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
RRRPolo
             ...
               →TRS8
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

plus(z, X) -> X

where the Polynomial interpretation:
  POL(mult(x1, x2))=  x1 + x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  x1  
  POL(z)=  1  
  POL(1(x1))=  x1  
  POL(union(x1, x2))=  x1 + x2  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
RRRPolo
             ...
               →TRS9
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

plus(0(X), 1(Y)) -> 1(plus(X, Y))

where the Polynomial interpretation:
  POL(mult(x1, x2))=  x1 + x2  
  POL(plus(x1, x2))=  1 + 2·x1 + 2·x1·x2 + 2·x2  
  POL(0(x1))=  x1  
  POL(z)=  0  
  POL(1(x1))=  1 + x1  
  POL(union(x1, x2))=  x1 + x2  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
RRRPolo
             ...
               →TRS10
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

0(z) -> z
plus(0(X), 0(Y)) -> 0(plus(X, Y))

where the Polynomial interpretation:
  POL(mult(x1, x2))=  x1 + x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  1 + x1  
  POL(z)=  0  
  POL(union(x1, x2))=  x1 + x2  
was used.

Not all Rules of R can be deleted, so we still have to regard a part of R.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
RRRPolo
             ...
               →TRS11
Removing Redundant Rules



Removing the following rules from R which fullfill a polynomial ordering:

mult(0(X), Y) -> 0(mult(X, Y))

where the Polynomial interpretation:
  POL(mult(x1, x2))=  1 + 2·x1 + 2·x1·x2 + 2·x2  
  POL(plus(x1, x2))=  x1 + x2  
  POL(0(x1))=  1 + x1  
  POL(union(x1, x2))=  x1 + x2  
was used.

All Rules of R can be deleted.


   R
RRRPolo
       →TRS2
RRRPolo
           →TRS3
RRRPolo
             ...
               →TRS12
Dependency Pair Analysis



R contains no Dependency Pairs and therefore no SCCs.

Termination of R successfully shown.
Duration:
0:01 minutes