Formal Methods in Computer Architecture