The field of

*descriptive**complexity*studies which computational complexity classes can be characterized by the power of the logic needed to express languages (sets of finite strings) in them. A string w = w 1 ···w n in a finite alphabet A can be represented by a finite structure with domain D = {1,...,n}, unary predicates P a for each a ∈ A, satisfied by those indices i such that w i = a, and additional predicates which serve to uniquely identify which index is which (typically, one takes the graph of the successor function on D or the order relation