MAYBE 7.72/2.91 MAYBE 7.72/2.93 7.72/2.93 7.72/2.93
7.72/2.93 7.72/2.930 CpxTRS7.72/2.93
↳1 CpxTrsToCdtProof (BOTH BOUNDS(ID, ID))7.72/2.93
↳2 CdtProblem7.72/2.93
↳3 CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))))7.72/2.93
↳4 CdtProblem7.72/2.93
↳5 CdtNarrowingProof (BOTH BOUNDS(ID, ID))7.72/2.93
↳6 CdtProblem7.72/2.93
↳7 CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID))7.72/2.93
↳8 CdtProblem7.72/2.93
↳9 CdtLeafRemovalProof (ComplexityIfPolyImplication)7.72/2.93
↳10 CdtProblem7.72/2.93
↳11 CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID))7.72/2.93
↳12 CdtProblem7.72/2.93
↳13 CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID))7.72/2.93
↳14 CdtProblem7.72/2.93
purge(nil) → nil 7.72/2.93
purge(.(x, y)) → .(x, purge(remove(x, y))) 7.72/2.93
remove(x, nil) → nil 7.72/2.93
remove(x, .(y, z)) → if(=(x, y), remove(x, z), .(y, remove(x, z)))
Tuples:
purge(nil) → nil 7.72/2.93
purge(.(z0, z1)) → .(z0, purge(remove(z0, z1))) 7.72/2.93
remove(z0, nil) → nil 7.72/2.93
remove(z0, .(z1, z2)) → if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))
S tuples:
PURGE(.(z0, z1)) → c1(PURGE(remove(z0, z1)), REMOVE(z0, z1)) 7.72/2.93
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2))
K tuples:none
PURGE(.(z0, z1)) → c1(PURGE(remove(z0, z1)), REMOVE(z0, z1)) 7.72/2.93
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2))
purge, remove
PURGE, REMOVE
c1, c3
We considered the (Usable) Rules:
PURGE(.(z0, z1)) → c1(PURGE(remove(z0, z1)), REMOVE(z0, z1))
And the Tuples:
remove(z0, nil) → nil 7.72/2.93
remove(z0, .(z1, z2)) → if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))
The order we found is given by the following interpretation:
PURGE(.(z0, z1)) → c1(PURGE(remove(z0, z1)), REMOVE(z0, z1)) 7.72/2.93
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2))
POL(.(x1, x2)) = [2] + x1 + x2 7.72/2.93
POL(=(x1, x2)) = x2 7.72/2.93
POL(PURGE(x1)) = [4]x1 7.72/2.93
POL(REMOVE(x1, x2)) = 0 7.72/2.93
POL(c1(x1, x2)) = x1 + x2 7.72/2.93
POL(c3(x1, x2)) = x1 + x2 7.72/2.93
POL(if(x1, x2, x3)) = x1 7.72/2.93
POL(nil) = 0 7.72/2.93
POL(remove(x1, x2)) = x2
Tuples:
purge(nil) → nil 7.72/2.93
purge(.(z0, z1)) → .(z0, purge(remove(z0, z1))) 7.72/2.93
remove(z0, nil) → nil 7.72/2.93
remove(z0, .(z1, z2)) → if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))
S tuples:
PURGE(.(z0, z1)) → c1(PURGE(remove(z0, z1)), REMOVE(z0, z1)) 7.72/2.93
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2))
K tuples:
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2))
Defined Rule Symbols:
PURGE(.(z0, z1)) → c1(PURGE(remove(z0, z1)), REMOVE(z0, z1))
purge, remove
PURGE, REMOVE
c1, c3
PURGE(.(z0, nil)) → c1(PURGE(nil), REMOVE(z0, nil)) 7.72/2.93
PURGE(.(z0, .(z1, z2))) → c1(PURGE(if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))), REMOVE(z0, .(z1, z2)))
Tuples:
purge(nil) → nil 7.72/2.93
purge(.(z0, z1)) → .(z0, purge(remove(z0, z1))) 7.72/2.93
remove(z0, nil) → nil 7.72/2.93
remove(z0, .(z1, z2)) → if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))
S tuples:
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2)) 7.72/2.93
PURGE(.(z0, nil)) → c1(PURGE(nil), REMOVE(z0, nil)) 7.72/2.93
PURGE(.(z0, .(z1, z2))) → c1(PURGE(if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))), REMOVE(z0, .(z1, z2)))
K tuples:
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2))
Defined Rule Symbols:
PURGE(.(z0, z1)) → c1(PURGE(remove(z0, z1)), REMOVE(z0, z1))
purge, remove
REMOVE, PURGE
c3, c1
Tuples:
purge(nil) → nil 7.72/2.93
purge(.(z0, z1)) → .(z0, purge(remove(z0, z1))) 7.72/2.93
remove(z0, nil) → nil 7.72/2.93
remove(z0, .(z1, z2)) → if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))
S tuples:
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2)) 7.72/2.93
PURGE(.(z0, nil)) → c1 7.72/2.93
PURGE(.(z0, .(z1, z2))) → c1(REMOVE(z0, .(z1, z2)))
K tuples:
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2))
Defined Rule Symbols:
PURGE(.(z0, z1)) → c1(PURGE(remove(z0, z1)), REMOVE(z0, z1))
purge, remove
REMOVE, PURGE
c3, c1, c1
Removed 1 trailing nodes:
PURGE(.(z0, .(z1, z2))) → c1(REMOVE(z0, .(z1, z2)))
PURGE(.(z0, nil)) → c1
Tuples:
purge(nil) → nil 7.72/2.93
purge(.(z0, z1)) → .(z0, purge(remove(z0, z1))) 7.72/2.93
remove(z0, nil) → nil 7.72/2.93
remove(z0, .(z1, z2)) → if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))
S tuples:
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2))
K tuples:none
REMOVE(z0, .(z1, z2)) → c3(REMOVE(z0, z2), REMOVE(z0, z2))
purge, remove
REMOVE
c3
REMOVE(z0, .(z1, .(y1, y2))) → c3(REMOVE(z0, .(y1, y2)), REMOVE(z0, .(y1, y2)))
Tuples:
purge(nil) → nil 7.72/2.93
purge(.(z0, z1)) → .(z0, purge(remove(z0, z1))) 7.72/2.93
remove(z0, nil) → nil 7.72/2.93
remove(z0, .(z1, z2)) → if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))
S tuples:
REMOVE(z0, .(z1, .(y1, y2))) → c3(REMOVE(z0, .(y1, y2)), REMOVE(z0, .(y1, y2)))
K tuples:none
REMOVE(z0, .(z1, .(y1, y2))) → c3(REMOVE(z0, .(y1, y2)), REMOVE(z0, .(y1, y2)))
purge, remove
REMOVE
c3
REMOVE(z0, .(z1, .(z2, .(y2, y3)))) → c3(REMOVE(z0, .(z2, .(y2, y3))), REMOVE(z0, .(z2, .(y2, y3))))
Tuples:
purge(nil) → nil 7.72/2.93
purge(.(z0, z1)) → .(z0, purge(remove(z0, z1))) 7.72/2.93
remove(z0, nil) → nil 7.72/2.93
remove(z0, .(z1, z2)) → if(=(z0, z1), remove(z0, z2), .(z1, remove(z0, z2)))
S tuples:
REMOVE(z0, .(z1, .(z2, .(y2, y3)))) → c3(REMOVE(z0, .(z2, .(y2, y3))), REMOVE(z0, .(z2, .(y2, y3))))
K tuples:none
REMOVE(z0, .(z1, .(z2, .(y2, y3)))) → c3(REMOVE(z0, .(z2, .(y2, y3))), REMOVE(z0, .(z2, .(y2, y3))))
purge, remove
REMOVE
c3