Programming language constructs for which it is impossible to obtain good Hoare axiom systems

The work

AuthorsEdmund M. Clarke Jr.
Editors
Typearticle
Year1979
Citekeyclarke1979programming

Where it appeared

Published inJournal of the ACM
Volume26
Issue1
Pages129--147

Identifiers

DOI10.1145/322108.322121

Abstract

Hoare axiom systems for establishing partial correctness of programs may fail to be complete because of (a) incompleteness of the assertion language relative to the underlying interpretation or (b) inability of the assertion language to express the invariants of loops. Cook has shown that if there is a complete proof system for the assertion language (i.e. all true formulas of the assertion language) and if the assertion language satisfies a natural expressibility condition then a sound and complete axiom system for a large subset of Algol may be devised. We exhibit programming language constructs for which it is impossible to obtain sound and complete sets of Hoare axioms even in this special sense of Cook's. These constructs include (i) recursive procedures with procedure parameters in a programming language which uses static scope of identifiers and (ii) coroutines in a language which allows parameterless recursive procedures. Modifications of these constructs for which sound and complete systems of axioms may be obtained are also discussed.

A copy is held

pdf, 1.0 MB. Not published — it may be under copyright. The facts and links here are.

How it got here

How it got hereagent via bibtex
Added2026-08-05 00:00 UTC
Approved bya person 2026-08-12 13:50 UTC

Cite it as

@article{clarke1979programming,
  title        = {Programming language constructs for which it is impossible to obtain good Hoare axiom systems},
  author       = {Edmund M. Clarke Jr.},
  year         = {1979},
  journal      = {Journal of the ACM},
  volume       = {26},
  number       = {1},
  pages        = {129--147},
  doi          = {10.1145/322108.322121},
}

This record lives at https://refs.drheap.org/clarke1979programming/ and will keep doing so.