Skip to main content

Constructive Foundations for Featherweight Java

  • Conference paper
  • First Online:

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

Abstract

In this paper we present a recursion-theoretic denotational semantics for Featherweight Java. Our interpretation is based on a formalization of the object model of Castagna, Ghelli and Longo in a predicative theory of types and names. Although this theory is proof-theoretically weak, it allows to prove many properties of programs written in Featherweight Java. This underpins Feferman’s thesis that impredicative assumptions are not needed for computational practice.

Research supported by the Swiss National Science Foundation. This paper is a part of the author’s dissertation thesis [38].

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Wolfgang Ahrendt, Thomas Baar, Bernhard Beckert, Martin Giese, Elmar Habermalz, Reiner Hähnle, Wolfram Menzel, and Peter H. Schmitt. The KeY approach: integrating object oriented design and formal verification. In Gerhard Brewka and Luís Moniz Pereira, editors, Proc. 8th European Workshop on Logics in AI (JELIA), Lecture Notes in Artificial Intelligence. Springer, 2000.

    Google Scholar 

  2. Jim Alves-Foss and Fong Shing Lam. Dynamic denotational semantics of Java. In J. Alves-Foss, editor, Formal Syntax andSemantics of Java, volume 1523 of Lecture Notes in Computer Science, pages 201–240. Springer, 1999.

    Chapter  Google Scholar 

  3. Davide Ancona, Giovanni Lagorio, and Elena Zucca. Jam: A smooth extension of Java with mixins. In E. Bertino, editor, ECOOP 2000-14th European Conference on Object-Oriented Pr ogramming, volume 1850 of Lecture Notes in Computer Science. Springer, 2000.

    Google Scholar 

  4. Davide Ancona and Elena Zucca. A module calculus for Featherweight Java. Submitted.

    Google Scholar 

  5. Michael J. Beeson. Foundations of Constructive Mathematics: Metamathematical Studies. Springer, 1985.

    Google Scholar 

  6. Michael J. Beeson. Proving programs and programming proofs. In R. Barcan Marcus, G.J.W. Dorn, and P. Weingartner, editors, Logic, Methodology and Philosophy of Science VII, pages 51–82. North-Holland, 1986.

    Google Scholar 

  7. Kim B. Bruce, Luca Cardelli, and Benjamin C. Pierce. Comparing object encodings. Information andComputation, 155:108–133, 1999.

    Article  MATH  MathSciNet  Google Scholar 

  8. Giuseppe Castagna. Object-OrientedPr ogramming: A Unified Foundation. Birkhäuser, 1997.

    Google Scholar 

  9. Giuseppe Castagna, Giorgio Ghelli, and Giuseppe Longo. A semantics for λ&-early: a calculus with overloading and early binding. In M. Bezem and J. F. Groote, editors, TypedL ambda Calculi andApplic ations, volume 664 of Lecture Notes in Computer Science, pages 107–123. Springer, 1993.

    Chapter  Google Scholar 

  10. Giuseppe Castagna, Giorgio Ghelli, and Giuseppe Longo. A calculus for overloaded functions with subtyping. Information andComputation, 117(1):115–135, 1995.

    Article  MATH  MathSciNet  Google Scholar 

  11. Pietro Cenciarelli, Alexander Knapp, Bernhard Reus, and Martin Wirsing. An event-based structural operational semantics of multi-threaded Java. In J. Alves-Foss, editor, Formal Syntax andSemantics of Java, volume 1523 of Lecture Notes in Computer Science, pages 157–200. Springer, 1999.

    Chapter  Google Scholar 

  12. Sophia Drossopoulou, Susan Eisenbach, and Sarfraz Khurshid. Is the Java type system sound? Theory andpr actice of object systems, 5(1):3–24, 1999.

    Article  Google Scholar 

  13. Solomon Feferman. A language and axioms for explicit mathematics. In J.N. Crossley, editor, Algebra and Logic, volume 450 of Lecture Notes in Mathematics, pages 87–139. Springer, 1975.

    Google Scholar 

  14. Solomon Feferman. Constructive theories of functions and classes. In M. Boffa, D. van Dalen, and K. McAloon, editors, Logic Colloquium’ 78, pages 159–224. North Holland, 1979.

    Google Scholar 

  15. Solomon Feferman. Polymorphic typed lambda-calculi in a type-free axiomatic framework. In W. Sieg, editor, Logic andComputation, volume 106 of Contemporary Mathematics, pages 101–136. American Mathematical Society, 1990.

    Google Scholar 

  16. Solomon Feferman. Logics for termination and correctness of functional programs. In Y. N. Moschovakis, editor, Logic from Computer Science, volume 21 of MSRI Publications, pages 95–127. Springer, 1991.

    Google Scholar 

  17. Solomon Feferman. Logics for termination and correctness of functional programs II: Logics of strength PRA. In P. Aczel, H. Simmons, and S. S. Wainer, editors, Proof Theory, pages 195–225. Cambridge University Press, 1992.

    Google Scholar 

  18. Matthias Felleisen and Daniel P. Friedman. A Little Java, A Few Patterns. MIT Press, 1998.

    Google Scholar 

  19. Marcello Fiore, Achim Jung, Eugenio Moggi, Peter O’Hearn, Jon Riecke, Giuseppe Rosolini, and Ian Stark. Domains and denotational semantics: history, accomplishments and open problems. Bulletin of the European Association for Theoretical Computer Science, 59:227–256, 1996.

    Google Scholar 

  20. Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. A programmer’s reduction semantics for classes and mixins. Technical report, Rice University, 1999. Corrected Version, original in J. Alvess-Foss, editor, Formal Syntax and Semantics of Java, volume 1523 of Lecture Notes in Computer Science, pages 241–269, Springer, 1999.

    Chapter  Google Scholar 

  21. Giorgio Ghelli. A static type system for late binding overloading. In A. Paepcke, editor, Proc. of the Sixth International ACM Conference on Object-Oriented Programming Systems and Applic ations, pages 129–145. Addison-Wesley, 1991.

    Google Scholar 

  22. James Gosling, Bill Joy, and Guy Steele. The Java Language Specification. Addison Wesley, 1996. Also available via http://java.sun.com/docs/.

  23. Atsushi Igarashi and Benjamin Pierce. On inner classes. In Informal Proceedings of the Seventh Internatianal Workshop on Foundations of Object-Oriented Languages (FOOL), 2000.

    Google Scholar 

  24. Atsushi Igarashi, Benjamin Pierce, and Philip Wadler. Featherweight Java: A minimal core calculus for Java and GJ. In Object OrientedPr ogramming: Systems, Languages andApplic ations (OOPSLA’ 99), volume 34 of ACM SIGPLAN Notices, pages 132–146, 1999.

    Google Scholar 

  25. Bart Jacobs, Joachim van den Berg, Marieke Huisman, Martijn van Berkum, Ulrich Hensel, and Hendrik Tews. Reasoning about Java classes (preliminary report). In Object OrientedPr ogramming: Systems, Languages andApplic ations (OOPSLA’ 98), volume 33 of ACM SIGPLAN Notices, pages 329–340, 1998.

    Google Scholar 

  26. Gerhard Jäger. Induction in the elementary theory of types and names. In E. Börger, H. Kleine Büning, and M.M. Richter, editors, Computer Science Logic’ 87, volume 329 of Lecture Notes in Computer Science, pages 118–128. Springer, 1988.

    Google Scholar 

  27. Gerhard Jäger. Type theory and explicit mathematics. In H.-D. Ebbinghaus, J. Fernandez-Prida, M. Garrido, M. Lascar, and M. Rodriguez Artalejo, editors, Logic Colloquium’ 87, pages 117–135. North-Holland, 1989.

    Google Scholar 

  28. Reinhard Kahle. Einbettung des Beweissystems Lambda in eine Theorie von Operationen und Zahlen. Diploma thesis, Mathematisches Institut der Universität München, 1992.

    Google Scholar 

  29. Reinhard Kahle and Thomas Studer. Formalizing non-termination of recursive programs. To appear in Journal of Logic and A lgebraic Programming.

    Google Scholar 

  30. Tobias Nipkow and David von Oheimb. Javalight is type-safe-definitely. In Proc. 25th ACM Symp. Principles of Programming Languages. ACM Press, NewY ork, 1998.

    Google Scholar 

  31. David von Oheimb. Axiomatic semantics for Javalight. In S. Drossopoulou, S. Eisenbach, B. Jacobs, G. T. Leavens, P. Müller, and A. Poetzsch-Heffter, editors, Formal Techniques for Java Programs. Fernuniversität Hagen, 2000.

    Google Scholar 

  32. Dieter Probst. Dependent choice in explicit mathematics. Diploma thesis, Institut für Informatik und angewandte Mathematik, Universität Bern, 1999.

    Google Scholar 

  33. Dana S. Scott. Identity and existence in intuitionistic logic. In M. Fourman, C. Mulvey, and D. Scott, editors, Applications of Sheaves, volume 753 of Lecture Notes in Mathematics, pages 660–696. Springer, 1979.

    Google Scholar 

  34. Robert Stärk. Call-by-value, call-by-name and the logic of values. In D. van Dalen and M. Bezem, editors, Computer Science Logic’ 96, volume 1258 of Lecture Notes in Computer Science, pages 431–445. Springer, 1997.

    Google Scholar 

  35. Robert Stärk. Why the constant ‘undefined’? Logics of partial terms for strict and non-strict functional programming languages. Journal of Functional Programming, 8(2):97–129, 1998.

    Article  MATH  MathSciNet  Google Scholar 

  36. Robert Stärk, Joachim Schmid, and Egon Börger. Java and the Java Virtual Machine. Springer, 2001.

    Google Scholar 

  37. Thomas Studer. A semantics for λ {} str : a calculus with overloading and late-binding. To appear in Journal of Logic and Computation.

    Google Scholar 

