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
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
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.
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.
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.
Davide Ancona and Elena Zucca. A module calculus for Featherweight Java. Submitted.
Michael J. Beeson. Foundations of Constructive Mathematics: Metamathematical Studies. Springer, 1985.
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.
Kim B. Bruce, Luca Cardelli, and Benjamin C. Pierce. Comparing object encodings. Information andComputation, 155:108–133, 1999.
Giuseppe Castagna. Object-OrientedPr ogramming: A Unified Foundation. Birkhäuser, 1997.
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.
Giuseppe Castagna, Giorgio Ghelli, and Giuseppe Longo. A calculus for overloaded functions with subtyping. Information andComputation, 117(1):115–135, 1995.
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.
Sophia Drossopoulou, Susan Eisenbach, and Sarfraz Khurshid. Is the Java type system sound? Theory andpr actice of object systems, 5(1):3–24, 1999.
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.
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.
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.
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.
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.
Matthias Felleisen and Daniel P. Friedman. A Little Java, A Few Patterns. MIT Press, 1998.
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.
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.
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.
James Gosling, Bill Joy, and Guy Steele. The Java Language Specification. Addison Wesley, 1996. Also available via http://java.sun.com/docs/.
Atsushi Igarashi and Benjamin Pierce. On inner classes. In Informal Proceedings of the Seventh Internatianal Workshop on Foundations of Object-Oriented Languages (FOOL), 2000.
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.
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.
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.
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.
Reinhard Kahle. Einbettung des Beweissystems Lambda in eine Theorie von Operationen und Zahlen. Diploma thesis, Mathematisches Institut der Universität München, 1992.
Reinhard Kahle and Thomas Studer. Formalizing non-termination of recursive programs. To appear in Journal of Logic and A lgebraic Programming.
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.
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.
Dieter Probst. Dependent choice in explicit mathematics. Diploma thesis, Institut für Informatik und angewandte Mathematik, Universität Bern, 1999.
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.
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.
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.
Robert Stärk, Joachim Schmid, and Egon Börger. Java and the Java Virtual Machine. Springer, 2001.
Thomas Studer. A semantics for λ {} str : a calculus with overloading and late-binding. To appear in Journal of Logic and Computation.
References
Thomas Studer. Impredicative overloading in explicit mathematics. Submitted.
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.
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.
Anne Sjerp Troelstra and Dirk van Dalen. Constructivism in Mathematics, vol II. North Holland, 1988.
Raymond Turner. Constructive Foundations for Functional Languages. McGraw Hill, 1991.
Raymond Turner. Weak theories of operations and types. Journal of Logic and Computation, 6(1):5–31, 1996.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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