Test input generators are an important part of
			property-based testing (PBT)
			frameworks. Because PBT is intended to test
			deep semantic and structural properties of a
			program, the outputs produced by these
			generators can be complex data structures,
			constrained to satisfy properties the
			developer believes is most relevant to testing
			the function of interest.  An important
			feature expected of these generators is that
			they be capable of producing all
			acceptable elements that satisfy the
			function's input type and generator-provided
			constraints.  However, it is not readily
			apparent how we might validate whether a
			particular generator's output satisfies this
			coverage requirement.  Typically,
			developers must rely on manual inspection and
			post-mortem analysis of test runs to determine
			if the generator is providing sufficient
			coverage; these approaches are error-prone and
			difficult to scale as generators become more
			complex.  To address this important concern,
			we present a new refinement type-based
			verification procedure for validating the
			coverage provided by input test generators,
			based on a novel interpretation of types that
			embeds ``must-style'' underapproximate
			reasoning principles as a fundamental part of
			the type system.  The types associated with
			expressions now capture the set of values
			guaranteed to be produced by the
			expression, rather than the typical
			formulation that uses types to represent the
			set of values an expression may
			produce.  Beyond formalizing the notion of
			coverage
			types in the context of a rich core
			language with higher-order procedures and
			inductive datatypes, we also present a
			detailed evaluation study to justify the
			utility of our ideas.
		    
		    
		       Recipient of a Distinguished Paper Award at PLDI 2023
		      Recipient of a Distinguished Paper Award at PLDI 2023