YES(O(1), O(n^2)) 5.52/1.89 YES(O(1), O(n^2)) 5.96/1.92 5.96/1.92 5.96/1.92 5.96/1.92 5.96/1.92 5.96/1.92 Runtime Complexity (innermost) proof of /export/starexec/sandbox/benchmark/theBenchmark.xml.xml 5.96/1.92 5.96/1.92 5.96/1.92
5.96/1.92 5.96/1.92 5.96/1.92
5.96/1.92
5.96/1.92

(0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

append(@l1, @l2) → append#1(@l1, @l2) 5.96/1.92
append#1(::(@x, @xs), @l2) → ::(@x, append(@xs, @l2)) 5.96/1.92
append#1(nil, @l2) → @l2 5.96/1.92
subtrees(@t) → subtrees#1(@t) 5.96/1.92
subtrees#1(leaf) → nil 5.96/1.92
subtrees#1(node(@x, @t1, @t2)) → subtrees#2(subtrees(@t1), @t1, @t2, @x) 5.96/1.92
subtrees#2(@l1, @t1, @t2, @x) → subtrees#3(subtrees(@t2), @l1, @t1, @t2, @x) 5.96/1.92
subtrees#3(@l2, @l1, @t1, @t2, @x) → ::(node(@x, @t1, @t2), append(@l1, @l2))

Rewrite Strategy: INNERMOST
5.96/1.92
5.96/1.92

(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted CpxTRS to CDT
5.96/1.92
5.96/1.92

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

append(z0, z1) → append#1(z0, z1) 5.96/1.92
append#1(::(z0, z1), z2) → ::(z0, append(z1, z2)) 5.96/1.92
append#1(nil, z0) → z0 5.96/1.92
subtrees(z0) → subtrees#1(z0) 5.96/1.92
subtrees#1(leaf) → nil 5.96/1.92
subtrees#1(node(z0, z1, z2)) → subtrees#2(subtrees(z1), z1, z2, z0) 5.96/1.92
subtrees#2(z0, z1, z2, z3) → subtrees#3(subtrees(z2), z0, z1, z2, z3) 5.96/1.92
subtrees#3(z0, z1, z2, z3, z4) → ::(node(z4, z2, z3), append(z1, z0))
Tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.92
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0))
S tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0))
K tuples:none
Defined Rule Symbols:

append, append#1, subtrees, subtrees#1, subtrees#2, subtrees#3

Defined Pair Symbols:

APPEND, APPEND#1, SUBTREES, SUBTREES#1, SUBTREES#2, SUBTREES#3

Compound Symbols:

c, c1, c3, c5, c6, c7

5.96/1.93
5.96/1.93

(3) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1))
We considered the (Usable) Rules:

subtrees(z0) → subtrees#1(z0) 5.96/1.93
subtrees#1(leaf) → nil 5.96/1.93
subtrees#1(node(z0, z1, z2)) → subtrees#2(subtrees(z1), z1, z2, z0) 5.96/1.93
subtrees#2(z0, z1, z2, z3) → subtrees#3(subtrees(z2), z0, z1, z2, z3) 5.96/1.93
subtrees#3(z0, z1, z2, z3, z4) → ::(node(z4, z2, z3), append(z1, z0)) 5.96/1.93
append(z0, z1) → append#1(z0, z1) 5.96/1.93
append#1(::(z0, z1), z2) → ::(z0, append(z1, z2)) 5.96/1.93
append#1(nil, z0) → z0
And the Tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0))
The order we found is given by the following interpretation:
Polynomial interpretation : 5.96/1.93