References

  1. Thomas Studer. Impredicative overloading in explicit mathematics. Submitted.

    Google Scholar 

  2. Don Syme. Proving Java type soundness. In J. Alves-Foss, editor, Formal Syntax and Semantics of Java, volume 1523 of Lecture Notes in Computer Science, pages 83–118. Springer, 1999.

    Chapter  Google Scholar 

  3. Makoto Tatsuta. Realizability for constructive theory of functions and classes and its application to program synthesis. InProceedings of Thirteenth Annual IEEE Symposium on Logic in Computer Science, LICS’ 98, pages 358–367, 1998.

    Google Scholar 

  4. Anne Sjerp Troelstra and Dirk van Dalen. Constructivism in Mathematics, vol II. North Holland, 1988.

    Google Scholar 

  5. Raymond Turner. Constructive Foundations for Functional Languages. McGraw Hill, 1991.

    Google Scholar 

  6. Raymond Turner. Weak theories of operations and types. Journal of Logic and Computation, 6(1):5–31, 1996.

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2001 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Studer, T. (2001). Constructive Foundations for Featherweight Java. In: Kahle, R., Schroeder-Heister, P., Stärk, R. (eds) Proof Theory in Computer Science. PTCS 2001. Lecture Notes in Computer Science, vol 2183. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45504-3_13

Download citation

  • DOI: https://doi.org/10.1007/3-540-45504-3_13

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-42752-0

  • Online ISBN: 978-3-540-45504-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics