You are on page 1of 4

Fred B.

Schneider

ON CONCURRENT PROGRAMMING

Springer

3 Understanding Concurrent Programs 1.1 Concurrent Programs 1.2 Syntax and Meaning of Formulas 3.3 Axioms and Inference Rules 3.5 About Modal Logics Historical Notes for Chapter 3 Exercises for Chapter 3 vii xvii 1 1 2 2 5 5 6 9 9 13 23 42 48 49 55 55 57 60 74 79 82 83 •.Contents Preface List of Figures 1 Introduction 1.4 A Preview Historical Notes for Chapter 1 Exercises for Chapter 1 2 Formal Logic 2.1 Informal Preview 3.4 Temporal Logic Applications 3.2 Propositional Logic 2.2 Communication and Synchronization 1.4 Safety and Liveness Revisited Historical Notes for Chapter 2 Exercises for Chapter 2 3 Temporal Logic 3.1 Formal Logical Systems 2.3 A Predicate Logic 2. .

6 Specifying Synchronization 5.2 Reasoning About Program States 4.3 Interference Freedom 5.6 Liveness for Mutual Exclusion 91 91 95 99 109 113 122 123 135 135 136 137 148 152 155 158 166 168 175 175 176 180 182 184 197 198 205 205 206 211 213 218 228 228 230 239 239 247 249 257 260 269 .xiv Contents Notation and Logic for Sequential Programming 4.4 Assignment to Composite Variables 4.2 Control Predicate Axioms 5.1 5-Temporal Logic Revisited" 8.2 Unless Properties and Derivatives 8.4 Direct Use of Proof Outlines 6.1 Invariance Properties 6.4 Developing Programs for Historical Safety Properties 7.1 Specifying Concurrency 5.1 Notation for Sequential Programs 4.5 Helpful Actions and Eventualities 8.1 Historical Safety Properties 7.5 Synchronously Altered and Shared Assertions 5.5 Developing Programs for Invariance Properties Historical Notes for Chapter 6 Exercises for Chapter 6 Safety Properties with Past Terms 7.3 Exclusion of Configurations 6.3 Verifying Historical Safety Properties 7.6 Some Cautions .5 Auxiliary Variables 7.4 Reasoning from Fairness Assumptions 8. Historical Notes for Chapter 7 Exercises'for Chapter 7 Verifying Arbitrary Temporal Logic Properties 8.2 Verifying Invariance Properties 6.3 Proof Outline Logic 4.5 A Predicate Transformer Historical Notes for Chapter 4 Exercises for Chapter 4 Concurrency and Interference 5.4 Hiding Control Predicates in Derived Terms 5.3 Fairness Assumptions 8.7 Synchronization and Interference Historical Notes for Chapter 5 Exercises for Chapter 5 Safety Properties: Invariance 6.2 Past Extensions to Predicate Logic 7.

1 On Languages 12.2 Translation-Independent Reasoning 9.3 Proofs Only Increase Confidence 12.5 Conditional Critical Regions Historical Notes for Chapter 10 Exercises for Chapter 10 11 Message Passing and Distributed Programming 11.4 A Tool and Applications Historical Notes for Chapter 12 References Index 275 277 283 283 292 297 300 308 315 319 326 327 337 337 342 346 349 360 367 370 377 377 382 400 405 413 416 427 427 429 431 433 434 435 451 .6 Interlock Instructions 9.1 Semaphores 10.4 Shared-Variable Representations Historical Notes for Chapter 11 Exercises for Chapter 11 12 Putting It Together 12.5 Synchronization and Interference Revisited 9. and Conditional Critical Regions 10.2 Change of Variable to use Semaphores 10.7 Example: Barrier Synchronization Historical Notes for Chapter 9 Exercises for Chapter 9 10 Semaphores.4 Split Binary Semaphore Method 10.3 Implementing Condition Synchronization 9.Contents Historical Notes for Chapter 8 Exercises for Chapter 8 9 Programming with Fine-Grained Atomic Actions 9.2 Synchronous Message-Passing 11.2 Principles for Verifying Safety and Liveness Properties 12.1 Pretending Atomicity 9.4 Programming with the Subset 9.3 Derivation of Distributed Programs 11.3 Binary Semaphores and Locks 10.1 Asynchronous Message-Passing 11. Locks.