Reasoning About Exceptional Behavior At the Level of Java Bytecode
Marco Paganoni, Carlo A. Furia

TL;DR
This paper introduces Vimp, a high-level bytecode representation, and an extension of ByteBack, to improve formal verification of Java programs' exceptional behavior across multiple JVM languages.
Contribution
It presents Vimp as an intermediate layer for bytecode verification, enabling accurate reasoning about exceptions in Java, Scala, and Kotlin programs.
Findings
ByteBack can verify Java programs with exceptions across all Java versions.
Vimp enhances verification flexibility and adaptability.
The approach extends to Scala and Kotlin JVM languages.
Abstract
A program's exceptional behavior can substantially complicate its control flow, and hence accurately reasoning about the program's correctness. On the other hand, formally verifying realistic programs is likely to involve exceptions -- a ubiquitous feature in modern programming languages. In this paper, we present a novel approach to verify the exceptional behavior of Java programs, which extends our previous work on ByteBack. ByteBack works on a program's bytecode, while providing means to specify the intended behavior at the source-code level; this approach sets ByteBack apart from most state-of-the-art verifiers that target source code. To explicitly model a program's exceptional behavior in a way that is amenable to formal reasoning, we introduce Vimp: a high-level bytecode representation that extends the Soot framework's Grimp with verification-oriented features, thus serving as…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
