## Steps Towards Mechanizing Program Transformations Using PVS (1996)

Venue: | Science of Computer Programming |

Citations: | 10 - 1 self |

### BibTeX

@INPROCEEDINGS{Shankar96stepstowards,

author = {Natarajan Shankar},

title = {Steps Towards Mechanizing Program Transformations Using PVS},

booktitle = {Science of Computer Programming},

year = {1996},

pages = {26--1}

}

### OpenURL

### Abstract

PVS is a highly automated framework for specification and verification. We show how the language and deduction features of PVS can be used to formalize, mechanize, and apply some useful program transformation techniques. We examine two such examples in detail. The first is a fusion theorem due to Bird where the composition of a catamorphism (a recursive operation on the structure of a datatype) and an anamorphism (an operation that constructs instances of the datatype) is fused to eliminate the intermediate data structure. The second example is Wand's continuation-based transformation technique for deriving tail-recursive functions from non-tail-recursive ones. These examples illustrate the utility of the language and inference features of PVS in capturing these transformations in a simple, general, and useful form. 1 Introduction Correctness-preserving program transformations [15] often capture deep algorithmic insight and therefore pose interesting challenges for mechanization. The...

### Citations

548 |
A Computational Logic
- Boyer, Moore
- 1979
(Show Context)
Citation Context ...y, the abstract datatype of stacks is generated by the constructors empty and 2 The abstract datatype mechanism of PVS is partly inspired by the shell principle used in the Boyer-Moore theorem prover =-=[3]-=-. Similar mechanisms exist in a number of other specification and programming languages [5, 10, 13]. 4 push. An unordered list or a bag is an example of a data structure that is not freely generated s... |

109 |
et al. Implementing Mathematics with the Nuprl Proof Development System
- Constable
- 1986
(Show Context)
Citation Context ...t datatype mechanism of PVS is partly inspired by the shell principle used in the Boyer-Moore theorem prover [3]. Similar mechanisms exist in a number of other specification and programming languages =-=[5, 10, 13]-=-. 4 push. An unordered list or a bag is an example of a data structure that is not freely generated since two different sequences of insertions of elements into a bag can yield equivalent bags. The da... |

96 | Experiments with proof plans for induction
- Bundy, Harmelen, et al.
- 1991
(Show Context)
Citation Context ...cise. The main conclusion is that continuation-based transformations are extremely powerful and yet easily verified using PVS. Many examples that pose serious challenges for induction theorem provers =-=[3,4]-=- are often just straightforward instances of such continuation-based transformations. We have formalized these transformations in a schematic manner so that individual instances of these transformatio... |

38 | Effective theorem proving for hardware verification
- Cyrluk, Rajan, et al.
- 1994
(Show Context)
Citation Context ...oof checker. Through the use of BDD-based simplification, simple PVS proof strategies can be defined for efficiently and automatically verifying simple processor designs and N-bit arithmetic circuits =-=[6]-=-. A useful strategy for well-founded induction (specifically, measure induction) was defined during the course of this work. This strategy is defined in terms of the existing measure-induct and induct... |

21 |
Functional algorithm design
- Bird
- 1995
(Show Context)
Citation Context ...ng. This research has been supported by NSF Grant CCR-930044 and ARPA under contract PR8556. Some of the work reported here was inspired by Richard Bird's talk at the conference and the related paper =-=[1]-=-. The feedback from the 1995 Dagstuhl workshop on induction theorem proving was also valuable. Healfdene Goguen, Bernhard Moller, Sam Owre, Harald Ruess, John Rushby, and Mandayam Srivas supplied valu... |

4 |
verifying and applying software development steps using the PVS system
- Representing
- 1995
(Show Context)
Citation Context ...s such as hardware verification. 1 The results in this paper constitute preliminary steps towards mechanizing program transformation techniques using the general-purpose verification system PVS. Dold =-=[8]-=- has already verified a divide-and-conquer scheme using PVS and has instantiated it to synthesize a binary search algorithm for arrays. Ruess [18] has carried out a similar development using the type ... |

3 |
a system for sufficient completeness and parameterized inductive proofs
- SPIKE
- 1994
(Show Context)
Citation Context ...endent typing to constrain the fi argument to be at least ff, 7 The SPIKE theorem prover is based on first-order term-rewriting and successfully mechanizes mutual recursion and simultaneous induction =-=[2]-=-. 21 and the search result to lie in the subrange between ff and fi. The proof was only moderately difficult. It involved a fair amount of case analysis but the potentially laborious aspects of the pr... |

2 |
Rushby, Natarajan Shankar, Jens Ulrik Skakkebaek, Mandayam Srivas, and Friedrich von Henke. Seven papers on mechanized formal verification
- Cyrluk, Lincoln, et al.
- 1995
(Show Context)
Citation Context ...aining simplification steps. Model checking with theorem proving. The details of this are not relevant to this paper. See [16, 19] for more details. A variety of examples have been verified using PVS =-=[7]-=-. The most substantial use of PVS has been in the verification of the microcode for selected instructions of a commercial-scale microprocessor called AAMP5 designed by Rockwell-Collins [12]. 3 Abstrac... |