The Application of Program Verification to Hardware Verification