I'm interested if there exist any good expository articles or surveys to which I can refer when I write about complexity class operators: operators which transform complexity classes by doing things such as adding quantifiers to them.
Examples of operators
The following can be interpreted as a bare minimum list of operators which an answer should be able to describe. Here, $\mathbf C$ is an arbitrary set of languages, over an arbitrary finite alphabet $\Sigma$.
$\exists \mathbf C := \left\{ L \subseteq \Sigma^\ast \,\left|\, \begin{array}{l} \exists A \in \mathbf C \;\exists f \in O(\mathrm{poly}(n))\;\forall x \in \Sigma^\ast: \\\quad \bigl[x \in L \iff \exists c \in \Sigma^{f(|x|)}: (x,c) \in A \bigr] \end{array} \right\}\right.$
- The $\exists$ operator was apparently introduced by Wagner [1], albeit with the notation $\bigvee\! \mathbf C$ rather than $\exists \mathbf C$. The most famous example of a class constructed in this way is $\mathsf{NP} = \exists \mathsf P$. This operator comes with a complementary quantifier $\forall$, in which the $\exists c$ in the definition is replaced by $\forall c$, which allows one to easily define the entire polynomial hierarchy: for instance, $\mathsf{\Sigma_2^P P = \exists \forall P}$. This may possibly be the first operator which was defined.
$\oplus \mathbf C := \left\{ L \subseteq \Sigma^\ast \,\left|\, \begin{array}{l} \exists A \in \mathbf C \;\exists f \in O(\mathrm{poly}(n)) \;\forall x \in \Sigma^\ast: \\ \quad\bigl[x \in L \iff \#\{ c \in \Sigma^{f(|x|)}: (x,c) \in A \} \not\equiv 0 \pmod{2}\bigr]\end{array} \right\}\right.$
- The $\oplus$ operator is similar to the $\exists$ operator in that $\oplus\mathbf C$ concerns the number of certificates which exist that are verifiable in the class $\mathbf C$, but instead counts the number of certficiates modulo $2$. This can be used to define the classes $\mathsf{\oplus P}$ and $\mathsf{\oplus L}$. Similar operators "$\mathsf{Mod_k \cdot}$" exist for other moduli $k$.
$\mathsf{co}\mathbf C := \Bigl\{ L \subseteq \Sigma^\ast \,\Big|\, \exists A \in \mathbf C \;\forall x \in \Sigma^\ast: \bigl[x \in L \iff x \notin A \bigr] \Bigr\}$
- This is the complementary operator, and is tacitly used to define $\mathsf{ coNP}$, $\mathsf{coC_=P}$, $\mathsf{coMod_kL}$, and a host of other classes from ones which are not known to be closed under complements.
$\mathsf{BP}\cdot\mathbf C := \left\{ (\Pi_0, \Pi_1) \,\left|\, \begin{array}{l} \Pi_0, \Pi_1 \subseteq \Sigma^\ast \;\mathbin\&\; \exists A \in \mathbf C \; \exists f \in O(\mathrm{poly}(n))\;\forall x \in \Sigma^\ast: \\ \quad\left[\begin{array}{l} \bigl(x \in \Pi_0 \Leftrightarrow \#\{c \in \Sigma^{f(|x|)}: (x,c) \in A \} \leqslant \tfrac{1}{3} {|\Sigma^{f(|x|)}|} \bigr) \mathbin\& \\ \bigl(x \in \Pi_1 \Leftrightarrow \#\{c \in \Sigma^{f(|x|)}: (x,c) \in A \} \geqslant \tfrac{2}{3} {|\Sigma^{f(|x|)}|} \bigr) \end{array}\right]\end{array}\right\}\right.$
— with apologies for the spacing
- The $\mathsf{BP}$ operator was apparently introduced by Schöning [2], albeit to define languages (i.e. he did not permit a probability gap) and without using the explicit constants $\tfrac{1}{3}$ or $\frac{2}{3}$. The definition here yields promise-problems instead, with YES-instances $\Pi_1$ and NO-instances in $\Pi_0$. Note that $\mathsf{BPP = BP\cdot P}$, and $\mathsf{AM = BP\cdot NP}$; this operator was used by Toda and Ogiwara [3] to show that $\mathsf{P^{\#P} \subseteq BP\cdot\oplus P}$.
Remarks
Other important operators which one can abstract from the definitions of standard classes are $\mathsf{C_= \cdot\mathbf C}$ (from the classes $\mathsf{C_= P}$ and $\mathsf{C_= L}$) and $\mathsf C\cdot\mathbf C$ (from the classes $\mathsf{PP}$ and $\mathsf{PL}$). It is also implicit in most of the literature that $\mathsf{F\cdot}$ (yielding function problems from decision classes) and $\#\cdot$ (yielding counting classes from decision classes) are also complexity operators.
There is an article by Borchert and Silvestri [4] which propose to define an operator for each class, but which does not seem to be referred to much in the literature; I also worry that such a general approach may have subtle definitional issues. They in turn refer to a good presentation by Köbler, Schöning, and Torán [5], which however is now over 20 years old, and also seems to miss out $\oplus$.
Question
What book or article is a good reference for complexity class operators?
References
[1]: K. Wagner, The complexity of combinatorial problems with succinct input representations, Acta Inform. 23 (1986) 325–356.
[2]: U. Schöning, Probabilistic complexity classes and lowness, in Proc. 2nd IEEE Conference on Structure in Complexity Theory, 1987, pp. 2-8; also in J. Comput. System Sci., 39 (1989), pp. 84-100.
[3]: S. Toda and M. Ogiwara, Counting classes are at least as hard as the polynomial-time hierarchy, SIAM J. Comput. 21 (1992) 316–328.
[4]: B. and Borchert, R. Silvestri, Dot operators, Theoretical Computer Science Volume 262 (2001), 501–523.
[5]: J. Köbler, U. Schöning, and J. Torán, The Graph Isomorphism Problem: Its Structural Complexity, Birkhäuser, Basel (1993).