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}
}
  • R. Burstall
  • Published 1969
  • Computer Science, Mathematics
  • Comput. J.
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
Strategies for Mechanizing Structural Induction
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 orExpand
Evaluation of a new recursion induction principle for automated induction
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’sExpand
Mechanizing Structural Induction Part I: Formal System
  • Raymond Aubin
  • Computer Science, Mathematics
  • Theor. Comput. Sci.
  • 1979
TLDR
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
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
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 theseExpand
Proving Theorems about LISP Functions
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 LISPExpand
Mechanizing Structural Induction Part II: Strategies
  • Raymond Aubin
  • Computer Science, Mathematics
  • Theor. Comput. Sci.
  • 1979
TLDR
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
TLDR
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
  • J. Goguen
  • 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
TLDR
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
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 19 REFERENCES
PROGRAMS AND THEIR PROOFS: AN ALGEBRAIC APPROACH,
TLDR
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
TLDR
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
TLDR
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
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 ofExpand
Correctness of a compiler for arithmetic expressions
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)
TLDR
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
...
1
2
...