We consider the following Problem:
Strict Trs:
{ rev(nil()) -> nil()
, rev(rev(x)) -> x
, rev(++(x, y)) -> ++(rev(y), rev(x))
, ++(nil(), y) -> y
, ++(x, nil()) -> x
, ++(.(x, y), z) -> .(x, ++(y, z))
, ++(x, ++(y, z)) -> ++(++(x, y), z)
, make(x) -> .(x, nil())}
StartTerms: basic terms
Strategy: innermost
Certificate: YES(?,O(n^1))
Proof:
We consider the following Problem:
Strict Trs:
{ rev(nil()) -> nil()
, rev(rev(x)) -> x
, rev(++(x, y)) -> ++(rev(y), rev(x))
, ++(nil(), y) -> y
, ++(x, nil()) -> x
, ++(.(x, y), z) -> .(x, ++(y, z))
, ++(x, ++(y, z)) -> ++(++(x, y), z)
, make(x) -> .(x, nil())}
StartTerms: basic terms
Strategy: innermost
Certificate: YES(?,O(n^1))
Proof:
The weightgap principle applies, where following rules are oriented strictly:
TRS Component:
{ rev(nil()) -> nil()
, rev(rev(x)) -> x}
Interpretation of nonconstant growth:
-------------------------------------
The following argument positions are usable:
Uargs(rev) = {}, Uargs(++) = {1, 2}, Uargs(.) = {2},
Uargs(make) = {}
We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation:
Interpretation Functions:
rev(x1) = [1 0] x1 + [1]
[0 1] [1]
nil() = [0]
[0]
++(x1, x2) = [1 0] x1 + [1 0] x2 + [0]
[0 0] [0 0] [0]
.(x1, x2) = [0 0] x1 + [1 0] x2 + [0]
[0 0] [0 0] [1]
make(x1) = [0 0] x1 + [0]
[0 0] [0]
The strictly oriented rules are moved into the weak component.
We consider the following Problem:
Strict Trs:
{ rev(++(x, y)) -> ++(rev(y), rev(x))
, ++(nil(), y) -> y
, ++(x, nil()) -> x
, ++(.(x, y), z) -> .(x, ++(y, z))
, ++(x, ++(y, z)) -> ++(++(x, y), z)
, make(x) -> .(x, nil())}
Weak Trs:
{ rev(nil()) -> nil()
, rev(rev(x)) -> x}
StartTerms: basic terms
Strategy: innermost
Certificate: YES(?,O(n^1))
Proof:
The weightgap principle applies, where following rules are oriented strictly:
TRS Component:
{ ++(nil(), y) -> y
, ++(x, nil()) -> x}
Interpretation of nonconstant growth:
-------------------------------------
The following argument positions are usable:
Uargs(rev) = {}, Uargs(++) = {1, 2}, Uargs(.) = {2},
Uargs(make) = {}
We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation:
Interpretation Functions:
rev(x1) = [0 1] x1 + [1]
[1 0] [0]
nil() = [0]
[0]
++(x1, x2) = [1 0] x1 + [1 0] x2 + [1]
[0 1] [0 1] [0]
.(x1, x2) = [0 0] x1 + [1 0] x2 + [0]
[0 0] [0 0] [0]
make(x1) = [0 0] x1 + [0]
[0 0] [0]
The strictly oriented rules are moved into the weak component.
We consider the following Problem:
Strict Trs:
{ rev(++(x, y)) -> ++(rev(y), rev(x))
, ++(.(x, y), z) -> .(x, ++(y, z))
, ++(x, ++(y, z)) -> ++(++(x, y), z)
, make(x) -> .(x, nil())}
Weak Trs:
{ ++(nil(), y) -> y
, ++(x, nil()) -> x
, rev(nil()) -> nil()
, rev(rev(x)) -> x}
StartTerms: basic terms
Strategy: innermost
Certificate: YES(?,O(n^1))
Proof:
The weightgap principle applies, where following rules are oriented strictly:
TRS Component: {make(x) -> .(x, nil())}
Interpretation of nonconstant growth:
-------------------------------------
The following argument positions are usable:
Uargs(rev) = {}, Uargs(++) = {1, 2}, Uargs(.) = {2},
Uargs(make) = {}
We have the following EDA-non-satisfying and IDA(1)-non-satisfying matrix interpretation:
Interpretation Functions:
rev(x1) = [0 1] x1 + [1]
[1 0] [0]
nil() = [0]
[0]
++(x1, x2) = [1 0] x1 + [1 0] x2 + [1]
[0 1] [0 1] [0]
.(x1, x2) = [0 0] x1 + [1 0] x2 + [0]
[0 0] [0 0] [0]
make(x1) = [0 0] x1 + [2]
[0 0] [0]
The strictly oriented rules are moved into the weak component.
We consider the following Problem:
Strict Trs:
{ rev(++(x, y)) -> ++(rev(y), rev(x))
, ++(.(x, y), z) -> .(x, ++(y, z))
, ++(x, ++(y, z)) -> ++(++(x, y), z)}
Weak Trs:
{ make(x) -> .(x, nil())
, ++(nil(), y) -> y
, ++(x, nil()) -> x
, rev(nil()) -> nil()
, rev(rev(x)) -> x}
StartTerms: basic terms
Strategy: innermost
Certificate: YES(?,O(n^1))
Proof:
We consider the following Problem:
Strict Trs:
{ rev(++(x, y)) -> ++(rev(y), rev(x))
, ++(.(x, y), z) -> .(x, ++(y, z))
, ++(x, ++(y, z)) -> ++(++(x, y), z)}
Weak Trs:
{ make(x) -> .(x, nil())
, ++(nil(), y) -> y
, ++(x, nil()) -> x
, rev(nil()) -> nil()
, rev(rev(x)) -> x}
StartTerms: basic terms
Strategy: innermost
Certificate: YES(?,O(n^1))
Proof:
The problem is match-bounded by 1.
The enriched problem is compatible with the following automaton:
{ rev_0(2) -> 1
, nil_0() -> 1
, nil_0() -> 2
, nil_0() -> 3
, nil_1() -> 3
, ++_0(2, 2) -> 1
, ++_1(2, 2) -> 3
, ._0(2, 2) -> 1
, ._0(2, 2) -> 2
, ._0(2, 2) -> 3
, ._1(2, 3) -> 1
, ._1(2, 3) -> 3
, make_0(2) -> 1}
Hurray, we answered YES(?,O(n^1))