Deriving structural induction in LCF

  • Lawrence Paulson
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 173)

Abstract

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” [12].

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [1]
    R. Bird, Programs and Machines: An Introduction to the Theory of Computation, (Wiley, 1976).Google Scholar
  2. [2]
    W.H. Burge, Recursive Programming Techniques, (Addison-Wesley, 1975).Google Scholar
  3. [3]
    R.M. Burstall, Proving properties of programs by structural induction, Computer Journal 12 (February 1969), pages 41–48.Google Scholar
  4. [4]
    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
  5. [5]
    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
  6. [6]
    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
  7. [7]
    M.J.C. Gordon, R. Milner, and C. Wadsworth, Edinburgh LCF (Springer, 1979).Google Scholar
  8. [8]
    S. Igarashi, Admissibility of fixed-point induction in first order logic of typed theories, Report STAN-CS-72-287, Stanford University, 1972.Google Scholar
  9. [9]
    Z. Manna, Mathematical Theory of Computation (McGraw-Hill, 1974).Google Scholar
  10. [10]
    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
  11. [11]
    L. Paulson, The revised logic PPLAMBDA: a reference manual, Report 36, Computer Laboratory, University of Cambridge (1983).Google Scholar
  12. [12]
    L. Paulson, Structural induction in LCF, Report 44, Computer Laboratory, University of Cambridge (1984).Google Scholar
  13. [13]
    L. Paulson, Verifying the unification algorithm in LCF, Report 50, Computer Laboratory, University of Cambridge (1984).Google Scholar
  14. [14]
    D. Scott, A type-theoretic alternative to CUCH, ISWIM, OWHY, Unpublished (1969).Google Scholar
  15. [15]
    S. Sokolowski, An LCF proof of the soundness of Hoare's logic, Report CSR-146-83, University of Edinburgh, 1983.Google Scholar
  16. [16]
    J.E. Stoy, Denotational Semantics: the Scott-Strachey Approach to Programming Language Theory, MIT Press, 1977.Google Scholar

Copyright information

© Springer-Verlag 1984

Authors and Affiliations

  • Lawrence Paulson
    • 1
  1. 1.Computer LaboratoryUniversity of CambridgeCambridgeEngland

Personalised recommendations