title: AC0
text: # AC0
  
  $AC^0$ is a complexity class used in circuit complexity. It is the smallest class in the AC hierarchy, and consists of all families of circuits of depth O(1) and polynomial size, with unlimited-fanin AND gates and OR gates (we allow NOT gates only at the inputs). It thus contains $NC^0,$ which has only bounded-fanin AND and OR gates.
  
  ## Example problems
  
  Integer addition and subtraction are computable in $AC^0,$ but multiplication is not (specifically, when the inputs are two integers under the usual binary or base-10 representations of integers).
  
  Since it is a circuit class, like P/poly, $AC^0$ also contains every unary language.
  
  ## Descriptive complexity
  
  From a descriptive complexity viewpoint, DLOGTIME-uniform $AC^0$ is equal to the descriptive class FO+BIT of all languages describable in first-order logic with the addition of the BIT predicate, or alternatively by FO(+, ×), or by Turing machine in the logarithmic hierarchy.
  
  ## Separations
  
  In 1984 Furst, Saxe, and Sipser showed that calculating the parity of the input bits (unlike the aforementioned addition/subtraction problems above which had two inputs) cannot be decided by any $AC^0$ circuits, even with non-uniformity. It follows that $AC^0$ is not equal to $NC^1,$ because a family of circuits in the latter class can compute parity. More precise bounds follow from switching lemma. Using them, it has been shown that there is an oracle separation between the polynomial hierarchy and PSPACE.
  
  