Local search is a well established approach for tackling large combinatorial problems within reasonable amounts of time. A local-search-based solver relies on a \emphsearch procedure, specified by the user, or given as a black-box \citeControlAbstractionsLS, localsolver.
The search procedure includes the neighborhood(s), the meta-heuristics (simulated annealing, taboo, restart, etc.), a stop criterion, a solution management policy, etc. Search procedures are critical because they influence the efficiency of the search, and the quality of the solution.
This paper presents a framework for developing search procedures. The approach relies on \emphcombinators, supporting the features commonly found in search procedures as standard bricks. This approach can speed up the development and experimentation of search procedures, and lead to better search procedures.