POL(::(x1, x2)) = [1]    5.96/1.93
POL(APPEND(x1, x2)) = 0    5.96/1.93
POL(APPEND#1(x1, x2)) = 0    5.96/1.93
POL(SUBTREES(x1)) = x1    5.96/1.93
POL(SUBTREES#1(x1)) = x1    5.96/1.93
POL(SUBTREES#2(x1, x2, x3, x4)) = x3 + x4    5.96/1.93
POL(SUBTREES#3(x1, x2, x3, x4, x5)) = 0    5.96/1.93
POL(append(x1, x2)) = [4] + [4]x1 + [4]x2    5.96/1.93
POL(append#1(x1, x2)) = [4] + [4]x1 + [2]x2    5.96/1.93
POL(c(x1)) = x1    5.96/1.93
POL(c1(x1)) = x1    5.96/1.93
POL(c3(x1)) = x1    5.96/1.93
POL(c5(x1, x2)) = x1 + x2    5.96/1.93
POL(c6(x1, x2)) = x1 + x2    5.96/1.93
POL(c7(x1)) = x1    5.96/1.93
POL(leaf) = [3]    5.96/1.93
POL(nil) = [3]    5.96/1.93
POL(node(x1, x2, x3)) = [4] + x1 + x2 + x3    5.96/1.93
POL(subtrees(x1)) = 0    5.96/1.93
POL(subtrees#1(x1)) = [3] + [3]x1    5.96/1.93
POL(subtrees#2(x1, x2, x3, x4)) = [3] + [3]x1 + [3]x2 + [3]x3 + [3]x4    5.96/1.93
POL(subtrees#3(x1, x2, x3, x4, x5)) = [3] + [3]x1 + [3]x2 + [3]x3 + [3]x4 + [3]x5   
5.96/1.93
5.96/1.93

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

append(z0, z1) → append#1(z0, z1) 5.96/1.93
append#1(::(z0, z1), z2) → ::(z0, append(z1, z2)) 5.96/1.93
append#1(nil, z0) → z0 5.96/1.93
subtrees(z0) → subtrees#1(z0) 5.96/1.93
subtrees#1(leaf) → nil 5.96/1.93
subtrees#1(node(z0, z1, z2)) → subtrees#2(subtrees(z1), z1, z2, z0) 5.96/1.93
subtrees#2(z0, z1, z2, z3) → subtrees#3(subtrees(z2), z0, z1, z2, z3) 5.96/1.93
subtrees#3(z0, z1, z2, z3, z4) → ::(node(z4, z2, z3), append(z1, z0))
Tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0))
S tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0))
K tuples:

SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1))
Defined Rule Symbols:

append, append#1, subtrees, subtrees#1, subtrees#2, subtrees#3

Defined Pair Symbols:

APPEND, APPEND#1, SUBTREES, SUBTREES#1, SUBTREES#2, SUBTREES#3

Compound Symbols:

c, c1, c3, c5, c6, c7

5.96/1.93
5.96/1.93

(5) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)

The following tuples could be moved from S to K by knowledge propagation:

SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1))
5.96/1.93
5.96/1.93

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

append(z0, z1) → append#1(z0, z1) 5.96/1.93
append#1(::(z0, z1), z2) → ::(z0, append(z1, z2)) 5.96/1.93
append#1(nil, z0) → z0 5.96/1.93
subtrees(z0) → subtrees#1(z0) 5.96/1.93
subtrees#1(leaf) → nil 5.96/1.93
subtrees#1(node(z0, z1, z2)) → subtrees#2(subtrees(z1), z1, z2, z0) 5.96/1.93
subtrees#2(z0, z1, z2, z3) → subtrees#3(subtrees(z2), z0, z1, z2, z3) 5.96/1.93
subtrees#3(z0, z1, z2, z3, z4) → ::(node(z4, z2, z3), append(z1, z0))
Tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0))
S tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2))
K tuples:

SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0))
Defined Rule Symbols:

append, append#1, subtrees, subtrees#1, subtrees#2, subtrees#3

Defined Pair Symbols:

APPEND, APPEND#1, SUBTREES, SUBTREES#1, SUBTREES#2, SUBTREES#3

Compound Symbols:

c, c1, c3, c5, c6, c7

5.96/1.93
5.96/1.93

(7) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^2))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2))
We considered the (Usable) Rules:

