# Proving Properties of Programs by Structural Induction

@article{Burstall1969ProvingPO, title={Proving Properties of Programs by Structural Induction}, author={R. Burstall}, journal={Comput. J.}, year={1969}, volume={12}, pages={41-48} }

This paper discusses the technique of structural induction for proving theorems about programs. This technique is closely related to recursion induction but makes use of the inductive definition of the data structures handled by the programs. It treats programs with recursion but without assignments or jumps. Some syntactic extensions to Landin's functional programming language ISWIM are suggested which make it easier to program the manipulation of data structures and to develop proofs about… Expand

#### 367 Citations

Strategies for Mechanizing Structural Induction

- Mathematics, Computer Science
- IJCAI
- 1977

A theorem proving system has been programmed for automating mildly complex proofs by structural induction. One purpose was to prove properties of simple functional programs without loops or… Expand

Evaluation of a new recursion induction principle for automated induction

- Mathematics
- 2017

Structural induction is a powerful tool for proving properties of functions with
recursive structure, but it is useless when the functions do not preserve the
structure of the input. Many of today’s… Expand

Mechanizing Structural Induction Part I: Formal System

- Computer Science, Mathematics
- Theor. Comput. Sci.
- 1979

The formal part of a theorem-proving system for automating mildly complex proofs by structural induction is presented, which includes a typed language and an induction rule using a lexicographic ordering based on a substructure ordering. Expand

Proving Properties of Complex Data Structures

- Computer Science
- JACM
- 1976

This paper is concerned with proving properties of programs which use data structures. The goal is to be able to prove that all instances of a class (e.g. as defined in Simula) satisfy some property.… Expand

Structural Induction in Programming Language Semantics A Note for C S 386L Students

- Mathematics
- 2015

Programming language syntax and semantics use various structured objects. Languages and derivations (proofs) are two examples. Often, one wishes to prove that a property holds for some set of these… Expand

Proving Theorems about LISP Functions

- Mathematics, Computer Science
- JACM
- 1975

We describe some simple heuristics combining evaluation and mathematical induction which we have implemented in a program that automatically proves a wide variety of theorems about recursive LISP… Expand

Mechanizing Structural Induction Part II: Strategies

- Computer Science, Mathematics
- Theor. Comput. Sci.
- 1979

A theorem-proving system has been programmed for automating mildly complex proofs by structural induction, which can cope with situations as complex as the defination and correctness proof of a simple compiling algorithm for expressions. Expand

Induction Principles for Context-Free Languages

- Computer Science
- GI Jahrestagung
- 1973

This work shall introduce induction principles informally and use them to prove the equivalence of two syntactic definitions of an unsigned integer, the equivalences of Knuth’s two examples of synthesized and inherited attributes, and the validity of Hoare's first axiom for a large class of programming languages. Expand

How to Prove Algebraic Inductive Hypotheses Without Induction

- Mathematics, Computer Science
- CADE
- 1980

This paper proves the correctness of algebraic methods for deciding the equivalence of expressions by applying rewrite rules, and for proving inductive equational hypotheses without using induction;… Expand

Structural Induction Principles for Functional Programmers

- Computer Science
- TFPIE
- 2013

An algorithm to generate structural induction principles from data type declarations is described and how these methods are taught in the functional programming course at the University of Wyoming is discussed. Expand

#### References

SHOWING 1-10 OF 19 REFERENCES

PROGRAMS AND THEIR PROOFS: AN ALGEBRAIC APPROACH,

- Computer Science
- 1968

A method of defining some functions as homomorphisms instead of giving recursive or iterative definitions is explained, and a proof of the correctness of a simple compiler for expressions is given. Expand

The Mechanical Evaluation of Expressions

- Computer Science
- Comput. J.
- 1964

It is shown how some forms of expression in current programming languages can be modelled in Church's X-notation, and a way of "interpreting" such expressions is described, which suggests a method of analyzing the things computer users write. Expand

The Equivalence of Certain Computations

- Mathematics, Computer Science
- Comput. J.
- 1966

The equivalence of the iterative and recursive definitions are proved and a general theorem on equivalence, from which some of the results may be deduced, is stated and proved. Expand

The next 700 programming languages

- Computer Science
- CACM
- 1966

A family of unimplemented computing languages is described that is intended to span differences of application area by a unified framework. This framework dictates the rules about the uses of… Expand

Correctness of a compiler for arithmetic expressions

- Computer Science
- 1966

Abstract : The paper contains a proof of the correctness of a simple compiling algorithm for compiling arithmetic expressions into machine language.

A Basis for a Mathematical Theory of Computation1)

- Computer Science
- 1959

The chapter explores what practical results can be expected from a suitable mathematical theory and presents several descriptive formalisms with a few examples of their use and theories that enable to prove the equivalence of computations expressed in these formalisms. Expand

Semantics of assignment

- Edinburgh: Oliver and Boyd
- 1968

Semantics of assignment , Machine Intelligence 2

- 1968

Assigning meanings to program

- Mathematical Aspects of Computer Science. Amer. Math. Soc. Providence
- 1967

Assigning meanings to program , Mathematical Aspects of Computer Science

- 1967