 Rational analyses separate the goal of behavior from the mechanisms that cause behavior. Thus, when an organism’s observed behavior in an environment does not agree with the behavior prescribed by a rational analysis for that environment, there are traditionally three responses. One strategy is to change the specifications of the problem, by introducing an intermediate step or changing the goal altogether, or altering the environmental constraints, et cetera (Anderson &amp; Schooler 1991; Oaksford &amp; Chater 1994). Another strategy is to argue that mechanisms matter after all, so details of human psychology are taken into an alternative account (Newell &amp; Simon 1972; Gigerenzer, Todd, et al. 1999; Todd, Gigerenzer, et al. 2012). A third option is to enrich rational analysis by incorporating computational mechanisms directly into the model (Russell &amp; Subramanian 1995; Chater 2014). Lewis, Howes, and Singh, for instance, propose to construct theories of rationality from (i) structural features of the task environment; (ii) the bounded machine the decision-process will run on, about which they consider four different classes of computational resources that may be available to an agent; and (iii) a utility function to specify the goal, numerically, so as to supply an objective function against which to score outcomes (Lewis et al. 2014).