Automating abstract interpretation of abstract machines