Term Rewriting System R:
[y, x, z]
or(true, y) -> true
or(x, true) -> true
or(false, false) -> false
mem(x, nil) -> false
mem(x, set(y)) -> =(x, y)
mem(x, union(y, z)) -> or(mem(x, y), mem(x, z))

Innermost Termination of R to be shown.



   R
Dependency Pair Analysis



R contains the following Dependency Pairs:

MEM(x, union(y, z)) -> OR(mem(x, y), mem(x, z))
MEM(x, union(y, z)) -> MEM(x, y)
MEM(x, union(y, z)) -> MEM(x, z)

Furthermore, R contains one SCC.


   R
DPs
       →DP Problem 1
Forward Instantiation Transformation


Dependency Pairs:

MEM(x, union(y, z)) -> MEM(x, z)
MEM(x, union(y, z)) -> MEM(x, y)


Rules:


or(true, y) -> true
or(x, true) -> true
or(false, false) -> false
mem(x, nil) -> false
mem(x, set(y)) -> =(x, y)
mem(x, union(y, z)) -> or(mem(x, y), mem(x, z))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

MEM(x, union(y, z)) -> MEM(x, y)
one new Dependency Pair is created:

MEM(x'', union(union(y'', z''), z)) -> MEM(x'', union(y'', z''))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
           →DP Problem 2
Forward Instantiation Transformation


Dependency Pairs:

MEM(x'', union(union(y'', z''), z)) -> MEM(x'', union(y'', z''))
MEM(x, union(y, z)) -> MEM(x, z)


Rules:


or(true, y) -> true
or(x, true) -> true
or(false, false) -> false
mem(x, nil) -> false
mem(x, set(y)) -> =(x, y)
mem(x, union(y, z)) -> or(mem(x, y), mem(x, z))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

MEM(x, union(y, z)) -> MEM(x, z)
two new Dependency Pairs are created:

