1. A computer implemented method of providing search results, the method comprising: receiving a first specification that comprises an input-output pair including a first data entity and a second data entity; for each module of program code of a plurality of modules of program code, supplying to a constraint solver one or more input-output constraints based on the input-output pair of the first specification and one or more code constraints based on the module of program code; receiving from the constraint solver, for each module of program code, a result indicating whether the code constraints based on the module of program code are satisfiable with the input-output constraints; and generating search results referencing one or more modules of program code having a positive result from the constraint solver and providing the search results to a user.