### Expressing versus Proving: Relating Forms of Complexity in Logic

A. Kolokolova
2010 Journal of Logic and Computation
Complexity in logic comes in many forms. In finite model theory, it is the complexity of describing properties, whereas in proof complexity it is the complexity of proving properties in a proof system. Here we consider several notions of complexity in logic, the connections among them, and their relationship with computational complexity. In particular, we show how the complexity of logics in the setting of finite model theory is used to obtain results in bounded arithmetic, stating which
more » ... ons are provably total in certain weak systems of arithmetic. For example, the transitive closure function (testing reachability between two given points in a directed graph) is definable using only NL-concepts (where NL is the non-deterministic log-space complexity class), and its totality (and, thus, the closure of NL under complementation) is provable within NL-reasoning. Lastly, we will touch upon the topic of formalizing complexity theory using logic, and the meta-question of complexity of logical reasoning about complexity-theoretic statements. This is intended to be a high-level overview, suitable for readers who are not familiar with complexity theory and complexity in logic. The computational complexity setting The computational complexity of a problem is measured in terms of amount of resources necessary for an algorithm to solve the problem. The conventional resources are space (memory) and time. Algorithms (programs) can be deterministic and non-deterministic; in the latter case we sometimes talk about complexity of verifying a (guessed) solution. For example, the famous class NP consists of problems solvable by the non-deterministic polynomial-time algorithms (that is, problems which have solutions verifiable by polynomial-time algorithms). Similarly, the problems solvable by non-deterministic algorithms using amount of space logarithmic in the length of the input comprise the class NL. An important feature which supports the concept of a complexity class as a useful framework is that most of the complexity classes are robust, in a sense that definitions in different frameworks, often with different computational models often give the same class of algorithms. In particular, a composition or a Boolean combination of problems in the class is usually still within the same class (with the notable exception of complementation: for non-deterministic time classes the closure under complementation is a major open problem). One of the most robust in this respect is the class polynomial time, which is closed under Boolean operators, composition of functions and more. For a contrast, the class of problems solvable in the time linear in their input does not have such nice closure properties. This is one of the reasons that the class P of polynomial-time solvable problems is has been a more popular object of research than LinT IM E.