MEM(x'', union(y, union(y'', z''))) -> MEM(x'', union(y'', z''))
MEM(x', union(y, union(union(y'''', z''''), z''))) -> MEM(x', union(union(y'''', z''''), z''))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
           →DP Problem 2
FwdInst
             ...
               →DP Problem 3
Forward Instantiation Transformation


Dependency Pairs:

MEM(x', union(y, union(union(y'''', z''''), z''))) -> MEM(x', union(union(y'''', z''''), z''))
MEM(x'', union(y, union(y'', z''))) -> MEM(x'', union(y'', z''))
MEM(x'', union(union(y'', z''), z)) -> MEM(x'', union(y'', z''))


Rules:


or(true, y) -> true
or(x, true) -> true
or(false, false) -> false
mem(x, nil) -> false
mem(x, set(y)) -> =(x, y)
mem(x, union(y, z)) -> or(mem(x, y), mem(x, z))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

MEM(x'', union(union(y'', z''), z)) -> MEM(x'', union(y'', z''))
three new Dependency Pairs are created:

MEM(x'''', union(union(union(y'''', z''''), z''0), z)) -> MEM(x'''', union(union(y'''', z''''), z''0))
MEM(x'''', union(union(y''0, union(y'''', z'''')), z)) -> MEM(x'''', union(y''0, union(y'''', z'''')))
MEM(x'''', union(union(y''', union(union(y'''''', z''''''), z'''')), z)) -> MEM(x'''', union(y''', union(union(y'''''', z''''''), z'''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
           →DP Problem 2
FwdInst
             ...
               →DP Problem 4
Forward Instantiation Transformation


Dependency Pairs:

MEM(x'''', union(union(y''', union(union(y'''''', z''''''), z'''')), z)) -> MEM(x'''', union(y''', union(union(y'''''', z''''''), z'''')))
MEM(x'''', union(union(y''0, union(y'''', z'''')), z)) -> MEM(x'''', union(y''0, union(y'''', z'''')))
MEM(x'''', union(union(union(y'''', z''''), z''0), z)) -> MEM(x'''', union(union(y'''', z''''), z''0))
MEM(x'', union(y, union(y'', z''))) -> MEM(x'', union(y'', z''))
MEM(x', union(y, union(union(y'''', z''''), z''))) -> MEM(x', union(union(y'''', z''''), z''))


Rules:


or(true, y) -> true
or(x, true) -> true
or(false, false) -> false
mem(x, nil) -> false
mem(x, set(y)) -> =(x, y)
mem(x, union(y, z)) -> or(mem(x, y), mem(x, z))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

MEM(x'', union(y, union(y'', z''))) -> MEM(x'', union(y'', z''))
five new Dependency Pairs are created:

MEM(x'''', union(y, union(y''0, union(y'''', z'''')))) -> MEM(x'''', union(y''0, union(y'''', z'''')))
MEM(x'''', union(y, union(y''', union(union(y'''''', z''''''), z'''')))) -> MEM(x'''', union(y''', union(union(y'''''', z''''''), z'''')))
MEM(x''', union(y, union(union(union(y'''''', z''''''), z''0''), z'''))) -> MEM(x''', union(union(union(y'''''', z''''''), z''0''), z'''))
MEM(x''', union(y, union(union(y''0'', union(y'''''', z'''''')), z'''))) -> MEM(x''', union(union(y''0'', union(y'''''', z'''''')), z'''))
MEM(x''', union(y, union(union(y''''', union(union(y'''''''', z''''''''), z'''''')), z'''))) -> MEM(x''', union(union(y''''', union(union(y'''''''', z''''''''), z'''''')), z'''))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
           →DP Problem 2
FwdInst
             ...
               →DP Problem 5
Forward Instantiation Transformation


Dependency Pairs:

MEM(x''', union(y, union(union(y''''', union(union(y'''''''', z''''''''), z'''''')), z'''))) -> MEM(x''', union(union(y''''', union(union(y'''''''', z''''''''), z'''''')), z'''))
MEM(x''', union(y, union(union(y''0'', union(y'''''', z'''''')), z'''))) -> MEM(x''', union(union(y''0'', union(y'''''', z'''''')), z'''))
MEM(x''', union(y, union(union(union(y'''''', z''''''), z''0''), z'''))) -> MEM(x''', union(union(union(y'''''', z''''''), z''0''), z'''))
MEM(x'''', union(y, union(y''', union(union(y'''''', z''''''), z'''')))) -> MEM(x'''', union(y''', union(union(y'''''', z''''''), z'''')))
MEM(x'''', union(y, union(y''0, union(y'''', z'''')))) -> MEM(x'''', union(y''0, union(y'''', z'''')))
MEM(x'''', union(union(y''0, union(y'''', z'''')), z)) -> MEM(x'''', union(y''0, union(y'''', z'''')))
MEM(x'''', union(union(union(y'''', z''''), z''0), z)) -> MEM(x'''', union(union(y'''', z''''), z''0))
MEM(x', union(y, union(union(y'''', z''''), z''))) -> MEM(x', union(union(y'''', z''''), z''))
MEM(x'''', union(union(y''', union(union(y'''''', z''''''), z'''')), z)) -> MEM(x'''', union(y''', union(union(y'''''', z''''''), z'''')))


Rules:


or(true, y) -> true
or(x, true) -> true
or(false, false) -> false
mem(x, nil) -> false
mem(x, set(y)) -> =(x, y)
mem(x, union(y, z)) -> or(mem(x, y), mem(x, z))


Strategy:

innermost




On this DP problem, a Forward Instantiation SCC transformation can be performed.
As a result of transforming the rule

MEM(x', union(y, union(union(y'''', z''''), z''))) -> MEM(x', union(union(y'''', z''''), z''))
nine new Dependency Pairs are created:

MEM(x''', union(y, union(union(y''''0, z''''0), union(union(y'''''', z''''''), z'''0)))) -> MEM(x''', union(union(y''''0, z''''0), union(union(y'''''', z''''''), z'''0)))
MEM(x'', union(y, union(union(union(y'''''', z''''''), z''''0), z'''))) -> MEM(x'', union(union(union(y'''''', z''''''), z''''0), z'''))
MEM(x'', union(y, union(union(y''''0, union(y'''''', z'''''')), z'''))) -> MEM(x'', union(union(y''''0, union(y'''''', z'''''')), z'''))
MEM(x'', union(y, union(union(y'''''', union(union(y'''''''', z''''''''), z'''''')), z'''))) -> MEM(x'', union(union(y'''''', union(union(y'''''''', z''''''''), z'''''')), z'''))
MEM(x'', union(y, union(union(y''''0, z''''0), union(y''0'', union(y'''''', z''''''))))) -> MEM(x'', union(union(y''''0, z''''0), union(y''0'', union(y'''''', z''''''))))
MEM(x'', union(y, union(union(y''''0, z''''0), union(y'''''', union(union(y'''''''', z''''''''), z''''''))))) -> MEM(x'', union(union(y''''0, z''''0), union(y'''''', union(union(y'''''''', z''''''''), z''''''))))
MEM(x'', union(y, union(union(y''''', z''''0), union(union(union(y'''''''', z''''''''), z''0''''), z'''''')))) -> MEM(x'', union(union(y''''', z''''0), union(union(union(y'''''''', z''''''''), z''0''''), z'''''')))
MEM(x'', union(y, union(union(y''''', z''''0), union(union(y''0'''', union(y'''''''', z'''''''')), z'''''')))) -> MEM(x'', union(union(y''''', z''''0), union(union(y''0'''', union(y'''''''', z'''''''')), z'''''')))
MEM(x'', union(y, union(union(y''''', z''''0), union(union(y''''''', union(union(y'''''''''', z''''''''''), z'''''''')), z'''''')))) -> MEM(x'', union(union(y''''', z''''0), union(union(y''''''', union(union(y'''''''''', z''''''''''), z'''''''')), z'''''')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
FwdInst
           →DP Problem 2
FwdInst
             ...
               →DP Problem 6
Polynomial Ordering


Dependency Pairs:

MEM(x'', union(y, union(union(y''''', z''''0), union(union(y''''''', union(union(y'''''''''', z''''''''''), z'''''''')), z'''''')))) -> MEM(x'', union(union(y''''', z''''0), union(union(y''''''', union(union(y'''''''''', z''''''''''), z'''''''')), z'''''')))
MEM(x'', union(y, union(union(y''''', z''''0), union(union(y''0'''', union(y'''''''', z'''''''')), z'''''')))) -> MEM(x'', union(union(y''''', z''''0), union(union(y''0'''', union(y'''''''', z'''''''')), z'''''')))
MEM(x'', union(y, union(union(y''''', z''''0), union(union(union(y'''''''', z''''''''), z''0''''), z'''''')))) -> MEM(x'', union(union(y''''', z''''0), union(union(union(y'''''''', z''''''''), z''0''''), z'''''')))
MEM(x'', union(y, union(union(y''''0, z''''0), union(y'''''', union(union(y'''''''', z''''''''), z''''''))))) -> MEM(x'', union(union(y''''0, z''''0), union(y'''''', union(union(y'''''''', z''''''''), z''''''))))
MEM(x'', union(y, union(union(y''''0, z''''0), union(y''0'', union(y'''''', z''''''))))) -> MEM(x'', union(union(y''''0, z''''0), union(y''0'', union(y'''''', z''''''))))
MEM(x'', union(y, union(union(y'''''', union(union(y'''''''', z''''''''), z'''''')), z'''))) -> MEM(x'', union(union(y'''''', union(union(y'''''''', z''''''''), z'''''')), z'''))
MEM(x'', union(y, union(union(y''''0, union(y'''''', z'''''')), z'''))) -> MEM(x'', union(union(y''''0, union(y'''''', z'''''')), z'''))
MEM(x'', union(y, union(union(union(y'''''', z''''''), z''''0), z'''))) -> MEM(x'', union(union(union(y'''''', z''''''), z''''0), z'''))
MEM(x''', union(y, union(union(y''''0, z''''0), union(union(y'''''', z''''''), z'''0)))) -> MEM(x''', union(union(y''''0, z''''0), union(union(y'''''', z''''''), z'''0)))
MEM(x''', union(y, union(union(y''0'', union(y'''''', z'''''')), z'''))) -> MEM(x''', union(union(y''0'', union(y'''''', z'''''')), z'''))
MEM(x''', union(y, union(union(union(y'''''', z''''''), z''0''), z'''))) -> MEM(x''', union(union(union(y'''''', z''''''), z''0''), z'''))
MEM(x'''', union(y, union(y''', union(union(y'''''', z''''''), z'''')))) -> MEM(x'''', union(y''', union(union(y'''''', z''''''), z'''')))
MEM(x'''', union(y, union(y''0, union(y'''', z'''')))) -> MEM(x'''', union(y''0, union(y'''', z'''')))
MEM(x'''', union(union(y''', union(union(y'''''', z''''''), z'''')), z)) -> MEM(x'''', union(y''', union(union(y'''''', z''''''), z'''')))
MEM(x'''', union(union(y''0, union(y'''', z'''')), z)) -> MEM(x'''', union(y''0, union(y'''', z'''')))
MEM(x'''', union(union(union(y'''', z''''), z''0), z)) -> MEM(x'''', union(union(y'''', z''''), z''0))
MEM(x''', union(y, union(union(y''''', union(union(y'''''''', z''''''''), z'''''')), z'''))) -> MEM(x''', union(union(y''''', union(union(y'''''''', z''''''''), z'''''')), z'''))


Rules:


or(true, y) -> true
or(x, true) -> true
or(false, false) -> false
mem(x, nil) -> false
mem(x, set(y)) -> =(x, y)
mem(x, union(y, z)) -> or(mem(x, y), mem(x, z))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

MEM(x'', union(y, union(union(y''''', z''''0), union(union(y''''''', union(union(y'''''''''', z''''''''''), z'''''''')), z'''''')))) -> MEM(x'', union(union(y''''', z''''0), union(union(y''''''', union(union(y'''''''''', z''''''''''), z'''''''')), z'''''')))
MEM(x'', union(y, union(union(y''''', z''''0), union(union(y''0'''', union(y'''''''', z'''''''')), z'''''')))) -> MEM(x'', union(union(y''''', z''''0), union(union(y''0'''', union(y'''''''', z'''''''')), z'''''')))
MEM(x'', union(y, union(union(y''''', z''''0), union(union(union(y'''''''', z''''''''), z''0''''), z'''''')))) -> MEM(x'', union(union(y''''', z''''0), union(union(union(y'''''''', z''''''''), z''0''''), z'''''')))
MEM(x'', union(y, union(union(y''''0, z''''0), union(y'''''', union(union(y'''''''', z''''''''), z''''''))))) -> MEM(x'', union(union(y''''0, z''''0), union(y'''''', union(union(y'''''''', z''''''''), z''''''))))
MEM(x'', union(y, union(union(y''''0, z''''0), union(y''0'', union(y'''''', z''''''))))) -> MEM(x'', union(union(y''''0, z''''0), union(y''0'', union(y'''''', z''''''))))
MEM(x'', union(y, union(union(y'''''', union(union(y'''''''', z''''''''), z'''''')), z'''))) -> MEM(x'', union(union(y'''''', union(union(y'''''''', z''''''''), z'''''')), z'''))
MEM(x'', union(y, union(union(y''''0, union(y'''''', z'''''')), z'''))) -> MEM(x'', union(union(y''''0, union(y'''''', z'''''')), z'''))
MEM(x'', union(y, union(union(union(y'''''', z''''''), z''''0), z'''))) -> MEM(x'', union(union(union(y'''''', z''''''), z''''0), z'''))
MEM(x''', union(y, union(union(y''''0, z''''0), union(union(y'''''', z''''''), z'''0)))) -> MEM(x''', union(union(y''''0, z''''0), union(union(y'''''', z''''''), z'''0)))
MEM(x''', union(y, union(union(y''0'', union(y'''''', z'''''')), z'''))) -> MEM(x''', union(union(y''0'', union(y'''''', z'''''')), z'''))
MEM(x''', union(y, union(union(union(y'''''', z''''''), z''0''), z'''))) -> MEM(x''', union(union(union(y'''''', z''''''), z''0''), z'''))
MEM(x'''', union(y, union(y''', union(union(y'''''', z''''''), z'''')))) -> MEM(x'''', union(y''', union(union(y'''''', z''''''), z'''')))
MEM(x'''', union(y, union(y''0, union(y'''', z'''')))) -> MEM(x'''', union(y''0, union(y'''', z'''')))
MEM(x'''', union(union(y''', union(union(y'''''', z''''''), z'''')), z)) -> MEM(x'''', union(y''', union(union(y'''''', z''''''), z'''')))
MEM(x'''', union(union(y''0, union(y'''', z'''')), z)) -> MEM(x'''', union(y''0, union(y'''', z'''')))
MEM(x'''', union(union(union(y'''', z''''), z''0), z)) -> MEM(x'''', union(union(y'''', z''''), z''0))
MEM(x''', union(y, union(union(y''''', union(union(y'''''''', z''''''''), z'''''')), z'''))) -> MEM(x''', union(union(y''''', union(union(y'''''''', z''''''''), z'''''')), z'''))


There are no usable rules for innermost that need to be oriented.

Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(MEM(x1, x2))=  1 + x1 + x2  
  POL(union(x1, x2))=  1 + x1 + x2  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
FwdInst
           →DP Problem 2
FwdInst
             ...
               →DP Problem 7
Dependency Graph


Dependency Pair:


Rules:


or(true, y) -> true
or(x, true) -> true
or(false, false) -> false
mem(x, nil) -> false
mem(x, set(y)) -> =(x, y)
mem(x, union(y, z)) -> or(mem(x, y), mem(x, z))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.

Innermost Termination of R successfully shown.
Duration:
0:36 minutes