Common LISP: the language
A computational logic handbook
A computational logic handbook
Using mathematical logic and formal methods to write correct microcode
ACM SIGMICRO Newsletter
Computer architecture: a quantitative approach
Computer architecture: a quantitative approach
Microprocessor design verification
Journal of Automated Reasoning
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
What every computer scientist should know about floating-point arithmetic
ACM Computing Surveys (CSUR)
Symbolic Boolean manipulation with ordered binary-decision diagrams
ACM Computing Surveys (CSUR)
Fast Division Using Accurate Quotient Approximations to Reduce the Number of Iterations
IEEE Transactions on Computers - Special issue on computer arithmetic
Automated proofs of object code for a widely used microprocessor
Journal of the ACM (JACM)
Design Issues in Division and Other Floating-Point Operations
IEEE Transactions on Computers
An Industrial Strength Theorem Prover for a Logic Based on Common Lisp
IEEE Transactions on Software Engineering
On the calculation of the effects of roundoff errors
ACM Transactions on Mathematical Software (TOMS)
Division and Square Root: Digit-Recurrence Algorithms and Implementations
Division and Square Root: Digit-Recurrence Algorithms and Implementations
Developing the AMD-K5 Architecture
IEEE Micro
Fast Hardware-Based Algorithms for Elementary Function Computations Using Rectangular Multipliers
IEEE Transactions on Computers
Measuring the Accuracy of ROM Reciprocal Tables
IEEE Transactions on Computers
Verification of IEEE Compliant Subtractive Division Algorithms
FMCAD '96 Proceedings of the First International Conference on Formal Methods in Computer-Aided Design
ACL2 Theorems About Commercial Microprocessors
FMCAD '96 Proceedings of the First International Conference on Formal Methods in Computer-Aided Design
Coq and Hardware Verification: A Case Study
TPHOLs '96 Proceedings of the 9th International Conference on Theorem Proving in Higher Order Logics
The K5 transcendental functions
ARITH '95 Proceedings of the 12th Symposium on Computer Arithmetic
WIFT '95 Proceedings of the 1st Workshop on Industrial-Strength Formal Specification Techniques
Defining the IEEE-854 Floating-Point Standard in PVS
Defining the IEEE-854 Floating-Point Standard in PVS
Rounding Errors in Algebraic Processes
Rounding Errors in Algebraic Processes
A Mechanically Checked Proof of a Multiprocessor Result via a Uniprocessor View
Formal Methods in System Design
Formal verification of iterative algorithms in microprocessors
Proceedings of the 37th Annual Design Automation Conference
Floating Point Verification in HOL Light: The Exponential Function
Formal Methods in System Design
Towards a mechanically checked theory of computation: the ACL2 project
Logic-based artificial intelligence
Structured Theory Development for a Mechanized Logic
Journal of Automated Reasoning
Journal of Automated Reasoning
Modular Verification of SRT Division
Formal Methods in System Design
Additive symmetries: the non-negative case
Theoretical Computer Science - Real numbers and computers
FMCAD '00 Proceedings of the Third International Conference on Formal Methods in Computer-Aided Design
Divider Circuit Verification with Model Checking and Theorem Proving
TPHOLs '00 Proceedings of the 13th International Conference on Theorem Proving in Higher Order Logics
Formal Verification of the VAMP Floating Point Unit
CHARME '01 Proceedings of the 11th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
Formalization of Cadence SPW Fixed-Point Arithmetic in HOL
IFM '02 Proceedings of the Third International Conference on Integrated Formal Methods
Formal Verification of IA-64 Division Algorithms
TPHOLs '00 Proceedings of the 13th International Conference on Theorem Proving in Higher Order Logics
Journal of Automated Reasoning
Automatic Formal Verification of Fused-Multiply-Add FPUs
Proceedings of the conference on Design, Automation and Test in Europe - Volume 2
Formal Verification of the VAMP Floating Point Unit
Formal Methods in System Design
Challenges in the Formal Verification of Complete State-of-the-Art Processors
ICCD '05 Proceedings of the 2005 International Conference on Computer Design
Proceedings of the 13th ACM conference on Computer and communications security
Formalization of fixed-point arithmetic in HOL
Formal Methods in System Design
A Generic Model for Formally Verifying NoC Communication Architectures: A Case Study
NOCS '07 Proceedings of the First International Symposium on Networks-on-Chip
Verified Software: Theories, Tools, Experiments
Programming with Proofs: Language-Based Approaches to Totally Correct Software
Verified Software: Theories, Tools, Experiments
Theorem Proving for Verification (Invited Tutorial)
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Real Number Calculations and Theorem Proving
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Proving Fairness and Implementation Correctness of a Microkernel Scheduler
Journal of Automated Reasoning
Special issue on practical aspects of automated reasoning
AI Communications - Practical Aspects of Automated Reasoning
A short survey of automated reasoning
AB'07 Proceedings of the 2nd international conference on Algebraic biology
Post-silicon validation opportunities, challenges and recent advances
Proceedings of the 47th Design Automation Conference
The SSP: an example of high-assurance systems engineering
HASE'04 Proceedings of the Eighth IEEE international conference on High assurance systems engineering
Verification of stack manipulation in the SCIP processor
SSV'10 Proceedings of the 5th international conference on Systems software verification
Efficient and accurate computation of upper bounds of approximation errors
Theoretical Computer Science
Automatic verification of estimate functions with polynomials of bounded functions
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
Trustworthy numerical computation in Scala
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
FM'05 Proceedings of the 2005 international conference on Formal Methods
Refinement and theorem proving
SFM'06 Proceedings of the 6th international conference on Formal Methods for the Design of Computer, Communication, and Software Systems
Floating-Point verification using theorem proving
SFM'06 Proceedings of the 6th international conference on Formal Methods for the Design of Computer, Communication, and Software Systems
Multi-Prover verification of floating-point programs
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Turtles all the way down: a clean-slate, ground-up, first-principles approach to secure systems
Proceedings of the 2012 workshop on New security paradigms
Hi-index | 14.98 |
In this article, we report the successful application of a mechanical theorem prover to the problem of verifying the division microcode program used on the AMD5K86 microprocessor. The division algorithm is an iterative shift and subtract type. It was implemented using floating-point microcode instructions. As a consequence, the floating quotient digits have data dependent precision. This breaks the constraints of conventional SRT division theory. Hence, an important question was whether the algorithm still provided perfectly rounded results at 24, 53, or 64 bits. The mechanically checked proof of this assertion is the central topic of this paper. The proof was constructed in three steps. First, the divide microcode was translated into a formal intermediate language. Then, a manually created proof was transliterated into a series of formal assertions in the ACL2 dialect. After many expansions and modifications to the original proof, the theorem prover certified the assertion that the quotient will always be correctly rounded to the target precision.