Abstract

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.

Highlights

  • While algorithms may be described in both standard mathematical notations and standard programming languages, both of these have disadvantages

  • The proof checking algorithm was completely specified in AL, and from that the semantic description in HOL and the executable code in Standard ML (SML) were generated automatically

  • The corresponding HOL source has the same number of lines but when loaded into the HOL system generates all the extra accesser and recogniser functions for datatypes which are implicit in the AL source

Read more

Summary

Introduction

While algorithms may be described in both standard mathematical notations and standard programming languages, both of these have disadvantages. Mathematical notations may be more complex than is necessary for algorithm description and may not be executable or related to programming languages. Programming languages, while providing an executable and probably straightforward description of the algorithm, may not provide an abstract description and may not provide a good basis for proof. The AL notation is an effort to find a pragmatic compromise through the use of a very compact but expressive functional specification language, smaller than both standard specification logics and programming languages

Methods
Results
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call