Tool Support for the Interactive Derivation of Formally Correct Functional Programs
Walter Guttmann (University of Ulm, Germany)
Helmuth Partsch (University of Ulm, Germany)
Wolfram Schulte (Microsoft Research, USA)
Ton Vullinghs (University of Ulm, Germany)
Abstract: This paper describes the program transformation system Ultra. The intended use of Ultra is to assist programmers in the formal derivation of correct and efficient programs from high-level descriptive or operational specifications. We illustrate its utility by deriving a version of the Heapsort algorithm from a non-deterministic specification.
Ultra supports equational reasoning about functional programs using defining equations, algebraic laws of underlying data structures, and transformation rules. The system does not only support modifying terms, but is also useful for bookkeeping and development navigating tasks.
The most salient features of Ultra are its sound theoretical foundation, its extendability, its flexible and convenient way to express transformation tasks, its comfortable user interface, and its lean and portable implementation. Ultra itself is written in the functional language Gofer.
Keywords: Ultra, constructive program development, equational reasoning, functional programming, heapsort, non-deterministic specification, program transformation, unfold-fold
Categories: D.1.1, D.2.2, F.3.1, I.2.2