Answers are grounded in this paper and cite their sources.
Because large-scale software development is a struggle against internal program complexity, the modules into which programs are divided play a central role in software engineering. A module encapsulating a data type allows the programmer to ignore both the details of its operations, and of its value representations. It is a primary strength of program proving that as modules divide a program, making it easier to understand, so do they divide its proof. Each module can be verified in isolation, then its internal details ignored in a proof of its use. This paper describes proofs of module abstractions based on functional semantics, and contrasts this with the Alphard formalism based on Hoare logic.
No takes yet. Share an insight, caveat, or question.
Gannon et al. (1987) studied this question.
Synapse has enriched 5 related papers. Consider them for comparative context: