MAYBE 18.11/6.61 MAYBE 18.11/6.63 18.11/6.63 18.11/6.63
18.11/6.63 18.11/6.630 CpxTRS18.11/6.63
↳1 CpxTrsToCdtProof (BOTH BOUNDS(ID, ID))18.11/6.63
↳2 CdtProblem18.11/6.63
↳3 CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID))18.11/6.63
↳4 CdtProblem18.11/6.63
↳5 CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))))18.11/6.63
↳6 CdtProblem18.11/6.63
↳7 CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID))18.11/6.63
↳8 CdtProblem18.11/6.63
↳9 CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID))18.11/6.63
↳10 CdtProblem18.11/6.63
↳11 CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID))18.11/6.63
↳12 CdtProblem18.11/6.63
↳13 CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID))18.11/6.63
↳14 CdtProblem18.11/6.63
↳15 CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID))18.11/6.63
↳16 CdtProblem18.11/6.63
merge(nil, y) → y 18.11/6.63
merge(x, nil) → x 18.11/6.63
merge(.(x, y), .(u, v)) → if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v))) 18.11/6.63
++(nil, y) → y 18.11/6.63
++(.(x, y), z) → .(x, ++(y, z)) 18.11/6.63
if(true, x, y) → x 18.11/6.63
if(false, x, y) → x
Tuples:
merge(nil, z0) → z0 18.11/6.63
merge(z0, nil) → z0 18.11/6.63
merge(.(z0, z1), .(z2, z3)) → if(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))) 18.11/6.63
++(nil, z0) → z0 18.11/6.63
++(.(z0, z1), z2) → .(z0, ++(z1, z2)) 18.11/6.63
if(true, z0, z1) → z0 18.11/6.63
if(false, z0, z1) → z0
S tuples:
MERGE(.(z0, z1), .(z2, z3)) → c2(IF(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))), MERGE(z1, .(z2, z3)), MERGE(.(z0, z1), z3)) 18.11/6.63
++'(.(z0, z1), z2) → c4(++'(z1, z2))
K tuples:none
MERGE(.(z0, z1), .(z2, z3)) → c2(IF(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))), MERGE(z1, .(z2, z3)), MERGE(.(z0, z1), z3)) 18.11/6.63
++'(.(z0, z1), z2) → c4(++'(z1, z2))
merge, ++, if
MERGE, ++'
c2, c4
Tuples:
merge(nil, z0) → z0 18.11/6.63
merge(z0, nil) → z0 18.11/6.63
merge(.(z0, z1), .(z2, z3)) → if(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))) 18.11/6.63
++(nil, z0) → z0 18.11/6.63
++(.(z0, z1), z2) → .(z0, ++(z1, z2)) 18.11/6.63
if(true, z0, z1) → z0 18.11/6.63
if(false, z0, z1) → z0
S tuples:
++'(.(z0, z1), z2) → c4(++'(z1, z2)) 18.11/6.63
MERGE(.(z0, z1), .(z2, z3)) → c2(MERGE(z1, .(z2, z3)), MERGE(.(z0, z1), z3))
K tuples:none
++'(.(z0, z1), z2) → c4(++'(z1, z2)) 18.11/6.63
MERGE(.(z0, z1), .(z2, z3)) → c2(MERGE(z1, .(z2, z3)), MERGE(.(z0, z1), z3))
merge, ++, if
++', MERGE
c4, c2
We considered the (Usable) Rules:none
++'(.(z0, z1), z2) → c4(++'(z1, z2))
The order we found is given by the following interpretation:
++'(.(z0, z1), z2) → c4(++'(z1, z2)) 18.11/6.63
MERGE(.(z0, z1), .(z2, z3)) → c2(MERGE(z1, .(z2, z3)), MERGE(.(z0, z1), z3))
POL(++'(x1, x2)) = [3]x1 18.11/6.63
POL(.(x1, x2)) = [1] + x2 18.11/6.63
POL(MERGE(x1, x2)) = 0 18.11/6.63
POL(c2(x1, x2)) = x1 + x2 18.11/6.63
POL(c4(x1)) = x1
Tuples:
merge(nil, z0) → z0 18.11/6.63
merge(z0, nil) → z0 18.11/6.63
merge(.(z0, z1), .(z2, z3)) → if(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))) 18.11/6.63
++(nil, z0) → z0 18.11/6.64
++(.(z0, z1), z2) → .(z0, ++(z1, z2)) 18.11/6.64
if(true, z0, z1) → z0 18.11/6.64
if(false, z0, z1) → z0
S tuples:
++'(.(z0, z1), z2) → c4(++'(z1, z2)) 18.11/6.64
MERGE(.(z0, z1), .(z2, z3)) → c2(MERGE(z1, .(z2, z3)), MERGE(.(z0, z1), z3))
K tuples:
MERGE(.(z0, z1), .(z2, z3)) → c2(MERGE(z1, .(z2, z3)), MERGE(.(z0, z1), z3))
Defined Rule Symbols:
++'(.(z0, z1), z2) → c4(++'(z1, z2))
merge, ++, if
++', MERGE
c4, c2
++'(.(z0, .(y0, y1)), z2) → c4(++'(.(y0, y1), z2))
Tuples:
merge(nil, z0) → z0 18.11/6.64
merge(z0, nil) → z0 18.11/6.64
merge(.(z0, z1), .(z2, z3)) → if(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))) 18.11/6.64
++(nil, z0) → z0 18.11/6.64
++(.(z0, z1), z2) → .(z0, ++(z1, z2)) 18.11/6.64
if(true, z0, z1) → z0 18.11/6.64
if(false, z0, z1) → z0
S tuples:
MERGE(.(z0, z1), .(z2, z3)) → c2(MERGE(z1, .(z2, z3)), MERGE(.(z0, z1), z3)) 18.11/6.64
++'(.(z0, .(y0, y1)), z2) → c4(++'(.(y0, y1), z2))
K tuples:
MERGE(.(z0, z1), .(z2, z3)) → c2(MERGE(z1, .(z2, z3)), MERGE(.(z0, z1), z3))
Defined Rule Symbols:
++'(.(z0, .(y0, y1)), z2) → c4(++'(.(y0, y1), z2))
merge, ++, if
MERGE, ++'
c2, c4
MERGE(.(z0, .(y0, y1)), .(z2, z3)) → c2(MERGE(.(y0, y1), .(z2, z3)), MERGE(.(z0, .(y0, y1)), z3)) 18.11/6.64
MERGE(.(z0, z1), .(z2, .(y2, y3))) → c2(MERGE(z1, .(z2, .(y2, y3))), MERGE(.(z0, z1), .(y2, y3)))
Tuples:
merge(nil, z0) → z0 18.11/6.64
merge(z0, nil) → z0 18.11/6.64
merge(.(z0, z1), .(z2, z3)) → if(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))) 18.11/6.64
++(nil, z0) → z0 18.11/6.64
++(.(z0, z1), z2) → .(z0, ++(z1, z2)) 18.11/6.64
if(true, z0, z1) → z0 18.11/6.64
if(false, z0, z1) → z0
S tuples:
++'(.(z0, .(y0, y1)), z2) → c4(++'(.(y0, y1), z2)) 18.11/6.64
MERGE(.(z0, .(y0, y1)), .(z2, z3)) → c2(MERGE(.(y0, y1), .(z2, z3)), MERGE(.(z0, .(y0, y1)), z3)) 18.11/6.64
MERGE(.(z0, z1), .(z2, .(y2, y3))) → c2(MERGE(z1, .(z2, .(y2, y3))), MERGE(.(z0, z1), .(y2, y3)))
K tuples:
MERGE(.(z0, .(y0, y1)), .(z2, z3)) → c2(MERGE(.(y0, y1), .(z2, z3)), MERGE(.(z0, .(y0, y1)), z3)) 18.11/6.64
MERGE(.(z0, z1), .(z2, .(y2, y3))) → c2(MERGE(z1, .(z2, .(y2, y3))), MERGE(.(z0, z1), .(y2, y3)))
Defined Rule Symbols:
++'(.(z0, .(y0, y1)), z2) → c4(++'(.(y0, y1), z2))
merge, ++, if
++', MERGE
c4, c2
++'(.(z0, .(z1, .(y1, y2))), z3) → c4(++'(.(z1, .(y1, y2)), z3))
Tuples:
merge(nil, z0) → z0 18.11/6.64
merge(z0, nil) → z0 18.11/6.64
merge(.(z0, z1), .(z2, z3)) → if(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))) 18.11/6.64
++(nil, z0) → z0 18.11/6.64
++(.(z0, z1), z2) → .(z0, ++(z1, z2)) 18.11/6.64
if(true, z0, z1) → z0 18.11/6.64
if(false, z0, z1) → z0
S tuples:
MERGE(.(z0, .(y0, y1)), .(z2, z3)) → c2(MERGE(.(y0, y1), .(z2, z3)), MERGE(.(z0, .(y0, y1)), z3)) 18.11/6.64
MERGE(.(z0, z1), .(z2, .(y2, y3))) → c2(MERGE(z1, .(z2, .(y2, y3))), MERGE(.(z0, z1), .(y2, y3))) 18.11/6.64
++'(.(z0, .(z1, .(y1, y2))), z3) → c4(++'(.(z1, .(y1, y2)), z3))
K tuples:
MERGE(.(z0, .(y0, y1)), .(z2, z3)) → c2(MERGE(.(y0, y1), .(z2, z3)), MERGE(.(z0, .(y0, y1)), z3)) 18.11/6.64
MERGE(.(z0, z1), .(z2, .(y2, y3))) → c2(MERGE(z1, .(z2, .(y2, y3))), MERGE(.(z0, z1), .(y2, y3)))
Defined Rule Symbols:
++'(.(z0, .(z1, .(y1, y2))), z3) → c4(++'(.(z1, .(y1, y2)), z3))
merge, ++, if
MERGE, ++'
c2, c4
MERGE(.(z0, .(z1, .(y1, y2))), .(z3, z4)) → c2(MERGE(.(z1, .(y1, y2)), .(z3, z4)), MERGE(.(z0, .(z1, .(y1, y2))), z4)) 18.11/6.64
MERGE(.(z0, .(z1, z2)), .(z3, .(y3, y4))) → c2(MERGE(.(z1, z2), .(z3, .(y3, y4))), MERGE(.(z0, .(z1, z2)), .(y3, y4))) 18.11/6.64
MERGE(.(z0, .(z1, z2)), .(z3, .(y2, .(y3, y4)))) → c2(MERGE(.(z1, z2), .(z3, .(y2, .(y3, y4)))), MERGE(.(z0, .(z1, z2)), .(y2, .(y3, y4))))
Tuples:
merge(nil, z0) → z0 18.11/6.64
merge(z0, nil) → z0 18.11/6.64
merge(.(z0, z1), .(z2, z3)) → if(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))) 18.11/6.64
++(nil, z0) → z0 18.11/6.64
++(.(z0, z1), z2) → .(z0, ++(z1, z2)) 18.11/6.64
if(true, z0, z1) → z0 18.11/6.64
if(false, z0, z1) → z0
S tuples:
MERGE(.(z0, z1), .(z2, .(y2, y3))) → c2(MERGE(z1, .(z2, .(y2, y3))), MERGE(.(z0, z1), .(y2, y3))) 18.11/6.64
++'(.(z0, .(z1, .(y1, y2))), z3) → c4(++'(.(z1, .(y1, y2)), z3)) 18.11/6.64
MERGE(.(z0, .(z1, .(y1, y2))), .(z3, z4)) → c2(MERGE(.(z1, .(y1, y2)), .(z3, z4)), MERGE(.(z0, .(z1, .(y1, y2))), z4)) 18.11/6.64
MERGE(.(z0, .(z1, z2)), .(z3, .(y3, y4))) → c2(MERGE(.(z1, z2), .(z3, .(y3, y4))), MERGE(.(z0, .(z1, z2)), .(y3, y4))) 18.11/6.64
MERGE(.(z0, .(z1, z2)), .(z3, .(y2, .(y3, y4)))) → c2(MERGE(.(z1, z2), .(z3, .(y2, .(y3, y4)))), MERGE(.(z0, .(z1, z2)), .(y2, .(y3, y4))))
K tuples:
MERGE(.(z0, z1), .(z2, .(y2, y3))) → c2(MERGE(z1, .(z2, .(y2, y3))), MERGE(.(z0, z1), .(y2, y3))) 18.11/6.64
MERGE(.(z0, .(z1, .(y1, y2))), .(z3, z4)) → c2(MERGE(.(z1, .(y1, y2)), .(z3, z4)), MERGE(.(z0, .(z1, .(y1, y2))), z4)) 18.11/6.65
MERGE(.(z0, .(z1, z2)), .(z3, .(y3, y4))) → c2(MERGE(.(z1, z2), .(z3, .(y3, y4))), MERGE(.(z0, .(z1, z2)), .(y3, y4))) 18.11/6.65
MERGE(.(z0, .(z1, z2)), .(z3, .(y2, .(y3, y4)))) → c2(MERGE(.(z1, z2), .(z3, .(y2, .(y3, y4)))), MERGE(.(z0, .(z1, z2)), .(y2, .(y3, y4))))
Defined Rule Symbols:
++'(.(z0, .(z1, .(y1, y2))), z3) → c4(++'(.(z1, .(y1, y2)), z3))
merge, ++, if
MERGE, ++'
c2, c4
MERGE(.(z0, .(y0, y1)), .(z2, .(z3, z4))) → c2(MERGE(.(y0, y1), .(z2, .(z3, z4))), MERGE(.(z0, .(y0, y1)), .(z3, z4))) 18.11/6.65
MERGE(.(z0, z1), .(z2, .(z3, .(y3, y4)))) → c2(MERGE(z1, .(z2, .(z3, .(y3, y4)))), MERGE(.(z0, z1), .(z3, .(y3, y4)))) 18.11/6.65
MERGE(.(z0, .(y0, .(y1, .(y2, y3)))), .(z2, .(z3, z4))) → c2(MERGE(.(y0, .(y1, .(y2, y3))), .(z2, .(z3, z4))), MERGE(.(z0, .(y0, .(y1, .(y2, y3)))), .(z3, z4))) 18.11/6.65
MERGE(.(z0, .(y1, .(y2, y3))), .(z2, .(z3, z4))) → c2(MERGE(.(y1, .(y2, y3)), .(z2, .(z3, z4))), MERGE(.(z0, .(y1, .(y2, y3))), .(z3, z4))) 18.11/6.65
MERGE(.(z0, .(y1, y2)), .(z2, .(z3, .(y4, y5)))) → c2(MERGE(.(y1, y2), .(z2, .(z3, .(y4, y5)))), MERGE(.(z0, .(y1, y2)), .(z3, .(y4, y5)))) 18.11/6.65
MERGE(.(z0, .(y0, .(y1, y2))), .(z2, .(z3, .(y5, y6)))) → c2(MERGE(.(y0, .(y1, y2)), .(z2, .(z3, .(y5, y6)))), MERGE(.(z0, .(y0, .(y1, y2))), .(z3, .(y5, y6)))) 18.11/6.65
MERGE(.(z0, .(y1, y2)), .(z2, .(z3, .(y4, .(y5, y6))))) → c2(MERGE(.(y1, y2), .(z2, .(z3, .(y4, .(y5, y6))))), MERGE(.(z0, .(y1, y2)), .(z3, .(y4, .(y5, y6)))))
Tuples:
merge(nil, z0) → z0 18.11/6.65
merge(z0, nil) → z0 18.11/6.65
merge(.(z0, z1), .(z2, z3)) → if(<(z0, z2), .(z0, merge(z1, .(z2, z3))), .(z2, merge(.(z0, z1), z3))) 18.11/6.65
++(nil, z0) → z0 18.11/6.65
++(.(z0, z1), z2) → .(z0, ++(z1, z2)) 18.11/6.65
if(true, z0, z1) → z0 18.11/6.65
if(false, z0, z1) → z0
S tuples:
++'(.(z0, .(z1, .(y1, y2))), z3) → c4(++'(.(z1, .(y1, y2)), z3)) 18.11/6.65
MERGE(.(z0, .(z1, .(y1, y2))), .(z3, z4)) → c2(MERGE(.(z1, .(y1, y2)), .(z3, z4)), MERGE(.(z0, .(z1, .(y1, y2))), z4)) 18.11/6.65
MERGE(.(z0, .(z1, z2)), .(z3, .(y3, y4))) → c2(MERGE(.(z1, z2), .(z3, .(y3, y4))), MERGE(.(z0, .(z1, z2)), .(y3, y4))) 18.11/6.65
MERGE(.(z0, .(z1, z2)), .(z3, .(y2, .(y3, y4)))) → c2(MERGE(.(z1, z2), .(z3, .(y2, .(y3, y4)))), MERGE(.(z0, .(z1, z2)), .(y2, .(y3, y4)))) 18.11/6.65
MERGE(.(z0, z1), .(z2, .(z3, .(y3, y4)))) → c2(MERGE(z1, .(z2, .(z3, .(y3, y4)))), MERGE(.(z0, z1), .(z3, .(y3, y4)))) 18.11/6.65
MERGE(.(z0, .(y0, .(y1, .(y2, y3)))), .(z2, .(z3, z4))) → c2(MERGE(.(y0, .(y1, .(y2, y3))), .(z2, .(z3, z4))), MERGE(.(z0, .(y0, .(y1, .(y2, y3)))), .(z3, z4))) 18.11/6.65
MERGE(.(z0, .(y1, .(y2, y3))), .(z2, .(z3, z4))) → c2(MERGE(.(y1, .(y2, y3)), .(z2, .(z3, z4))), MERGE(.(z0, .(y1, .(y2, y3))), .(z3, z4))) 18.11/6.65
MERGE(.(z0, .(y0, .(y1, y2))), .(z2, .(z3, .(y5, y6)))) → c2(MERGE(.(y0, .(y1, y2)), .(z2, .(z3, .(y5, y6)))), MERGE(.(z0, .(y0, .(y1, y2))), .(z3, .(y5, y6)))) 18.11/6.65
MERGE(.(z0, .(y1, y2)), .(z2, .(z3, .(y4, .(y5, y6))))) → c2(MERGE(.(y1, y2), .(z2, .(z3, .(y4, .(y5, y6))))), MERGE(.(z0, .(y1, y2)), .(z3, .(y4, .(y5, y6)))))
K tuples:
MERGE(.(z0, .(z1, .(y1, y2))), .(z3, z4)) → c2(MERGE(.(z1, .(y1, y2)), .(z3, z4)), MERGE(.(z0, .(z1, .(y1, y2))), z4)) 18.11/6.65
MERGE(.(z0, .(z1, z2)), .(z3, .(y3, y4))) → c2(MERGE(.(z1, z2), .(z3, .(y3, y4))), MERGE(.(z0, .(z1, z2)), .(y3, y4))) 18.11/6.65
MERGE(.(z0, .(z1, z2)), .(z3, .(y2, .(y3, y4)))) → c2(MERGE(.(z1, z2), .(z3, .(y2, .(y3, y4)))), MERGE(.(z0, .(z1, z2)), .(y2, .(y3, y4)))) 18.11/6.65
MERGE(.(z0, z1), .(z2, .(z3, .(y3, y4)))) → c2(MERGE(z1, .(z2, .(z3, .(y3, y4)))), MERGE(.(z0, z1), .(z3, .(y3, y4)))) 18.11/6.65
MERGE(.(z0, .(y0, .(y1, .(y2, y3)))), .(z2, .(z3, z4))) → c2(MERGE(.(y0, .(y1, .(y2, y3))), .(z2, .(z3, z4))), MERGE(.(z0, .(y0, .(y1, .(y2, y3)))), .(z3, z4))) 18.11/6.65
MERGE(.(z0, .(y1, .(y2, y3))), .(z2, .(z3, z4))) → c2(MERGE(.(y1, .(y2, y3)), .(z2, .(z3, z4))), MERGE(.(z0, .(y1, .(y2, y3))), .(z3, z4))) 18.11/6.65
MERGE(.(z0, .(y0, .(y1, y2))), .(z2, .(z3, .(y5, y6)))) → c2(MERGE(.(y0, .(y1, y2)), .(z2, .(z3, .(y5, y6)))), MERGE(.(z0, .(y0, .(y1, y2))), .(z3, .(y5, y6)))) 18.11/6.65
MERGE(.(z0, .(y1, y2)), .(z2, .(z3, .(y4, .(y5, y6))))) → c2(MERGE(.(y1, y2), .(z2, .(z3, .(y4, .(y5, y6))))), MERGE(.(z0, .(y1, y2)), .(z3, .(y4, .(y5, y6)))))
Defined Rule Symbols:
++'(.(z0, .(z1, .(y1, y2))), z3) → c4(++'(.(z1, .(y1, y2)), z3))
merge, ++, if
++', MERGE
c4, c2