About: Alphard is a research topic. Over the lifetime, 28 publications have been published within this topic receiving 1256 citations. The topic is also known as: Alpha Hydrae.
TL;DR: Alphard as discussed by the authors is a programming language designed to provide support for both the methodologies of well-structured programming and the techniques of formal program verification, allowing a programmer to isolate an abstraction, specifying its behavior publicly while localizing knowledge about its implementation.
Abstract: 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.
TL;DR: This paper introduces a means of specializing Alphard's loops to operate on abstract entities without explicit dependence on the representation of those entities, and develops specification and verification techniques that allow the properties of the generators for such iterations to be expressed in the form of proof rules.
Abstract: The Alphard form provides the programmer with a great deal of control over the implementation of abstract data types. In this paper we extend the abstraction techniques from simple data representation and function definition to the iteration statement, the most important point of interaction between data and the control structure of the language itself. We introduce a means of specializing Alphard's loops to operate on abstract entities without explicit dependence on the representation of those entities. We develop specification and verification techniques that allow the properties of the generators for such iterations to be expressed in the form of proof rules. We obtain results for common special cases of these loops that are essentially identical to the corresponding constructs in other languages. We also provide a means of showing that a generator will terminate.
TL;DR: This paper attempts to capture the symbiotic influence of these two goals on the design of Alphard by interleaving the language description with the presentation of a proof technique and discussion of programming methodology.
Abstract: Alphard is a programming language whose goals include supporting both the development of well-structured programs and the formal verification of these programs. This paper attempts to capture the symbiotic influence of these two goals on the design of the language. To that end the language description is interleaved with the presentation of a proof technique and discussion of programming methodology. Examples to illustrate both the language and the verification technique are included.
TL;DR: Abstraction and Verification in Alphard: An Alphard Specification of a Correct and Efficient Transformation on Data Structures.
Abstract: Publication History.- - History and Overview.- Prelude - The Alphard form and Verification Issues.- I - Abstraction and Verification in Alphard: Introduction to Language and Methodology.- II - Remarks on the Impact of Program Verification on Language Design.- First Interlude - Inadequacy of Simple Encapsulation.- III - Abstraction and Verification in Alphard: Iteration and Generators.- IV - Achieving Quality Software: Reflections on the Aims and Objectives of Alphard.- Second Interlude - Larger Examples.- V - Abstraction and Verification in Alphard: Design and Verification of a Tree Handler.- VI - Abstraction and Verification in Alphard: A Symbol Table Example.- Third Interlude - Language Evolution.- VII - An Informal Definition of Alphard.- Fourth Interlude - Generality and Generic Definitions.- VIII - An Alphard Specification of a Correct and Efficient Transformation on Data Structures.- Fifth Interlude - Validating and Extending the Concepts.- IX - Validating the Utility of Abstraction Techniques.- X - Toward Relaxing Assumptions in Languages and Their Implementations.- Postlude - Reflections and Open Problems.
TL;DR: The concept of a 'form' to subsume the notions of type (mode), macro, procedure, generator, and coercion are introduced to support the contention that formal verification is substantially simplified when the abstractions are retained in the program text.
Abstract: : This report discusses the programming language tools needed to support the expression of 'well-structured' programs. In particular it deals with the tools needed to express abstractions and their realizations; to this end it introduces the concept of a 'form' to subsume the notions of type (mode), macro, procedure, generator, and coercion. An extendedexample is given together with the sketch of a proof of the example. The proof is included to support the contention that formal verification is substantially simplified when the abstractions and their realization are retained in the program text.