Skip to main content

An operational approach to combining classical set theory and functional programming languages

  • Conference paper
  • First Online:
Theoretical Aspects of Computer Software (TACS 1994)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 789))

Included in the following conference series:

Abstract

We have designed a programming logic based on an integration of functional programming languages with classical set theory. The logic merges a classical view of equality with a constructive one by using equivalence classes, while at the same time allowing computation with representatives of equivalence classes. Given a programming language and its operational semantics, a logic is obtained by extending the language with the operators of set theory and classical logic, and extending the operational semantics with “evaluation” rules for these new operators. This operational approach permits us to give a generic design. We give a general formalism for specifying evaluation semantics, and parameterize our design with respect to languages specifiable in this formalism. This allows us to prove, once and for all, important properties of the semantics such as the coherence of the treatment of equality.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. S. Abramsky. The lazy lambda calculus. Proceedings of the Institute of Declarative Programming, August 1987.

    Google Scholar 

  2. M. J. Beeson. Towards a computation system based on set theory. Theoretical Computer Science, 60:297–340, 1988.

    Google Scholar 

  3. E. Bishop. Foundations of Constructive Analysis. McGraw-Hill, New York, 1967.

    Google Scholar 

  4. V. Breazu-Tannen and R. Subrahmanyam. Logical and computational aspects of programming with sets/bags/lists. In Automata, Languages and Programming: 18th International Colloquium, Lecture Notes in Computer Science, pages 60–75. Springer-Verlag, 1991.

    Google Scholar 

  5. V. Breazu-Tannen and R. Subrahmanyam. On extending computational adequacy by data abstraction. In Proc. ACM Symposium on Lisp and Functional Programming, pages 161–169. ACM Press, 1992.

    Google Scholar 

  6. R. L. Constable, et al. Implementing Mathematics with the Nuprl Proof Development System. Prentice-Hall, Englewood Cliffs, New Jersey, 1986.

    Google Scholar 

  7. T. Coquand and G. Huet. The Calculus of Constructions. Information and Computation, 76:95–120, 1988.

    Google Scholar 

  8. S. Feferman. A language and axioms for explicit mathematics. In Dold, A. and B. Eckmann, editor, Algebra and Logic, volume 450 of Lecture Notes in Mathematics, pages 87–139. Springer-Verlag, 1975.

    Google Scholar 

  9. M. Gordon. A proof generating system for higher-order logic. In Proceedings of the Hardware Verification Workshop, 1989.

    Google Scholar 

  10. K. Grue. Map theory. Theoretical Computer Science, 102:1–133, 1992.

    Google Scholar 

  11. D. J. Howe. Equality in lazy computation systems. In Proceedings of the Fourth Annual Symposium on Logic in Computer Science, pages 198–203. IEEE Computer Society, June 1989.

    Google Scholar 

  12. D. J. Howe. On computational open-endedness in Martin-Löf's type theory. In Proceedings of the Sixth Annual Symposium on Logic in Computer Science, pages 162–172. IEEE Computer Society, 1991.

    Google Scholar 

  13. P. Martin-Löf. Constructive mathematics and computer programming. In Sixth International Congress for Logic, Methodology, and Philosophy of Science, pages 153–175. North Holland, 1982.

    Google Scholar 

  14. D. A. McAllester. Ontic: A Knowledge Representation System for Mathematics. MIT Press, 1989.

    Google Scholar 

  15. L. Paulson. Isabelle: The next 700 theorem provers. In P. Odifreddi, editor, Logic and Computer Science, pages 361–385. Academic Press, 1990.

    Google Scholar 

  16. L. C. Paulson. Set theory for verification: I. from foundations to functions. Technical report, University of Cambridge, 1993.

    Google Scholar 

  17. J. C. Reynolds. Polymorphism is not set-theoretic. In G. Kahn, D. B. MacQueen, and G. Plotkin, editors, Semantics of Data Types: International Symposium, volume 173 of Lecture Notes in Computer Science, pages 145–156. Springer-Verlag, 1984.

    Google Scholar 

  18. J. Spivey. The Z Notation. Prentice Hall, 1989.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Masami Hagiya John C. Mitchell

Rights and permissions

Reprints and permissions

Copyright information

© 1994 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Howe, D.J., Stoller, S.D. (1994). An operational approach to combining classical set theory and functional programming languages. In: Hagiya, M., Mitchell, J.C. (eds) Theoretical Aspects of Computer Software. TACS 1994. Lecture Notes in Computer Science, vol 789. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57887-0_89

Download citation

  • DOI: https://doi.org/10.1007/3-540-57887-0_89

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-57887-1

  • Online ISBN: 978-3-540-48383-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics