Endorsements | p. v |
Foreword | p. vii |
Preface | p. ix |
Outlines of One-semester Courses | p. xiv |
In the Beginning | |
Introduction | p. 3 |
An Example of a Concurrent Program | p. 4 |
Solution 1 | p. 4 |
Solution 2 | p. 5 |
Solution 3 | p. 6 |
Solution 4 | p. 8 |
Solution 5 | p. 9 |
Solution 6 | p. 10 |
Program Correctness | p. 11 |
Structure of this Book | p. 13 |
Automating Program Verification | p. 16 |
Assertional Methods in Practice | p. 17 |
Preliminaries | p. 19 |
Mathematical Notation | p. 21 |
Sets | p. 21 |
Tuples | p. 22 |
Relations | p. 23 |
Functions | p. 23 |
Sequences | p. 24 |
Strings | p. 25 |
Proofs | p. 26 |
Induction | p. 27 |
Grammars | p. 29 |
Typed Expressions | p. 29 |
Types | p. 29 |
Variables | p. 30 |
Constants | p. 30 |
Expressions | p. 31 |
Subscripted Variables | p. 32 |
Semantics of Expressions | p. 32 |
Fixed Structure | p. 33 |
States | p. 34 |
Definition of the Semantics | p. 35 |
Updates of States | p. 36 |
Formal Proof Systems | p. 38 |
Assertions | p. 39 |
Semantics of Assertions | p. 41 |
Substitution | p. 42 |
Substitution Lemma | p. 47 |
Exercises | p. 50 |
Bibliographic Remarks | p. 51 |
Deterministic Programs | |
while Programs | p. 55 |
Syntax | p. 57 |
Semantics | p. 58 |
Properties of Semantics | p. 62 |
Verification | p. 63 |
Partial Correctness | p. 65 |
Total Correctness | p. 70 |
Decomposition | p. 73 |
Soundness | p. 73 |
Proof Outlines | p. 79 |
Partial Correctness | p. 79 |
Total Correctness | p. 83 |
Completeness | p. 85 |
Parallel Assignment | p. 91 |
Failure Statement | p. 94 |
Auxiliary Axioms and Rules | p. 97 |
Case Study: Partitioning an Array | p. 99 |
Systematic Development of Correct Programs | p. 113 |
Summation Problem | p. 115 |
Case Study: Minimum-Sum Section Problem | p. 116 |
Exercises | p. 121 |
Bibliographic Remarks | p. 124 |
Recursive Programs | p. 127 |
Syntax | p. 129 |
Semantics | p. 129 |
Properties of the Semantics | p. 131 |
Verification | p. 132 |
Partial Correctness | p. 132 |
Total Correctness | p. 134 |
Decomposition | p. 137 |
Discussion | p. 138 |
Soundness | p. 139 |
Case Study: Binary Search | p. 144 |
Partial Correctness | p. 145 |
Total Correctness | p. 147 |
Exercises | p. 149 |
Bibliographic Remarks | p. 150 |
Recursive Programs with Parameters | p. 151 |
Syntax | p. 152 |
Semantics | p. 154 |
Verification | p. 157 |
Partial Correctness: Non-recursive Procedures | p. 158 |
Partial Correctness: Recursive Procedures | p. 162 |
Modularity | p. 165 |
Total Correctness | p. 165 |
Soundness | p. 167 |
Case Study: Quicksort | p. 172 |
Formal Problem Specification | p. 173 |
Properties of Partition | p. 173 |
Auxiliary Proof: Permutation Property | p. 174 |
Auxiliary Proof: Sorting Property | p. 175 |
Total Correctness | p. 180 |
Exercises | p. 182 |
Bibliographic Remarks | p. 182 |
Object-Oriented Programs | p. 185 |
Syntax | p. 187 |
Local Expressions | p. 187 |
Statements and Programs | p. 188 |
Semantics | p. 192 |
Semantics of Local Expressions | p. 192 |
Updates of States | p. 194 |
Semantics of Statements and Programs | p. 195 |
Assertions | p. 197 |
Substitution | p. 199 |
Verification | p. 200 |
Partial Correctness | p. 201 |
Total Correctness | p. 204 |
Adding Parameters | p. 206 |
Semantics | p. 207 |
Partial Correctness | p. 208 |
Total Correctness | p. 210 |
Transformation of Object-Oriented Programs | p. 211 |
Soundness | p. 214 |
Object Creation | p. 217 |
Semantics | p. 218 |
Assertions | p. 219 |
Verification | p. 223 |
Soundness | p. 225 |
Case Study: Zero Search in Linked List | p. 226 |
Partial Correctness | p. 226 |
Total Correctness | p. 229 |
Case Study: Insertion into a Linked List | p. 232 |
Exercises | p. 238 |
Bibliographic Remarks | p. 240 |
Parallel Programs | |
Disjoint Parallel Programs | p. 245 |
Syntax | p. 247 |
Semantics | p. 248 |
Determinism | p. 249 |
Sequentialization | p. 252 |
Verification | p. 253 |
Parallel Composition | p. 254 |
Auxiliary Variables | p. 256 |
Soundness | p. 259 |
Case Study: Find Positive Element | p. 261 |
Exercises | p. 264 |
Bibliographic Remarks | p. 266 |
Parallel Programs with Shared Variables | p. 267 |
Access to Shared Variables | p. 269 |
Syntax | p. 270 |
Semantics | p. 271 |
Atomicity | p. 272 |
Verification: Partial Correctness | p. 274 |
Component Programs | p. 274 |
No Compositionality of Input/Output Behavior | p. 275 |
Parallel Composition: Interference Freedom | p. 276 |
Auxiliary Variables Needed | p. 279 |
Soundness | p. 282 |
Verification: Total Correctness | p. 284 |
Component Programs | p. 284 |
Parallel Composition: Interference Freedom | p. 286 |
Soundness | p. 288 |
Discussion | p. 289 |
Case Study: Find Positive Element More Quickly | p. 291 |
Allowing More Points of Interference | p. 294 |
Case Study: Parallel Zero Search | p. 299 |
Simplifying the program | p. 299 |
Proving partial correctness | p. 300 |
Exercises | p. 303 |
Bibliographic Remarks | p. 305 |
Parallel Programs with Synchronization | p. 307 |
Syntax | p. 309 |
Semantics | p. 310 |
Verification | p. 311 |
Partial Correctness | p. 311 |
Weak Total Correctness | p. 313 |
Total Correctness | p. 314 |
Soundness | p. 316 |
Case Study: Producer/Consumer Problem | p. 319 |
Case Study: The Mutual Exclusion Problem | p. 324 |
Problem Formulation | p. 324 |
Verification | p. 326 |
A Busy Wait Solution | p. 327 |
A Solution Using Semaphores | p. 331 |
Allowing More Points of Interference | p. 334 |
Case Study: Synchronized Zero Search | p. 335 |
Simplifying the Program | p. 336 |
Decomposing Total Correctness | p. 337 |
Proving Termination | p. 337 |
Proving Partial Correctness | p. 342 |
Exercises | p. 344 |
Bibliographic Remarks | p. 345 |
Nondeterministic and Distributed Programs | |
Nondeterministic Programs | p. 349 |
Syntax | p. 351 |
Semantics | p. 352 |
Properties of Semantics | p. 353 |
Why Are Nondeterministic Programs Useful? | p. 354 |
Symmetry | p. 355 |
Nondeterminism | p. 355 |
Failures | p. 356 |
Modeling Concurrency | p. 356 |
Verification | p. 357 |
Partial Correctness | p. 357 |
Total Correctness | p. 357 |
Soundness | p. 359 |
Case Study: The Welfare Crook Problem | p. 360 |
Transformation of Parallel Programs | p. 363 |
Exercises | p. 368 |
Bibliographic Remarks | p. 370 |
Distributed Programs | p. 373 |
Syntax | p. 375 |
Sequential Processes | p. 375 |
Distributed Programs | p. 376 |
Semantics | p. 380 |
Transformation into Nondeterministic Programs | p. 382 |
Semantic Relationship Between S and T(S) | p. 382 |
Proof of the Sequentialization Theorem | p. 385 |
Verification | p. 390 |
Partial Correctness | p. 390 |
Weak Total Correctness | p. 391 |
Total Correctness | p. 391 |
Proof Systems | p. 392 |
Soundness | p. 393 |
Case Study: A Transmission Problem | p. 396 |
Decomposing Total Correctness | p. 397 |
Proving Partial Correctness | p. 397 |
Proving Absence of Failures and of Divergence | p. 399 |
Proving Deadlock Freedom | p. 400 |
Exercises | p. 402 |
Bibliographic Remarks | p. 405 |
Fairness | p. 407 |
The Concept of Fairness | p. 409 |
Selections and Runs | p. 410 |
Fair Nondeterminism Semantics | p. 412 |
Transformational Semantics | p. 413 |
Well-Founded Structures | p. 413 |
Random Assignment | p. 414 |
Semantics | p. 415 |
Verification | p. 415 |
Schedulers | p. 419 |
The Scheduler FAIR | p. 421 |
The Scheduler RORO | p. 424 |
The Scheduler QUEUE | p. 426 |
Transformation | p. 427 |
Verification | p. 430 |
Total Correctness | p. 430 |
Soundness | p. 438 |
Case Study: Zero Search | p. 442 |
Case Study: Asynchronous Fixed Point Computation | p. 446 |
Exercises | p. 452 |
Bibliographic Remarks | p. 455 |
Semantics | p. 457 |
Axioms and Proof Rules | p. 459 |
Proof Systems | p. 471 |
Proof Outlines | p. 475 |
References | p. 477 |
Index | p. 491 |
Author Index | p. 497 |
Symbol Index | p. 501 |
Table of Contents provided by Ingram. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.