0 QTRS
↳1 DependencyPairsProof (⇔)
↳2 QDP
↳3 DependencyGraphProof (⇔)
↳4 AND
↳5 QDP
↳6 QDPOrderProof (⇔)
↳7 QDP
↳8 PisEmptyProof (⇔)
↳9 TRUE
↳10 QDP
↳11 QDPOrderProof (⇔)
↳12 QDP
↳13 PisEmptyProof (⇔)
↳14 TRUE
purge(nil) → nil
purge(.(x, y)) → .(x, purge(remove(x, y)))
remove(x, nil) → nil
remove(x, .(y, z)) → if(=(x, y), remove(x, z), .(y, remove(x, z)))
PURGE(.(x, y)) → PURGE(remove(x, y))
PURGE(.(x, y)) → REMOVE(x, y)
REMOVE(x, .(y, z)) → REMOVE(x, z)
purge(nil) → nil
purge(.(x, y)) → .(x, purge(remove(x, y)))
remove(x, nil) → nil
remove(x, .(y, z)) → if(=(x, y), remove(x, z), .(y, remove(x, z)))
REMOVE(x, .(y, z)) → REMOVE(x, z)
purge(nil) → nil
purge(.(x, y)) → .(x, purge(remove(x, y)))
remove(x, nil) → nil
remove(x, .(y, z)) → if(=(x, y), remove(x, z), .(y, remove(x, z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REMOVE(x, .(y, z)) → REMOVE(x, z)
POL(.(x1, x2)) = 1 + x2
POL(REMOVE(x1, x2)) = x2
purge(nil) → nil
purge(.(x, y)) → .(x, purge(remove(x, y)))
remove(x, nil) → nil
remove(x, .(y, z)) → if(=(x, y), remove(x, z), .(y, remove(x, z)))
PURGE(.(x, y)) → PURGE(remove(x, y))
purge(nil) → nil
purge(.(x, y)) → .(x, purge(remove(x, y)))
remove(x, nil) → nil
remove(x, .(y, z)) → if(=(x, y), remove(x, z), .(y, remove(x, z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PURGE(.(x, y)) → PURGE(remove(x, y))
POL(.(x1, x2)) = 1 + x1 + x2
POL(=(x1, x2)) = 0
POL(PURGE(x1)) = x1
POL(if(x1, x2, x3)) = 0
POL(nil) = 0
POL(remove(x1, x2)) = 0
remove(x, nil) → nil
remove(x, .(y, z)) → if(=(x, y), remove(x, z), .(y, remove(x, z)))
purge(nil) → nil
purge(.(x, y)) → .(x, purge(remove(x, y)))
remove(x, nil) → nil
remove(x, .(y, z)) → if(=(x, y), remove(x, z), .(y, remove(x, z)))