How about making the use of Barliman feel like a mind meld between man and machine, where if Barliman is exploring what is likely a dead end then the human user can force it to explore a different subtree of the search space? Perhaps by right-clicking a function name, viewing a resulting dropdown list, then clicking "Exclude" (short for "Exclude from synthesized programs") to have a convenient way to add a special kind of constraint that is on the contents of the program being generated rather than the usual constraints on its behavior/output.
The user could be shown 1 in every, say, 10,000 solutions that Barliman is trying behind the scenes.
For each Barliman user who agrees to it, the constraints (of both types) specified could even be uploaded to a server @webyrd controls so that those results could be studied and used to make the system's heuristics smarter.
How about making the use of Barliman feel like a mind meld between man and machine, where if Barliman is exploring what is likely a dead end then the human user can force it to explore a different subtree of the search space? Perhaps by right-clicking a function name, viewing a resulting dropdown list, then clicking "Exclude" (short for "Exclude from synthesized programs") to have a convenient way to add a special kind of constraint that is on the contents of the program being generated rather than the usual constraints on its behavior/output.
The user could be shown 1 in every, say, 10,000 solutions that Barliman is trying behind the scenes.
For each Barliman user who agrees to it, the constraints (of both types) specified could even be uploaded to a server @webyrd controls so that those results could be studied and used to make the system's heuristics smarter.