I. Introduction
Mutation testing research has traditionally focused on the relationship between a test suite’s mutant detection ratio and its true efficacy in terms of detecting real faults. Mutants are systematically seeded, artificial faults and while they are simpler than real faults [1], empirical evidence shows that mutants are adequate proxies for real faults and that mutant detection is correlated with real-fault detection [2]–[4]. However the number of mutants grows quickly with program size due to the fact that almost every program statement can be mutated in multiple ways. For example, an assignment of the form a = b + c may be deleted altogether, or the right-hand-side operand may be mutated to a constant value (e.g., a = 0) or a different arithmetic operation (e.g., a = b - c).