| Introduction | p. 1 |
| Preliminaries | |
| Overview of Formal Verification | p. 9 |
| Theorem Proving | p. 9 |
| Temporal Logic and Model Checking | p. 12 |
| Program Logics, Axiomatic Semantics, and Verification Conditions | p. 17 |
| Bibliographic Notes | p. 22 |
| Introduction to ACL2 | p. 25 |
| Basic Logic of ACL2 | p. 25 |
| Ground Zero Theory | p. 27 |
| Terms, Formulas, Functions, and Predicates | p. 30 |
| Ordinals and Well-Founded Induction | p. 32 |
| Extension Principles | p. 35 |
| Definitional Principle | p. 36 |
| Encapsulation Principle | p. 40 |
| Defchoose Principle | p. 42 |
| The Theorem Prover | p. 44 |
| Structuring Mechanisms | p. 45 |
| Evaluators | p. 46 |
| The ACL2 Programming Environment | p. 47 |
| Bibliographic Notes | p. 48 |
| Sequential Program Verification | |
| Sequential Programs | p. 53 |
| Modeling Sequential Programs | p. 53 |
| Proof Styles | p. 55 |
| Stepwise Invariants | p. 55 |
| Clock Functions | p. 56 |
| Comparison of Proof Styles | p. 57 |
| Verifying Program Components and Generalized Proof Obligations | p. 59 |
| Discussion | p. 62 |
| Overspecification | p. 62 |
| Forced Homogeneity | p. 63 |
| Summary | p. 64 |
| Bibliographic Notes | p. 64 |
| Operational Semantics and Assertional Reasoning | p. 65 |
| Cutpoints, Assertions, and VCG Guarantees | p. 65 |
| VCG Guarantees and Symbolic Simulation | p. 68 |
| Composing Correctness Statements | p. 70 |
| Applications | p. 72 |
| Fibonacci Implementation on TINY | p. 73 |
| Recursive Factorial Implementation on the JVM | p. 75 |
| CBC-Mode Encryption and Decryption | p. 75 |
| Comparison with Related Approaches | p. 76 |
| Summary | p. 78 |
| Bibliographic Notes | p. 78 |
| Connecting Different Proof Styles | p. 81 |
| Soundness of Proof Styles | p. 82 |
| Completeness | p. 84 |
| Remarks on Mechanization | p. 88 |
| Discussion | p. 88 |
| Summary and Conclusion | p. 90 |
| Bibliographic Notes | p. 91 |
| Verification of Reactive Systems | |
| Reactive Systems | p. 95 |
| Modeling Reactive Systems | p. 96 |
| Stuttering Trace Containment | p. 97 |
| Fairness Constraints | p. 99 |
| Discussion | p. 103 |
| Summary | p. 106 |
| Bibliographic Notes | p. 107 |
| Verifying Concurrent Protocols Using Refinements | p. 109 |
| Reduction via Stepwise Refinement | p. 110 |
| Reduction to Single-Step Theorems | p. 110 |
| Equivalences and Auxiliary Variables | p. 114 |
| Examples | p. 116 |
| An ESI Cache Coherence Protocol | p. 116 |
| An Implementation of the Bakery Algorithm | p. 119 |
| A Concurrent Deque Implementation | p. 124 |
| Summary | p. 129 |
| Bibliographic Notes | p. 129 |
| Pipelined Machines | p. 131 |
| Simulation Correspondence, Pipelines, and Flushing Proofs | p. 131 |
| Reducing Flushing Proofs to Refinements | p. 134 |
| A New Proof Rule | p. 136 |
| Example | p. 137 |
| Advanced Features | p. 141 |
| Stalls | p. 141 |
| Interrupts | p. 141 |
| Out-of-Order Execution | p. 142 |
| Out-of-Order and Multiple Instruction Completion | p. 142 |
| Summary | p. 143 |
| Bibliographic Notes | p. 144 |
| Invariant Proving | |
| Invariant Proving | p. 149 |
| Predicate Abstractions | p. 151 |
| Discussion | p. 153 |
| An Illustrative Example | p. 154 |
| Summary | p. 156 |
| Bibliographic Notes | p. 157 |
| Predicate Abstraction via Rewriting | p. 159 |
| Features and Optimizations | p. 163 |
| User-Guided Abstraction | p. 164 |
| Assume Guarantee Reasoning | p. 164 |
| Reachability Analysis | p. 165 |
| Examples | p. 166 |
| Proving the ESI | p. 166 |
| German Protocol | p. 168 |
| Summary and Comparisons | p. 169 |
| Bibliographic Notes | p. 171 |
| Formal Integration of Decision Procedures | |
| Integrating Deductive and Algorithmic Reasoning | p. 175 |
| A Compositional Model Checking Procedure | p. 179 |
| Formalizing a Compositional Model Checking Procedure | p. 180 |
| Finite State Systems | p. 180 |
| Temporal Logic formulas | p. 181 |
| Compositional Procedure | p. 181 |
| Modeling LTL Semantics | p. 183 |
| Verification | p. 187 |
| A Deficiency of the Integration and Logical Issues | p. 190 |
| A Possible Remedy: Integration with HOL4 | p. 192 |
| Summary and Discussion | p. 193 |
| Bibliographic Notes | p. 194 |
| Connecting External Deduction Tools with ACL2 | p. 195 |
| Verified External Tools | p. 196 |
| Applications of Verified External Tools | p. 200 |
| Basic Unverified External Tools | p. 203 |
| Applications of Unverified External Tools | p. 204 |
| Unverified External Tools for Implicit Theories | p. 205 |
| Remarks on Implementation | p. 209 |
| Basic Design Decisions | p. 209 |
| Miscellaneous Engineering Considerations | p. 211 |
| Summary | p. 214 |
| Bibliographic Notes | p. 215 |
| Conclusion | |
| Summary and Conclusion | p. 219 |
| References | p. 223 |
| Index | p. 237 |
| Table of Contents provided by Ingram. All Rights Reserved. |