🤖 AI Summary
This work addresses the lack of type-theoretic support for under-approximation reasoning in functional program verification. Methodologically, it pioneers the integration of incorrectness logic with refinement types and coverage types, yielding an extended instantiation type system that supports *necessity-guaranteeing* under-approximation reasoning. By encoding incorrectness assertions directly into the type system, the approach enables provable characterization of erroneous program behaviors and synergizes with property-based testing frameworks to jointly verify both the safety and completeness of test generators. The contributions are threefold: (1) it establishes the first formal theoretical bridge between incorrectness logic and typed systems; (2) it enhances the completeness and verifiability of test generation and static analysis for functional programs; and (3) it provides a novel, constructively definable foundation for under-approximation reasoning in program verification tools.
📝 Abstract
A coverage type generalizes refinement types found in many functional languages with support for must-style underapproximate reasoning. Property-based testing frameworks are one particularly useful domain where such capabilities are useful as they allow us to verify the completeness, as well as safety, of test generators. There is a surprising connection between the kind of underapproximate reasoning coverage types offer and the style of reasoning enabled by recently proposed Incorrectness Logic frameworks. In our presentation, we propose to explore this connection more deeply, identifying mechanisms that more systematically integrate incorrectness reasoning within an expressive refinement type system and the opportunities that such integration offers to functional programmers, program verifiers, and program analyzers and related tools.