Feeling great about my recent post @tweag's software engineering blog!
It tells the story of how (and why) I implemented qualified identifier support for refinement type aliases in #LiquidHaskell during my participation at #GSoC 2025.
Check it out!
Just wrapped up the first half of my GSoC project on improving name resolution in Liquid Haskell (LH)! It’s been lots of fun—long hours of code reading, analysis, testing, and debugging. Not that those were the most exciting parts, but pushing through and gaining a deeper understanding of the system definitely was.
LH hooks into the compiler pipeline to turn special comment annotations (refining types using logical predicates) into constraints for an external SMT solver to check. My project focuses on a very narrow feature, but along the way I’ve run into all sorts of cool programming concepts—like generic traversals of data structures and strongly connected components in directed graphs—while working through the parsing, name resolution, and definition unfolding implementations.
I’m deeply grateful to Facundo Domínguez for his generous and thoughtful mentoring, which has made this a rich learning experience and given me valuable engineering insights. I expect new challenges ahead, but I’ll do my best to sneak in some optimizations and give legacy code a proper cleanup.
https://summerofcode.withgoogle.com/programs/2025/projects/ALSN6wwr
As part of our (@[email protected] and yt) research on the usability of interactive theorem provers, we are conducting a study on the usage and state of tools and languages for type-driven development. We are interested in tools that encourage and facilitate type-driven development, especially in cases when they can help us reason about complex problems.
We are hoping to use your responses to identify the characteristic language features and tool interactions that enable type-driven development, with the eventual goals of enhancing them and bringing their benefits to a wider range of programmers.
Please fill in our anonymous, 10-minute survey here: https://tudelft.fra1.qualtrics.com/jfe/form/SV_bIsMxYTKUJkhVuS
You are welcome to participate if you have experience with any type-driven development tool, including dependently-typed languages (e.g., Coq, Lean, Agda), refinement types (e.g., Liquid Haskell), or even other static type systems (e.g., in Rust or Haskell).
P.S. In case you remember signing up for an interview with us in a previous survey and are now wondering whether that study will still go on, the answer is: yes! We’ve had to revise our schedule, but we are still excited to talk to you and will start inviting people for an interview soon.
#Agda #Coq #Rocq #Lean #LiquidHaskell #Rust #Haskell #TypeDrivenDevelopment #TyDe #DependentTypes #LiquidTypes #RefinementTypes #ProofAssistants #Survey
... #LiquidHaskell (restriction types, SMT solver) and the Isabelle proof assistant.
For example, look at the kind of assurances we can make about data at the type-level. This means the SMT solver can assure that certain logical constraints on types are provably true.
My code to verify a file ranking algo I made:
https://github.com/someodd/bore/blob/master/src/Bore/SpacecookieClone/Search/Verified.hs