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
Argument Filtering and 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 + x2 POL(circ(x1, x2)) =  1 + x1 + x2 POL(lift) =  0 POL(cons(x1, x2)) =  x1 + x2 POL(msubst(x1, x2)) =  x1 + x2 POL(MSUBST(x1, x2)) =  x1 + x2

resulting in one new DP problem.
Used Argument Filtering System:
CIRC(x1, x2) -> CIRC(x1, x2)
circ(x1, x2) -> circ(x1, x2)
cons(x1, x2) -> cons(x1, x2)
MSUBST(x1, x2) -> MSUBST(x1, x2)
msubst(x1, x2) -> msubst(x1, x2)

R
DPs
→DP Problem 1
AFS
→DP Problem 2
Argument Filtering and 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 + x2 POL(lift) =  0 POL(cons(x1, x2)) =  1 + x1 + x2 POL(msubst(x1, x2)) =  x1 + x2 POL(MSUBST(x1, x2)) =  x1 + x2

resulting in one new DP problem.
Used Argument Filtering System:
CIRC(x1, x2) -> CIRC(x1, x2)
MSUBST(x1, x2) -> MSUBST(x1, x2)
cons(x1, x2) -> cons(x1, x2)
msubst(x1, x2) -> msubst(x1, x2)

R
DPs
→DP Problem 1
AFS
→DP Problem 2
AFS
...
→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