| Introduction | p. 1 |
| Motivation | p. 2 |
| Specification and Verification Technique | p. 4 |
| The Problem | p. 5 |
| Modular Correctness | p. 7 |
| The Frame Problem | p. 8 |
| Modular Verification of Type Invariants | p. 10 |
| The Extended State Problem | p. 11 |
| Alias Control | p. 13 |
| Modularity Aspects of Programs, Specifications, and Proofs | p. 16 |
| Modularity of Programs | p. 17 |
| Modularity of Universal Specifications | p. 21 |
| Modularity of Interface Specifications | p. 22 |
| Modularity of Correctness Proofs | p. 26 |
| Approach, Outline, and Contributions | p. 28 |
| Approach | p. 28 |
| Outline | p. 31 |
| Contributions | p. 32 |
| Related Work | p. 33 |
| Specification Techniques | p. 33 |
| Verification and Analysis Techniques | p. 36 |
| Mojave and the Universe Type System | p. 39 |
| Mojave: The Language | p. 39 |
| The Language Core | p. 39 |
| Modularity | p. 45 |
| Universes: A Type System for Flexible Alias Control | p. 51 |
| The Ownership Model | p. 52 |
| The Universe Programming Model | p. 54 |
| Programming with Universes | p. 58 |
| Examples | p. 60 |
| Formalization of the Universe Type System | p. 66 |
| Discussion | p. 70 |
| Related Work | p. 74 |
| The Semantics of Mojave | p. 77 |
| Programming Logic | p. 77 |
| Formal Data and State Model | p. 77 |
| Axiomatic Semantics | p. 92 |
| Programming Logic | p. 97 |
| Language Properties | p. 97 |
| Type Safety | p. 99 |
| Liveness Properties | p. 108 |
| Properties of Readonly Methods | p. 109 |
| Correctness | p. 110 |
| Correctness of Closed Programs | p. 110 |
| Correctness of Open Programs: Modular Correctness | p. 110 |
| Modular Soundness | p. 112 |
| Composition of Modular Correct Open Programs | p. 112 |
| Related Work | p. 120 |
| Modular Specification and Verification of Functional Behavior | p. 123 |
| Foundations of Interface Specifications | p. 123 |
| Specification of Functional Behavior | p. 125 |
| Abstract Fields | p. 125 |
| Pre-post-specifications | p. 131 |
| Verification of Functional Behavior | p. 135 |
| Verification of Method Bodies | p. 135 |
| Proofs for Virtual Methods | p. 136 |
| Example | p. 137 |
| Related Work | p. 139 |
| Specification of Functional Behavior | p. 139 |
| Verification of Functional Behavior | p. 141 |
| Modular Specification and Verification of Frame Properties | p. 143 |
| Approach | p. 144 |
| Meaning of Modifies-Clauses | p. 145 |
| Explicit Dependencies | p. 147 |
| Modularity Rules | p. 148 |
| Formalization of Explicit Dependencies | p. 155 |
| Declaration of Dependencies | p. 156 |
| Axiomatization of the Depends-Relation | p. 156 |
| Consistency with Representation | p. 157 |
| Formalization of the Modularity Rules | p. 159 |
| Axiomatization of the Notdepends-Relation | p. 160 |
| Example | p. 167 |
| Discussion | p. 169 |
| Formalization of Modifies-Clauses | p. 176 |
| Verification of Frame Properties | p. 178 |
| Verification of Method Bodies | p. 178 |
| Local Update Property | p. 180 |
| Accessibility Properties | p. 181 |
| Modularity Theorem for Frame Properties | p. 183 |
| Example | p. 184 |
| Related Work | p. 188 |
| Leino's and Nelson's Work on Dependencies | p. 188 |
| Other Work on the Frame Problem | p. 193 |
| Modular Specification and Verification of Type Invariants | p. 195 |
| Motivation and Approach | p. 195 |
| Invariant Semantics for Nonmodular Programs | p. 195 |
| Problems for Modular Verification of Invariants | p. 197 |
| Approach | p. 198 |
| Specification of Type Invariants | p. 201 |
| Declaration of Type Invariants | p. 201 |
| Example | p. 203 |
| Formal Meaning of Invariants | p. 204 |
| Verification of Type Invariants | p. 204 |
| Verification Methodology | p. 205 |
| Example | p. 206 |
| Discussion | p. 207 |
| Module Invariants | p. 207 |
| History Constraints | p. 208 |
| Related Work | p. 209 |
| Conclusion | p. 213 |
| Summary and Contributions | p. 213 |
| The Lopex Project | p. 217 |
| Tool Support | p. 217 |
| Directions for Future Work | p. 219 |
| Formal Background and Notations | p. 223 |
| Formal Background | p. 223 |
| Notations | p. 225 |
| Predefined Type Declarations | p. 227 |
| Examples | p. 229 |
| Doubly Linked List | p. 229 |
| Property Editor | p. 235 |
| Auxiliary Lemmas, Proofs, and Models | p. 237 |
| Auxiliary Lemmas and Proofs from Chapter 3 | p. 237 |
| Auxiliary Lemmas and Proofs from Chapter 5 | p. 243 |
| Auxiliary Lemmas and Proofs from Chapter 6 | p. 261 |
| A Model for the Axiomatization of the Depends-Relation | p. 266 |
| Bibliography | p. 271 |
| List of Figures | p. 285 |
| Index | p. 287 |
| Table of Contents provided by Publisher. All Rights Reserved. |