subtrees(z0) → subtrees#1(z0) 5.96/1.93
subtrees#1(leaf) → nil 5.96/1.93
subtrees#1(node(z0, z1, z2)) → subtrees#2(subtrees(z1), z1, z2, z0) 5.96/1.93
subtrees#2(z0, z1, z2, z3) → subtrees#3(subtrees(z2), z0, z1, z2, z3) 5.96/1.93
subtrees#3(z0, z1, z2, z3, z4) → ::(node(z4, z2, z3), append(z1, z0)) 5.96/1.93
append(z0, z1) → append#1(z0, z1) 5.96/1.93
append#1(::(z0, z1), z2) → ::(z0, append(z1, z2)) 5.96/1.93
append#1(nil, z0) → z0
And the Tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0))
The order we found is given by the following interpretation:
Polynomial interpretation : 5.96/1.93

POL(::(x1, x2)) = [1] + x2    5.96/1.93
POL(APPEND(x1, x2)) = x1    5.96/1.93
POL(APPEND#1(x1, x2)) = x1    5.96/1.93
POL(SUBTREES(x1)) = x1 + [2]x12    5.96/1.93
POL(SUBTREES#1(x1)) = x1 + [2]x12    5.96/1.93
POL(SUBTREES#2(x1, x2, x3, x4)) = x1 + [3]x2 + [2]x3 + [2]x32    5.96/1.93
POL(SUBTREES#3(x1, x2, x3, x4, x5)) = x2 + [2]x3    5.96/1.93
POL(append(x1, x2)) = x1 + x2    5.96/1.93
POL(append#1(x1, x2)) = x1 + x2    5.96/1.93
POL(c(x1)) = x1    5.96/1.93
POL(c1(x1)) = x1    5.96/1.93
POL(c3(x1)) = x1    5.96/1.93
POL(c5(x1, x2)) = x1 + x2    5.96/1.93
POL(c6(x1, x2)) = x1 + x2    5.96/1.93
POL(c7(x1)) = x1    5.96/1.93
POL(leaf) = 0    5.96/1.93
POL(nil) = 0    5.96/1.93
POL(node(x1, x2, x3)) = [1] + x2 + x3    5.96/1.93
POL(subtrees(x1)) = x1    5.96/1.93
POL(subtrees#1(x1)) = x1    5.96/1.93
POL(subtrees#2(x1, x2, x3, x4)) = [1] + x1 + x3    5.96/1.93
POL(subtrees#3(x1, x2, x3, x4, x5)) = [1] + x1 + x2   
5.96/1.93
5.96/1.93

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

append(z0, z1) → append#1(z0, z1) 5.96/1.93
append#1(::(z0, z1), z2) → ::(z0, append(z1, z2)) 5.96/1.93
append#1(nil, z0) → z0 5.96/1.93
subtrees(z0) → subtrees#1(z0) 5.96/1.93
subtrees#1(leaf) → nil 5.96/1.93
subtrees#1(node(z0, z1, z2)) → subtrees#2(subtrees(z1), z1, z2, z0) 5.96/1.93
subtrees#2(z0, z1, z2, z3) → subtrees#3(subtrees(z2), z0, z1, z2, z3) 5.96/1.93
subtrees#3(z0, z1, z2, z3, z4) → ::(node(z4, z2, z3), append(z1, z0))
Tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0))
S tuples:

APPEND(z0, z1) → c(APPEND#1(z0, z1))
K tuples:

SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1)) 5.96/1.93
SUBTREES#2(z0, z1, z2, z3) → c6(SUBTREES#3(subtrees(z2), z0, z1, z2, z3), SUBTREES(z2)) 5.96/1.93
SUBTREES#3(z0, z1, z2, z3, z4) → c7(APPEND(z1, z0)) 5.96/1.93
SUBTREES(z0) → c3(SUBTREES#1(z0)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2))
Defined Rule Symbols:

append, append#1, subtrees, subtrees#1, subtrees#2, subtrees#3

Defined Pair Symbols:

APPEND, APPEND#1, SUBTREES, SUBTREES#1, SUBTREES#2, SUBTREES#3

Compound Symbols:

c, c1, c3, c5, c6, c7

5.96/1.93
5.96/1.93

(9) CdtKnowledgeProof (EQUIVALENT transformation)

The following tuples could be moved from S to K by knowledge propagation:

APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2))
Now S is empty
5.96/1.93
5.96/1.93

(10) BOUNDS(O(1), O(1))

5.96/1.93
5.96/1.93
5.96/1.99 EOF