The ones you cannot kill
Some mutants change the code without changing what it does. Pretending otherwise would make the score a lie.
Not every surviving mutant is a gap in your suite. Some of them cannot be killed by any test, because they do not change what the program does.
A loop that counts up one at a time behaves identically whether it says i < n or i != n. A default value that every path overwrites can be changed to anything at all. A guard whose job is already done by a check further down can be removed without consequence.
These are equivalent mutants, and deciding whether an arbitrary mutant is one of them is undecidable in general. Not hard — undecidable. There is no algorithm, and there will not be one.
1 of 5