Efficient interpretation of synchronizable series expressions
SIGPLAN '87 Papers of the Symposium on Interpreters and interpretive techniques
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Grids: A new program structuring mechanism based on layered graphs
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Module: An encapsulation mechanism for specifying and implementing abstract data types
ACM '80 Proceedings of the ACM 1980 annual conference
On the application of data abstraction facilities
ACM '78 Proceedings of the 1978 annual conference - Volume 2
On orthogonality in programming languages
ACM SIGPLAN Notices
Abstracts in software engineering: part 3
ACM SIGSOFT Software Engineering Notes
History of programming languages---II
Informality in program specifications
IJCAI'77 Proceedings of the 5th international joint conference on Artificial intelligence - Volume 1
Hi-index | 0.00 |
The programming language Alphard is designed to provide support for both the methodologies of “well-structured” programming and the techniques of formal program verification. Language constructs allow a programmer to isolate an abstraction, specifying its behavior publicly while localizing knowledge about its implementation. The verification of such an abstraction consists of showing that its implementation behaves in accordance with its public specifications; the abstraction can then be used with confidence in constructing other programs, and the verification of that use employs only the public specifications. This paper introduces Alphard by developing and verifying a data structure definition and a program that uses it. It shows how each language construct contributes to the development of the abstraction and discusses the way the language design and the verification methodology were tailored to each other. It serves not only as an introduction to Alphard, but also as an example of the symbiosis between verification and methodology in language design. The strategy of program structuring, illustrated for Alphard, is also applicable to most of the “data abstraction” mechanisms now appearing.