In familiar design domains, expert designers are able to quickly focus on “good designs”, based on constraints they have learned while exploring the design space. This ability to learn novel constraints is a key aspect in which design differs from traditional optimization; the constraints on the search are constantly re-defined based on the search experience itself. Moreover, such constraints are often implicit, i.e. the designer may find it difficult to articulate these constraints and provide reasons for them. Here, we ask if computer-aided-design systems can discover such implicit constraints in well-understood design situations, where the function can be articulated clearly enough to be quantified in terms of performance metrics. By considering function across a large number of design instances, patterns of functional feasibility may be learned as a byproduct of evaluating different designs. We show how patterns of functional infeasibility result in novel constraints that ...