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))
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(cons(lift, s), circ(cons(lift, t), u)) -> CIRC(s, t)
CIRC(cons(lift, s), circ(cons(lift, t), u)) -> CIRC(cons(lift, circ(s, t)), u)
CIRC(circ(s, t), u) -> CIRC(t, u)
CIRC(circ(s, t), u) -> CIRC(s, 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)
MSUBST(msubst(a, s), t) -> MSUBST(a, 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))
The following dependency pairs can be strictly oriented:
CIRC(cons(lift, s), circ(cons(lift, t), u)) -> CIRC(s, t)
CIRC(cons(lift, s), circ(cons(lift, t), u)) -> CIRC(cons(lift, circ(s, 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)
CIRC(cons(a, s), t) -> MSUBST(a, t)
Additionally, the following usable rules w.r.t. the implicit AFS can be oriented:
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)
msubst(a, id) -> a
msubst(msubst(a, s), t) -> msubst(a, circ(s, t))
Used ordering: Polynomial ordering with Polynomial interpretation:
POL(circ(x1, x2)) | = x1 + x1·x2 + x2 |
POL(CIRC(x1, x2)) | = x1 + x1·x2 |
POL(lift) | = 0 |
POL(cons(x1, x2)) | = 1 + x1 + x2 |
POL(msubst(x1, x2)) | = x1 + x1·x2 + x2 |
POL(id) | = 0 |
POL(MSUBST(x1, x2)) | = x1 + x1·x2 |
resulting in one new DP problem.
R
↳DPs
→DP Problem 1
↳Polo
→DP Problem 2
↳Dependency Graph
Dependency Pairs:
CIRC(circ(s, t), u) -> CIRC(t, u)
CIRC(circ(s, t), u) -> CIRC(s, circ(t, u))
MSUBST(msubst(a, s), t) -> CIRC(s, t)
MSUBST(msubst(a, s), t) -> MSUBST(a, 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))
Using the Dependency Graph the DP problem was split into 2 DP problems.
R
↳DPs
→DP Problem 1
↳Polo
→DP Problem 2
↳DGraph
...
→DP Problem 3
↳Size-Change Principle
Dependency Pairs:
CIRC(circ(s, t), u) -> CIRC(s, circ(t, u))
CIRC(circ(s, t), u) -> CIRC(t, u)
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))
We number the DPs as follows:
- CIRC(circ(s, t), u) -> CIRC(s, circ(t, u))
- CIRC(circ(s, t), u) -> CIRC(t, u)
and get the following Size-Change Graph(s):
which lead(s) to this/these maximal multigraph(s):
DP: empty set
Oriented Rules: none
We used the order Homeomorphic Embedding Order with Non-Strict Precedence.
trivial
We obtain no new DP problems.
R
↳DPs
→DP Problem 1
↳Polo
→DP Problem 2
↳DGraph
...
→DP Problem 4
↳Size-Change Principle
Dependency Pair:
MSUBST(msubst(a, s), t) -> MSUBST(a, 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))
We number the DPs as follows:
- MSUBST(msubst(a, s), t) -> MSUBST(a, circ(s, t))
and get the following Size-Change Graph(s):
which lead(s) to this/these maximal multigraph(s):
DP: empty set
Oriented Rules: none
We used the order Homeomorphic Embedding Order with Non-Strict Precedence.
trivial
with Argument Filtering System:
msubst(x1, x2) -> msubst(x1, x2)
We obtain no new DP problems.
Termination of R successfully shown.
Duration:
0:14 minutes