Deriving structural induction in LCF
The fixed-point theory of computation allows a variety of recursive data structures. Constructor functions may be lazy or strict; types may be mutually recursive and satisfy equational constraints. Structural induction for these types follows from fixed-point induction; induction for lazy types is only sound for a subclass of formulas.
Structural induction is derived and discussed for several types, including lazy lists, finite lists, syntax trees for expressions, and finite sets. Experience with the LCF theorem prover is described.
The paper is a condensation of “Structural Induction in LCF” .
KeywordsInduction Rule Existential Quantifier Structural Induction Equational Constraint Recursive Type
Unable to display preview. Download preview PDF.
- R. Bird, Programs and Machines: An Introduction to the Theory of Computation, (Wiley, 1976).Google Scholar
- W.H. Burge, Recursive Programming Techniques, (Addison-Wesley, 1975).Google Scholar
- R.M. Burstall, Proving properties of programs by structural induction, Computer Journal 12 (February 1969), pages 41–48.Google Scholar
- R.M. Burstall and J.A. Goguen, Algebras, theories and freeness: an introduction for computer scientists, Report CSR-101-82, University of Edinburgh, 1982.Google Scholar
- R. Cartwright and J. Donahue, The semantics of lazy (and industrious) evaluation, ACM Symposium on Lisp and Functional Programming (1982), pages 253–264.Google Scholar
- A.J. Cohn and R. Milner, On using Edinburgh LCF to prove the correctness of a parsing algorithm, Report CSR-113-82, University of Edinburgh, 1982.Google Scholar
- M.J.C. Gordon, R. Milner, and C. Wadsworth, Edinburgh LCF (Springer, 1979).Google Scholar
- S. Igarashi, Admissibility of fixed-point induction in first order logic of typed theories, Report STAN-CS-72-287, Stanford University, 1972.Google Scholar
- Z. Manna, Mathematical Theory of Computation (McGraw-Hill, 1974).Google Scholar
- B. Nordström, Programming in constructive set theory: some examples, ACM conference on Functional Programming Languages and Computer Architecture (1981), pages 141–153.Google Scholar
- L. Paulson, The revised logic PPLAMBDA: a reference manual, Report 36, Computer Laboratory, University of Cambridge (1983).Google Scholar
- L. Paulson, Structural induction in LCF, Report 44, Computer Laboratory, University of Cambridge (1984).Google Scholar
- L. Paulson, Verifying the unification algorithm in LCF, Report 50, Computer Laboratory, University of Cambridge (1984).Google Scholar
- D. Scott, A type-theoretic alternative to CUCH, ISWIM, OWHY, Unpublished (1969).Google Scholar
- S. Sokolowski, An LCF proof of the soundness of Hoare's logic, Report CSR-146-83, University of Edinburgh, 1983.Google Scholar
- J.E. Stoy, Denotational Semantics: the Scott-Strachey Approach to Programming Language Theory, MIT Press, 1977.Google Scholar