Being able to reason about types like that is very important if you want to get into actual interesting proofs at any point. Djinn can help with simple ones but it won't work for anything actually remotely difficult to prove. Or even things involving higher-rank types in Haskell :)

Even in the situation where a Djinn-like tool cannot hope to solve all problems outright, it might teach us something about how to structure the presentation of proofs. The parts that Djinn can't get for itself are the parts we need to write down. Lambda-calculus is great as a checkable evidence language for proofs, but as a source language for proofs it's dreadful. I'd be very happy to give a high-level proof tree, refining goals to subgoals (stating propositions, not proof terms), and giving key choices of strategy (e.g., which induction) and witnesses (instantiating forall nontrivially), but using a Djinn-like algorithm at each node of that tree to synthesize the actual lambda-term.

It might be worth pointing out that Coq's intuition tactic does something like what pigworker describes. It uses the same proof calculus as Djinn to generate a proof "skeleton", and takes another tactic to handle all the leaves where it gets stuck.

I've been hoping to expand this program out to include the ability to parse as Haskell module and work with something other than fixed types. The mostly literate code is here: https://github.com/sw17ch/Volcano/blob/master/stash/search.lhs. The rest of the github project is my half-assed attempt to modularize everything and make it into something more usable--currently none of it does anything.

I also intend to eventually make a way for the user to specify tests that the resulting functions must pass in order to be considered in the final set. In this way, I was hoping to generate functions from a specification rather than writing the specification and then writing the function.

I've been working on this as well, but mainly focusing on the visual representation of the results, and ability for the user to be directly involved in the search process. The latter is necessary because for any practical uses, the space is pretty explosive.