arXiv · 2610.05316
More Powerful Constant Value Checking with SMT Solving
Abstract
Pluggable type systems extend the basic type system of a programming language by introducing additional type hierarchies to specify more complex properties and dependencies between variables. We consider the Constant Value Checker, a pluggable type checker for Java implemented using the Checker Framework, which provides various pluggable type systems and corresponding checkers. The Constant Value Checker lets users specify restrictions on the values a primitive integer or boolean variable can hold using a set or range of constant values. However, the current implementation of the Value Checker makes use of a limited set of syntactic typing rules that, in practice, often fail to verify well-typedness of more complex code. In this paper, we introduce an extension to the Checker Framework using Satisfiability Modulo Theories (SMT) solvers to address these limitations by creating corresponding first-order logic formulas for expressions whose type checks fail with the current syntactic typing rules and determining their well-typedness based on the satisfiability of these formulas. Furthermore, we introduce new dependent types for specifying allowed values with expressions that can depend on other variables in the program.
Explore related subjects
Keep this discovery
Explore connections, maps & timelines
Jonas Mittnacht, Florian Lanzinger. 2026-10-04. More Powerful Constant Value Checking with SMT Solving. https://arxiv.org/abs/2610.05316
Cite the original work for its findings. Save a collection to share your selection of sources.