Type-directed synthesis is a program synthesis methodology that uses a program's rich type signature—such as refinement types, dependent types, or linear types—as the primary specification to constrain the search space and guide the generation of provably correct code. Instead of searching through all possible programs, the synthesizer leverages type inhabitation logic, treating the synthesis problem as a proof search for a term that inhabits the given type. This approach is foundational in languages with expressive type systems, like Haskell or Idris, and is closely related to the Curry-Howard correspondence, where programs are proofs and types are propositions.
