Concurrent Program Logic
Origin. Apt, Francez, de Roever (1980). Extended Hoare logic for concurrency. Parallel composition rule. Non-interference. Foundation for shared-memory verification.
Models. Parallel composition P₁ ‖ P₂. Shared variables. Interference freedom. Auxiliary variables for coordination.
Formalism.
Parallel composition: {P₁} S₁ {Q₁} {P₂} S₂ {Q₂} interference-free ───────────────────────────────────────────────────── {P₁ ∧ P₂} S₁ ‖ S₂ {Q₁ ∧ Q₂}
Interference freedom: For each atomic action a in S₁ and each proof outline for S₂:
- a preserves S₂'s intermediate assertions
- And vice versa
Proof outline: Program annotated with assertions at each point. pre{a}post for each atomic action.
Non-interference check: {Iₛ₂ ∧ pre(a)} a {Iₛ₂} for each assertion Iₛ₂ in proof outline of S₂.
Auxiliary variables: Ghost variables for coordination. Not in actual program. Updated atomically with real variables.
Await statement: await B then S end Atomically: wait for B, execute S. {P ∧ B} S {Q} ───────────────────── {P} await B then S {Q}
Resource invariants: Shared resource with invariant I. Each critical section: {I ∧ P} S {I ∧ Q}
Symbols.
| Symbol | Unicode | Name | Meaning |
|---|---|---|---|
| ‖ | U+2016 | Parallel | Composition |
| await | — | Await | Conditional atomic |
| I | — | Invariant | Resource invariant |
| {P}S{Q} | — | Triple | Hoare triple |
Metatheory. Sound for standard interleaving. Complete relative to sequential. Non-interference decidable for finite-state.
Applies to. Shared-memory concurrency. Operating systems. Concurrent algorithms. Thread verification.
Limitations. Interference checking expensive. Global reasoning needed. Auxiliary variables clutter. Partial correctness only.
© 2026 Lingenic LLC