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.920 CpxTRS5.96/1.92
↳1 CpxTrsToCdtProof (BOTH BOUNDS(ID, ID))5.96/1.92
↳2 CdtProblem5.96/1.92
↳3 CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))))5.96/1.92
↳4 CdtProblem5.96/1.92
↳5 CdtKnowledgeProof (BOTH BOUNDS(ID, ID))5.96/1.92
↳6 CdtProblem5.96/1.92
↳7 CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^2))))5.96/1.92
↳8 CdtProblem5.96/1.92
↳9 CdtKnowledgeProof (⇔)5.96/1.92
↳10 BOUNDS(O(1), O(1))5.96/1.92
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))
Tuples:
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))
S 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))
K tuples:none
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))
append, append#1, subtrees, subtrees#1, subtrees#2, subtrees#3
APPEND, APPEND#1, SUBTREES, SUBTREES#1, SUBTREES#2, SUBTREES#3
c, c1, c3, c5, c6, c7
We considered the (Usable) Rules:
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1))
And the Tuples:
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
The order we found is given by the following interpretation:
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))
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
Tuples:
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))
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:
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))
Defined Rule Symbols:
SUBTREES#1(node(z0, z1, z2)) → c5(SUBTREES#2(subtrees(z1), z1, z2, z0), SUBTREES(z1))
append, append#1, subtrees, subtrees#1, subtrees#2, subtrees#3
APPEND, APPEND#1, SUBTREES, SUBTREES#1, SUBTREES#2, SUBTREES#3
c, c1, c3, c5, c6, c7
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))
Tuples:
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))
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:
APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2))
Defined Rule Symbols:
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))
append, append#1, subtrees, subtrees#1, subtrees#2, subtrees#3
APPEND, APPEND#1, SUBTREES, SUBTREES#1, SUBTREES#2, SUBTREES#3
c, c1, c3, c5, c6, c7
We considered the (Usable) Rules:
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2))
And the Tuples:
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
The order we found is given by the following interpretation:
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))
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
Tuples:
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))
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:
APPEND(z0, z1) → c(APPEND#1(z0, z1))
Defined Rule Symbols:
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))
append, append#1, subtrees, subtrees#1, subtrees#2, subtrees#3
APPEND, APPEND#1, SUBTREES, SUBTREES#1, SUBTREES#2, SUBTREES#3
c, c1, c3, c5, c6, c7
Now S is empty
APPEND(z0, z1) → c(APPEND#1(z0, z1)) 5.96/1.93
APPEND#1(::(z0, z1), z2) → c1(APPEND(z1, z2))