Kukicha -- Efficient Yet Powerful Refinement Types for Object-Oriented Languages
Refinement type systems allow programmers to use logical conditions to constrain variable values. However, most practical refinement type systems limit their expressiveness to remain automatically decidable. Deductive verification, on the other hand, can prove more complex properties but requires more time and expertise. To combine the advantages of both approaches, we introduce Kukicha, a refinement type framework for object-oriented languages based on the cooperation of type checkers and deductive verification tools. Kukicha first performs an efficient syntactic well-typedness check. If this does not succeed, it uses a deductive verifier to prove exactly those specifications that could not be shown by the type checker, while being able to assume the rest. Unlike previous similar approaches, Kukicha supports mutable objects with strong updates, since it combines the refinement type system with uniqueness types to track aliasing and packing types to track temporary violations. We prove Kukicha’s soundness for an abstract object-oriented language and implement it for Java based on the Checker Framework, and the deductive verification tools KeY and Verifast. We evaluate our implementation by verifying the correctness of an example program and showing that Kukicha reduced the verification overhead needed for verification with KeY and Verifast.
Authors
- Florian Lanzinger (ORCID: https://orcid.org/0000-0001-8560-6324)
- Mattias Ulbrich (ORCID: https://orcid.org/0000-0002-2350-1831)
- Werner Dietl (ORCID: https://orcid.org/0000-0002-9316-6952)
- Joshua Bachmeier (ORCID: https://orcid.org/0009-0006-6733-7988)
Institutions
- Karlsruhe Institute of Technology (DE)
- University of Waterloo (CA)
Publication Details
- Journal
- Formal Aspects of Computing
- Published
- 2026-10-05
- DOI
- https://doi.org/10.1145/3849492
- Primary Topic
- Logic, programming, and type systems
- Type
- article
- Field-Weighted Citation Impact
- 0.00