In mathematical logic, fixed-point logics are extensions of classical predicate logic that have been introduced to express recursion. Their development has been motivated by descriptive complexity theory and their relationship to database query languages, in particular to Datalog.

Least fixed-point logic was first studied systematically by Yiannis N. Moschovakis in 1974, and it was introduced to computer scientists in 1979, when Alfred Aho and Jeffrey Ullman  suggested fixed-point logic as an expressive database query language.

Partial fixed-point logic 
For a relational signature X, FO[PFP](X) is the set of formulas formed from X using first-order connectives and predicates, second-order variables as well as a partial fixed point operator  used to form formulas of the form , where  is a second-order variable,  a tuple of first-order variables,  a tuple of terms and the lengths of  and  coincide with the arity of . 

Let  be an integer,  be vectors of  variables,  be a second-order variable of arity , and let  be an FO(PFP,X) function using  and  as variables. We can iteratively define  such that  and  (meaning  with  substituted for the second-order variable ). Then, either there is a fixed point, or the list of s is cyclic.

 is defined as the value of the fixed point of  on  if there is a fixed point, else as false. Since s are properties of arity , there are at most  values for the s, so with a polynomial-space counter we can check if there is a loop or not.

It has been proven that on ordered finite structures, a property is expressible in FO(PFP,X) if and only if it lies in PSPACE.

Least fixed-point logic 
Since the iterated predicates involved in calculating the partial fixed point are not in general monotone, the fixed-point may not always exist. 
FO(LFP,X), least fixed-point logic, is the set of formulas in FO(PFP,X) where the partial fixed point is taken only over such formulas  that only contain positive occurrences of  (that is, occurrences preceded by an even number of negations). This guarantees monotonicity of the fixed-point construction (That is, if the second order variable is , then  always implies ).

Due to monotonicity, we only add vectors to the truth table of , and since there are only  possible vectors we will always find a fixed point before  iterations. The Immerman-Vardi theorem, shown independently by Immerman and Vardi, shows that FO(LFP,X) characterises P on all ordered structures.

The expressivity of least-fixed point logic coincides exactly with the expressivity of the database querying language Datalog, showing that Datalog can express exactly those queries executable in polynomial time.

Inflationary fixed-point logic
Another way to ensure the monotonicity of the fixed-point construction is by only adding new tuples to  at every stage of iteration, without removing tuples for which  no longer holds. Formally, we define  as  where .  

This inflationary fixed-point agrees with the least-fixed point where the latter is defined. Although at first glance it seems as if inflationary fixed-point logic should be more expressive than least fixed-point logic since it supports a wider range of fixed-point arguments, in fact, every FO[IFP](X)-formula is equivalent to an FO[LFP](X)-formula.

Simultaneous induction
While all the fixed-point operators introduced so far iterated only on the definition of a single predicate, many computer programs are more naturally thought of as iterating over several predicates simultaneously. By either increasing the arity of the fixed-point operators or by nesting them, every simultaneous least, inflationary or partial fixed-point can in fact be expressed using the corresponding single-iteration constructions discussed above.

Transitive closure logic 
Rather than allow induction over arbitrary predicates, transitive closure logic allows only transitive closures to be expressed directly.

FO[TC](X) is the set of formulas formed from X using first-order connectives and predicates, second-order variables as well as a transitive closure operator  used to form formulas of the form , where  and  are tuples of pairwise distinct first-order variables,  and  tuples of terms and the lengths of , ,  and  coincide.

TC is defined as follows: Let  be a positive integer and  be vectors of  variables. Then  is true if there exist  vectors of variables  such that , and for all ,  is true. Here,  is a formula written in FO(TC) and  means that the variables  and  are replaced by  and .

Over ordered structures, FO[TC] characterises the complexity class NL. This characterisation is a crucial part of Immerman's proof that NL is closed under complement (NL = co-NL).

Deterministic transitive closure logic 
FO[DTC](X) is defined as FO(TC,X) where the transitive closure operator is deterministic. This means that when we apply , we know that for all , there exists at most one  such that .

We can suppose that  is syntactic sugar for  where .

Over ordered structures, FO[DTC] characterises the complexity class L.

Iterations 
The fixed-point operations that we defined so far iterate the inductive definitions of the predicates mentioned in the formula indefinitely, until a fixed point is reached. In implementations, it may be necessary to bound the number of iterations to limit the computation time. The resulting operators are also of interest from a theoretical point of view since they can also be used to characterise complexity classes.

We will define first-order with iteration, ; here  is a (class of) functions from integers to integers, and for different classes of functions  we will obtain different complexity classes .

In this section we will write   to mean  and  to mean . We first need to define quantifier blocks (QB), a quantifier block is a list  where the s are quantifier-free FO-formulae and s are either  or . If  is a quantifiers block then we will call  the iteration operator, which is defined as  written  time. One should pay attention that here there are  quantifiers in the list, but only  variables and each of those variable are used  times.

We can now define  to be the FO-formulae with an iteration operator whose exponent is in the class , and we obtain the following equalities:

  is equal to FO-uniform ACi, and in fact  is FO-uniform AC of depth .
  is equal to NC.
  is equal to PTIME. It is also another way to write FO(IFP).
  is equal to PSPACE. It is also another way to write FO(PFP).

Notes

References 
 
 

Descriptive complexity
Database theory
Predicate logic