* Step 1: ToInnermost WORST_CASE(?,O(1))
+ Considered Problem:
- Strict TRS:
first(0(),X) -> nil()
first(s(X),cons(Y)) -> cons(Y)
from(X) -> cons(X)
- Signature:
{first/2,from/1} / {0/0,cons/1,nil/0,s/1}
- Obligation:
runtime complexity wrt. defined symbols {first,from} and constructors {0,cons,nil,s}
+ Applied Processor:
ToInnermost
+ Details:
switch to innermost, as the system is overlay and right linear and does not contain weak rules
* Step 2: DependencyPairs WORST_CASE(?,O(1))
+ Considered Problem:
- Strict TRS:
first(0(),X) -> nil()
first(s(X),cons(Y)) -> cons(Y)
from(X) -> cons(X)
- Signature:
{first/2,from/1} / {0/0,cons/1,nil/0,s/1}
- Obligation:
innermost runtime complexity wrt. defined symbols {first,from} and constructors {0,cons,nil,s}
+ Applied Processor:
DependencyPairs {dpKind_ = DT}
+ Details:
We add the following dependency tuples:
Strict DPs
first#(0(),X) -> c_1()
first#(s(X),cons(Y)) -> c_2()
from#(X) -> c_3()
Weak DPs
and mark the set of starting terms.
* Step 3: UsableRules WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
first#(0(),X) -> c_1()
first#(s(X),cons(Y)) -> c_2()
from#(X) -> c_3()
- Weak TRS:
first(0(),X) -> nil()
first(s(X),cons(Y)) -> cons(Y)
from(X) -> cons(X)
- Signature:
{first/2,from/1,first#/2,from#/1} / {0/0,cons/1,nil/0,s/1,c_1/0,c_2/0,c_3/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {first#,from#} and constructors {0,cons,nil,s}
+ Applied Processor:
UsableRules
+ Details:
We replace rewrite rules by usable rules:
first#(0(),X) -> c_1()
first#(s(X),cons(Y)) -> c_2()
from#(X) -> c_3()
* Step 4: Trivial WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
first#(0(),X) -> c_1()
first#(s(X),cons(Y)) -> c_2()
from#(X) -> c_3()
- Signature:
{first/2,from/1,first#/2,from#/1} / {0/0,cons/1,nil/0,s/1,c_1/0,c_2/0,c_3/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {first#,from#} and constructors {0,cons,nil,s}
+ Applied Processor:
Trivial
+ Details:
Consider the dependency graph
1:S:first#(0(),X) -> c_1()
2:S:first#(s(X),cons(Y)) -> c_2()
3:S:from#(X) -> c_3()
The dependency graph contains no loops, we remove all dependency pairs.
* Step 5: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Signature:
{first/2,from/1,first#/2,from#/1} / {0/0,cons/1,nil/0,s/1,c_1/0,c_2/0,c_3/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {first#,from#} and constructors {0,cons,nil,s}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
WORST_CASE(?,O(1))