Property-Based Testing for Lambda Expressions Semantics in Featherweight Java
Published in SBLP - Brazilian Syposium on Programming Languages, 2018
The release of Java 8 represents one of the most significant updates to the Java language since its inception. The addition of lambda-expressions allows the treatment of code as data in a compact way, improving the language expressivity. This paper addresses the problem of defining rigorous semantics for new features of Java, such as lambda-expressions and default methods, using Featherweight Java (FJ), a well-known object-oriented calculus. To accomplish this task, we embed the formalization of these new features in two different semantics, checking them for safety properties using QuickCheck, a property-based testing library for Haskell.