Matrix Multiply: Writing and Refining FSMs