Superoptimisation : provably optimal code generation using answer set programming. - Thomas Crick (2009)