Runtime Complexity TRS:
The TRS R consists of the following rules:
from(X) → cons(X, n__from(n__s(X)))
length(n__nil) → 0
length(n__cons(X, Y)) → s(length1(activate(Y)))
length1(X) → length(activate(X))
from(X) → n__from(X)
s(X) → n__s(X)
nil → n__nil
cons(X1, X2) → n__cons(X1, X2)
activate(n__from(X)) → from(activate(X))
activate(n__s(X)) → s(activate(X))
activate(n__nil) → nil
activate(n__cons(X1, X2)) → cons(activate(X1), X2)
activate(X) → X
Renamed function symbols to avoid clashes with predefined symbol.
Runtime Complexity TRS:
The TRS R consists of the following rules:
from'(X) → cons'(X, n__from'(n__s'(X)))
length'(n__nil') → 0'
length'(n__cons'(X, Y)) → s'(length1'(activate'(Y)))
length1'(X) → length'(activate'(X))
from'(X) → n__from'(X)
s'(X) → n__s'(X)
nil' → n__nil'
cons'(X1, X2) → n__cons'(X1, X2)
activate'(n__from'(X)) → from'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(n__nil') → nil'
activate'(n__cons'(X1, X2)) → cons'(activate'(X1), X2)
activate'(X) → X
Infered types.
Rules:
from'(X) → cons'(X, n__from'(n__s'(X)))
length'(n__nil') → 0'
length'(n__cons'(X, Y)) → s'(length1'(activate'(Y)))
length1'(X) → length'(activate'(X))
from'(X) → n__from'(X)
s'(X) → n__s'(X)
nil' → n__nil'
cons'(X1, X2) → n__cons'(X1, X2)
activate'(n__from'(X)) → from'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(n__nil') → nil'
activate'(n__cons'(X1, X2)) → cons'(activate'(X1), X2)
activate'(X) → X
Types:
from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__nil' :: n__s':n__from':n__nil':0':n__cons'
0' :: n__s':n__from':n__nil':0':n__cons'
n__cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length1' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
activate' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
nil' :: n__s':n__from':n__nil':0':n__cons'
_hole_n__s':n__from':n__nil':0':n__cons'1 :: n__s':n__from':n__nil':0':n__cons'
_gen_n__s':n__from':n__nil':0':n__cons'2 :: Nat → n__s':n__from':n__nil':0':n__cons'
Heuristically decided to analyse the following defined symbols:
length', length1', activate'
They will be analysed ascendingly in the following order:
length' = length1'
activate' < length'
activate' < length1'
Rules:
from'(X) → cons'(X, n__from'(n__s'(X)))
length'(n__nil') → 0'
length'(n__cons'(X, Y)) → s'(length1'(activate'(Y)))
length1'(X) → length'(activate'(X))
from'(X) → n__from'(X)
s'(X) → n__s'(X)
nil' → n__nil'
cons'(X1, X2) → n__cons'(X1, X2)
activate'(n__from'(X)) → from'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(n__nil') → nil'
activate'(n__cons'(X1, X2)) → cons'(activate'(X1), X2)
activate'(X) → X
Types:
from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__nil' :: n__s':n__from':n__nil':0':n__cons'
0' :: n__s':n__from':n__nil':0':n__cons'
n__cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length1' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
activate' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
nil' :: n__s':n__from':n__nil':0':n__cons'
_hole_n__s':n__from':n__nil':0':n__cons'1 :: n__s':n__from':n__nil':0':n__cons'
_gen_n__s':n__from':n__nil':0':n__cons'2 :: Nat → n__s':n__from':n__nil':0':n__cons'
Generator Equations:
_gen_n__s':n__from':n__nil':0':n__cons'2(0) ⇔ n__nil'
_gen_n__s':n__from':n__nil':0':n__cons'2(+(x, 1)) ⇔ n__from'(_gen_n__s':n__from':n__nil':0':n__cons'2(x))
The following defined symbols remain to be analysed:
activate', length', length1'
They will be analysed ascendingly in the following order:
length' = length1'
activate' < length'
activate' < length1'
Proved the following rewrite lemma:
activate'(_gen_n__s':n__from':n__nil':0':n__cons'2(+(1, _n4))) → _*3, rt ∈ Ω(n4)
Induction Base:
activate'(_gen_n__s':n__from':n__nil':0':n__cons'2(+(1, 0)))
Induction Step:
activate'(_gen_n__s':n__from':n__nil':0':n__cons'2(+(1, +(_$n5, 1)))) →RΩ(1)
from'(activate'(_gen_n__s':n__from':n__nil':0':n__cons'2(+(1, _$n5)))) →IH
from'(_*3)
We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
Rules:
from'(X) → cons'(X, n__from'(n__s'(X)))
length'(n__nil') → 0'
length'(n__cons'(X, Y)) → s'(length1'(activate'(Y)))
length1'(X) → length'(activate'(X))
from'(X) → n__from'(X)
s'(X) → n__s'(X)
nil' → n__nil'
cons'(X1, X2) → n__cons'(X1, X2)
activate'(n__from'(X)) → from'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(n__nil') → nil'
activate'(n__cons'(X1, X2)) → cons'(activate'(X1), X2)
activate'(X) → X
Types:
from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__nil' :: n__s':n__from':n__nil':0':n__cons'
0' :: n__s':n__from':n__nil':0':n__cons'
n__cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length1' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
activate' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
nil' :: n__s':n__from':n__nil':0':n__cons'
_hole_n__s':n__from':n__nil':0':n__cons'1 :: n__s':n__from':n__nil':0':n__cons'
_gen_n__s':n__from':n__nil':0':n__cons'2 :: Nat → n__s':n__from':n__nil':0':n__cons'
Lemmas:
activate'(_gen_n__s':n__from':n__nil':0':n__cons'2(+(1, _n4))) → _*3, rt ∈ Ω(n4)
Generator Equations:
_gen_n__s':n__from':n__nil':0':n__cons'2(0) ⇔ n__nil'
_gen_n__s':n__from':n__nil':0':n__cons'2(+(x, 1)) ⇔ n__from'(_gen_n__s':n__from':n__nil':0':n__cons'2(x))
The following defined symbols remain to be analysed:
length1', length'
They will be analysed ascendingly in the following order:
length' = length1'
Could not prove a rewrite lemma for the defined symbol length1'.
Rules:
from'(X) → cons'(X, n__from'(n__s'(X)))
length'(n__nil') → 0'
length'(n__cons'(X, Y)) → s'(length1'(activate'(Y)))
length1'(X) → length'(activate'(X))
from'(X) → n__from'(X)
s'(X) → n__s'(X)
nil' → n__nil'
cons'(X1, X2) → n__cons'(X1, X2)
activate'(n__from'(X)) → from'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(n__nil') → nil'
activate'(n__cons'(X1, X2)) → cons'(activate'(X1), X2)
activate'(X) → X
Types:
from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__nil' :: n__s':n__from':n__nil':0':n__cons'
0' :: n__s':n__from':n__nil':0':n__cons'
n__cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length1' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
activate' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
nil' :: n__s':n__from':n__nil':0':n__cons'
_hole_n__s':n__from':n__nil':0':n__cons'1 :: n__s':n__from':n__nil':0':n__cons'
_gen_n__s':n__from':n__nil':0':n__cons'2 :: Nat → n__s':n__from':n__nil':0':n__cons'
Lemmas:
activate'(_gen_n__s':n__from':n__nil':0':n__cons'2(+(1, _n4))) → _*3, rt ∈ Ω(n4)
Generator Equations:
_gen_n__s':n__from':n__nil':0':n__cons'2(0) ⇔ n__nil'
_gen_n__s':n__from':n__nil':0':n__cons'2(+(x, 1)) ⇔ n__from'(_gen_n__s':n__from':n__nil':0':n__cons'2(x))
The following defined symbols remain to be analysed:
length'
They will be analysed ascendingly in the following order:
length' = length1'
Could not prove a rewrite lemma for the defined symbol length'.
Rules:
from'(X) → cons'(X, n__from'(n__s'(X)))
length'(n__nil') → 0'
length'(n__cons'(X, Y)) → s'(length1'(activate'(Y)))
length1'(X) → length'(activate'(X))
from'(X) → n__from'(X)
s'(X) → n__s'(X)
nil' → n__nil'
cons'(X1, X2) → n__cons'(X1, X2)
activate'(n__from'(X)) → from'(activate'(X))
activate'(n__s'(X)) → s'(activate'(X))
activate'(n__nil') → nil'
activate'(n__cons'(X1, X2)) → cons'(activate'(X1), X2)
activate'(X) → X
Types:
from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__from' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
n__nil' :: n__s':n__from':n__nil':0':n__cons'
0' :: n__s':n__from':n__nil':0':n__cons'
n__cons' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
s' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
length1' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
activate' :: n__s':n__from':n__nil':0':n__cons' → n__s':n__from':n__nil':0':n__cons'
nil' :: n__s':n__from':n__nil':0':n__cons'
_hole_n__s':n__from':n__nil':0':n__cons'1 :: n__s':n__from':n__nil':0':n__cons'
_gen_n__s':n__from':n__nil':0':n__cons'2 :: Nat → n__s':n__from':n__nil':0':n__cons'
Lemmas:
activate'(_gen_n__s':n__from':n__nil':0':n__cons'2(+(1, _n4))) → _*3, rt ∈ Ω(n4)
Generator Equations:
_gen_n__s':n__from':n__nil':0':n__cons'2(0) ⇔ n__nil'
_gen_n__s':n__from':n__nil':0':n__cons'2(+(x, 1)) ⇔ n__from'(_gen_n__s':n__from':n__nil':0':n__cons'2(x))
No more defined symbols left to analyse.
The lowerbound Ω(n) was proven with the following lemma:
activate'(_gen_n__s':n__from':n__nil':0':n__cons'2(+(1, _n4))) → _*3, rt ∈ Ω(n4)