Abstract

Featherweight Java is one of the most popular calculi which specify object-oriented programming features. It has been used as the basis for investigating novel language functionalities, as well as to specify and understand the formal properties of existing features for languages in this paradigm. However, when considering mechanized formalization, it is hard to find an implementation for languages with complex structures and binding mechanisms as Featherweight Java. In this paper we formalize Featherweight Java, implementing the static and dynamic semantics in Agda, and proving the main safety properties for this calculus.

Highlights

  • Java is one of the most popular programming languages [1]

  • We prove the common theorems of progress and preservation to link the static and dynamic semantics, guaranteeing that a well-typed term will not get stuck, i.e., it should be a value or be able to take another reduction step, preserving the intended type

  • Following Wadler’s recipe [7] to automate evaluation for the Simple Typed Lambda Calculus (STLC), we define an evaluator for Featherweight Java (FJ), by the repeated application of the proofs of progress and preservation, using

Read more

Summary

Introduction

Java is one of the most popular programming languages [1]. It is a general-purpose, concurrent, strongly typed, class-based object-oriented language. Since its release in 1995 by Sun Microsystems, and later acquisition by Oracle, Java has been evolving over time, adding features and programming facilities in its new versions. In a recent major release of Java, new features such as lambda expressions, method references, and functional interfaces, were added to the core language, offering a programming model that fuses the object-oriented and functional styles [2]. Since a programming language evolves, it is important to have mechanisms to ensure that certain behaviors and desired properties are maintained after changing the language’s structure and the compiler or interpreter implementation. Mechanized proof assistants are powerful tools, proof development can be difficult and time-consuming [3]

Methods
Results
Conclusion

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.