The logic of programming
The logical basis for computer programming. Volume 1: deductive reasoning
The logical basis for computer programming. Volume 1: deductive reasoning
Systematic software development using VDM
Systematic software development using VDM
Programming from specifications
Programming from specifications
Commentary on standard ML
Automating recursive type definitions in higher order logic
Current trends in hardware verification and automated theorem proving
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
An axiomatic basis for computer programming
Communications of the ACM
The Science of Programming
The Denotational Description of Programming Languages: An Introduction
The Denotational Description of Programming Languages: An Introduction
A Discipline of Programming
The Definition of Standard ML
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
Reasoning with the Formal Definition of Standard ML in HOL
HUG '93 Proceedings of the 6th International Workshop on Higher Order Logic Theorem Proving and its Applications
HUG '93 Proceedings of the 6th International Workshop on Higher Order Logic Theorem Proving and its Applications
Representing Higher-Order Logic Proofs in HOL
Proceedings of the 7th International Workshop on Higher Order Logic Theorem Proving and Its Applications
Formal Verification of Algorithm W: The Monomorphic Case
TPHOLs '96 Proceedings of the 9th International Conference on Theorem Proving in Higher Order Logics
The machine-assisted proof of programming language properties
The machine-assisted proof of programming language properties
Hi-index | 0.00 |
A pragmatic approach to algorithm specification and verification is presented. The language AL provides a level of abstraction between a mathematical specification notation and a programming language, supporting compact but expressive algorithm description. Proofs of correctness about algorithms written in AL can be done via an embedding of the semantics of the language in a proof system; implementations of algorithms can be done through translation to standard programming languages. The proofs of correctness are more tractable than direct verification of programming language code; descriptions in AL are more easily related to executable programs than standard mathematical specifications. AL provides an independent, portable description which can be related to different proof systems and different programming languages. Several interfaces have been explored and tools for fully automatic translation of AL specifications into the HOL logic and Standard ML executable code have been implemented. A substantial case study uses AL as the common specification language from which both the formal proofs of correctness and executable code have been produced.