Logic and the complexity of reasoning

What does logic have to do with computational approaches to the study of cognition? Very little, it would seem. For one thing, people (even trained logicians) are unquestionably very bad at it, compared to their skill at (say) reading or recognizing tunes. And computers have a hard time with it too: the computational activity that goes with logic, theorem proving of some sort, appears to be computationally intractable. Given its apparent difficulty, it seems quite unlikely that logic could be at the root of normal, everyday thinking. What I want to suggest here, however, is that rather than closing the book on logic (except perhaps as a mathematical tool for theoreticians so inclined), these facts force us into a less idealized view of logic, one that takes very seriously the idea that certain computational tasks are relatively easy, and others more difficult. In other words, it leads us to consider the computational complexity of logic in its application to cognition. Perhaps the most striking and puzzling fact about cognition from a computational standpoint is how it can be so easy in the presence of such a vast number of potentially relevant beliefs. How is it, for example, that we can effortlessly answer questions like: