Term Rewriting System R:
[a, s, t, u]
circ(cons(a, s), t) -> cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) -> cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) -> cons(lift, circ(s, t))
circ(circ(s, t), u) -> circ(s, circ(t, u))
circ(s, id) -> s
circ(id, s) -> s
circ(cons(lift, s), circ(cons(lift, t), u)) -> circ(cons(lift, circ(s, t)), u)
subst(a, id) -> a
msubst(a, id) -> a
msubst(msubst(a, s), t) -> msubst(a, circ(s, t))

Innermost Termination of R to be shown.



   R
Dependency Pair Analysis



R contains the following Dependency Pairs:

CIRC(cons(a, s), t) -> MSUBST(a, t)
CIRC(cons(a, s), t) -> CIRC(s, t)
CIRC(cons(lift, s), cons(a, t)) -> CIRC(s, t)
CIRC(cons(lift, s), cons(lift, t)) -> CIRC(s, t)
CIRC(circ(s, t), u) -> CIRC(s, circ(t, u))
CIRC(circ(s, t), u) -> CIRC(t, u)
CIRC(cons(lift, s), circ(cons(lift, t), u)) -> CIRC(cons(lift, circ(s, t)), u)
CIRC(cons(lift, s), circ(cons(lift, t), u)) -> CIRC(s, t)
MSUBST(msubst(a, s), t) -> MSUBST(a, circ(s, t))
MSUBST(msubst(a, s), t) -> CIRC(s, t)

Furthermore, R contains one SCC.


   R
DPs
       →DP Problem 1
Polynomial Ordering


Dependency Pairs:

CIRC(circ(s, t), u) -> CIRC(t, u)
CIRC(cons(lift, s), cons(lift, t)) -> CIRC(s, t)
CIRC(cons(lift, s), cons(a, t)) -> CIRC(s, t)
CIRC(cons(a, s), t) -> CIRC(s, t)
MSUBST(msubst(a, s), t) -> CIRC(s, t)
CIRC(cons(a, s), t) -> MSUBST(a, t)


Rules:


circ(cons(a, s), t) -> cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) -> cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) -> cons(lift, circ(s, t))
circ(circ(s, t), u) -> circ(s, circ(t, u))
circ(s, id) -> s
circ(id, s) -> s
circ(cons(lift, s), circ(cons(lift, t), u)) -> circ(cons(lift, circ(s, t)), u)
subst(a, id) -> a
msubst(a, id) -> a
msubst(msubst(a, s), t) -> msubst(a, circ(s, t))


Strategy:

innermost




The following dependency pair can be strictly oriented:

CIRC(circ(s, t), u) -> CIRC(t, u)


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

Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(CIRC(x1, x2))=  x1  
  POL(circ(x1, x2))=  1 + x2  
  POL(lift)=  0  
  POL(cons(x1, x2))=  x1 + x2  
  POL(msubst(x1, x2))=  x2  
  POL(MSUBST(x1, x2))=  x1  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
Polo
           →DP Problem 2
Polynomial Ordering


Dependency Pairs:

CIRC(cons(lift, s), cons(lift, t)) -> CIRC(s, t)
CIRC(cons(lift, s), cons(a, t)) -> CIRC(s, t)
CIRC(cons(a, s), t) -> CIRC(s, t)
MSUBST(msubst(a, s), t) -> CIRC(s, t)
CIRC(cons(a, s), t) -> MSUBST(a, t)


Rules:


circ(cons(a, s), t) -> cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) -> cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) -> cons(lift, circ(s, t))
circ(circ(s, t), u) -> circ(s, circ(t, u))
circ(s, id) -> s
circ(id, s) -> s
circ(cons(lift, s), circ(cons(lift, t), u)) -> circ(cons(lift, circ(s, t)), u)
subst(a, id) -> a
msubst(a, id) -> a
msubst(msubst(a, s), t) -> msubst(a, circ(s, t))


Strategy:

innermost




The following dependency pairs can be strictly oriented:

CIRC(cons(lift, s), cons(lift, t)) -> CIRC(s, t)
CIRC(cons(lift, s), cons(a, t)) -> CIRC(s, t)
CIRC(cons(a, s), t) -> CIRC(s, t)
CIRC(cons(a, s), t) -> MSUBST(a, t)


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

Used ordering: Polynomial ordering with Polynomial interpretation:
  POL(CIRC(x1, x2))=  x1  
  POL(lift)=  0  
  POL(cons(x1, x2))=  1 + x1 + x2  
  POL(msubst(x1, x2))=  x1 + x2  
  POL(MSUBST(x1, x2))=  x1  

resulting in one new DP problem.



   R
DPs
       →DP Problem 1
Polo
           →DP Problem 2
Polo
             ...
               →DP Problem 3
Dependency Graph


Dependency Pair:

MSUBST(msubst(a, s), t) -> CIRC(s, t)


Rules:


circ(cons(a, s), t) -> cons(msubst(a, t), circ(s, t))
circ(cons(lift, s), cons(a, t)) -> cons(a, circ(s, t))
circ(cons(lift, s), cons(lift, t)) -> cons(lift, circ(s, t))
circ(circ(s, t), u) -> circ(s, circ(t, u))
circ(s, id) -> s
circ(id, s) -> s
circ(cons(lift, s), circ(cons(lift, t), u)) -> circ(cons(lift, circ(s, t)), u)
subst(a, id) -> a
msubst(a, id) -> a
msubst(msubst(a, s), t) -> msubst(a, circ(s, t))


Strategy:

innermost




Using the Dependency Graph resulted in no new DP problems.

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