Title: Coverage Types: Underapproximate Refinement Types for Generator Coverage
When: Tuesday, 07 April 2026 at 1900 hrs (IST)
Meeting Details: Zoom link, ID: 891 6409 4870, Passcode: 082194
Abstract:
Property-based testing (PBT) has become a widely used technique
for validating semantic properties of programs by automatically
generating test inputs that satisfy user-specified
preconditions. In practice, however, the effectiveness of PBT
depends critically on the quality of input generators. When
preconditions describe rich structural constraints, purely
random generators rarely produce many valid inputs, forcing
developers to write specialized generators by hand.
Unfortunately, such generators are often incomplete, i.e., they
may fail to produce many valid inputs, limiting the behaviors
explored during testing. However, it is not readily apparent
how to validate whether a particular generator provides
sufficient coverage against a given precondition. Typically,
developers must rely on manual inspection and post-hoc
analysis.
In this talk, I will present a refinement type-based framework
for reasoning about the coverage of test input generators. Our
key idea is coverage types, an interpretation of
refinement types that captures must-style guarantees about the
values a program will produce, rather than the traditional
may-style approximation of possible outputs. Conceptually,
coverage types bring ideas from Incorrectness logic and
underapproximate reasoning into the type system. The types
associated with expressions now capture the set of values
guaranteed to be produced by an expression, rather than the
typical formulation that uses types to represent the set of
values an expression may produce. This automated,
underapproximate reasoning mechanism allows us to formally
verify coverage properties of generators in a higher-order
functional language with inductive data types.
Building on this foundation, I will also describe a
synthesis-based program repair technique that automatically
patches incomplete generators by enumerating candidate repairs
guided by coverage types. Together, these ideas enable both
verification and automated repair of test generators, providing
stronger guarantees about the effectiveness of property-based
testing and illustrating how incorrectness-style,
underapproximate reasoning can be integrated with modern type
systems to support practical testing workflows.