Term Rewriting System R:
[x, y, z]
flatten(nil) -> nil
flatten(unit(x)) -> flatten(x)
flatten(++(x, y)) -> ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
flatten(flatten(x)) -> flatten(x)
rev(nil) -> nil
rev(unit(x)) -> unit(x)
rev(++(x, y)) -> ++(rev(y), rev(x))
rev(rev(x)) -> x
++(x, nil) -> x
++(nil, y) -> y
++(++(x, y), z) -> ++(x, ++(y, z))
Innermost Termination of R to be shown.
R
↳Dependency Pair Analysis
R contains the following Dependency Pairs:
FLATTEN(unit(x)) -> FLATTEN(x)
FLATTEN(++(x, y)) -> ++'(flatten(x), flatten(y))
FLATTEN(++(x, y)) -> FLATTEN(x)
FLATTEN(++(x, y)) -> FLATTEN(y)
FLATTEN(++(unit(x), y)) -> ++'(flatten(x), flatten(y))
FLATTEN(++(unit(x), y)) -> FLATTEN(x)
FLATTEN(++(unit(x), y)) -> FLATTEN(y)
REV(++(x, y)) -> ++'(rev(y), rev(x))
REV(++(x, y)) -> REV(y)
REV(++(x, y)) -> REV(x)
++'(++(x, y), z) -> ++'(x, ++(y, z))
++'(++(x, y), z) -> ++'(y, z)
Furthermore, R contains three SCCs.
R
↳DPs
→DP Problem 1
↳Usable Rules (Innermost)
→DP Problem 2
↳UsableRules
→DP Problem 3
↳UsableRules
Dependency Pair:
++'(++(x, y), z) -> ++'(y, z)
Rules:
flatten(nil) -> nil
flatten(unit(x)) -> flatten(x)
flatten(++(x, y)) -> ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
flatten(flatten(x)) -> flatten(x)
rev(nil) -> nil
rev(unit(x)) -> unit(x)
rev(++(x, y)) -> ++(rev(y), rev(x))
rev(rev(x)) -> x
++(x, nil) -> x
++(nil, y) -> y
++(++(x, y), z) -> ++(x, ++(y, z))
Strategy:
innermost
As we are in the innermost case, we can delete all 12 non-usable-rules.
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 4
↳Size-Change Principle
→DP Problem 2
↳UsableRules
→DP Problem 3
↳UsableRules
Dependency Pair:
++'(++(x, y), z) -> ++'(y, z)
Rule:
none
Strategy:
innermost
We number the DPs as follows:
- ++'(++(x, y), z) -> ++'(y, z)
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:
++(x1, x2) -> ++(x1, x2)
We obtain no new DP problems.
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳Usable Rules (Innermost)
→DP Problem 3
↳UsableRules
Dependency Pairs:
FLATTEN(++(unit(x), y)) -> FLATTEN(y)
FLATTEN(++(unit(x), y)) -> FLATTEN(x)
FLATTEN(++(x, y)) -> FLATTEN(y)
FLATTEN(++(x, y)) -> FLATTEN(x)
FLATTEN(unit(x)) -> FLATTEN(x)
Rules:
flatten(nil) -> nil
flatten(unit(x)) -> flatten(x)
flatten(++(x, y)) -> ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
flatten(flatten(x)) -> flatten(x)
rev(nil) -> nil
rev(unit(x)) -> unit(x)
rev(++(x, y)) -> ++(rev(y), rev(x))
rev(rev(x)) -> x
++(x, nil) -> x
++(nil, y) -> y
++(++(x, y), z) -> ++(x, ++(y, z))
Strategy:
innermost
As we are in the innermost case, we can delete all 12 non-usable-rules.
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳UsableRules
→DP Problem 5
↳Size-Change Principle
→DP Problem 3
↳UsableRules
Dependency Pairs:
FLATTEN(++(unit(x), y)) -> FLATTEN(y)
FLATTEN(++(unit(x), y)) -> FLATTEN(x)
FLATTEN(++(x, y)) -> FLATTEN(y)
FLATTEN(++(x, y)) -> FLATTEN(x)
FLATTEN(unit(x)) -> FLATTEN(x)
Rule:
none
Strategy:
innermost
We number the DPs as follows:
- FLATTEN(++(unit(x), y)) -> FLATTEN(y)
- FLATTEN(++(unit(x), y)) -> FLATTEN(x)
- FLATTEN(++(x, y)) -> FLATTEN(y)
- FLATTEN(++(x, y)) -> FLATTEN(x)
- FLATTEN(unit(x)) -> FLATTEN(x)
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:
unit(x1) -> unit(x1)
++(x1, x2) -> ++(x1, x2)
We obtain no new DP problems.
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳UsableRules
→DP Problem 3
↳Usable Rules (Innermost)
Dependency Pair:
REV(++(x, y)) -> REV(y)
Rules:
flatten(nil) -> nil
flatten(unit(x)) -> flatten(x)
flatten(++(x, y)) -> ++(flatten(x), flatten(y))
flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y))
flatten(flatten(x)) -> flatten(x)
rev(nil) -> nil
rev(unit(x)) -> unit(x)
rev(++(x, y)) -> ++(rev(y), rev(x))
rev(rev(x)) -> x
++(x, nil) -> x
++(nil, y) -> y
++(++(x, y), z) -> ++(x, ++(y, z))
Strategy:
innermost
As we are in the innermost case, we can delete all 12 non-usable-rules.
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳UsableRules
→DP Problem 3
↳UsableRules
→DP Problem 6
↳Size-Change Principle
Dependency Pair:
REV(++(x, y)) -> REV(y)
Rule:
none
Strategy:
innermost
We number the DPs as follows:
- REV(++(x, y)) -> REV(y)
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:
++(x1, x2) -> ++(x1, x2)
We obtain no new DP problems.
Innermost Termination of R successfully shown.
Duration:
0:01 minutes