\documentstyle{article} %%\usepackage{amsmath,amssymb} \input{preamble.tex} \newcommand{\ppoly}{P/$poly$} %% P/Poly shorthand \newcommand{\implies}{\Longrightarrow} \begin{document} \lecture{12}{March 18, 1999}{Dan Spielman}{Jamie Rackmill} \section*{Toda's Theorem Continued} We continue in our proof of Toda's theorem, that $PH \subseteq P^{\# P}$. In the last lecture we proved that $PH \subseteq \rm{BP} \cdot \bigoplus \cdot P$. Here we complete the proof by showing that $\rm{BP} \cdot \bigoplus \cdot P \subseteq P^{\# P}$ using different techniques from last time. We first recall the meaning of $L \in \rm{BP} \cdot \bigoplus \cdot P$. This expression means that there exists a language $A \in P$, functions $a(n)$, $b(n) \subseteq n^{\O(n)}$ such that \begin{itemize} \item $w \in L \implies Pr[|\{y \mbox{ such that} |y| = b(|w|), (w,x,y) \in A \}| $ is odd$] \geq \frac{2}{3}$ \item $w \notin L \implies Pr[|\{y \mbox{ such that} |y| = b(|w|), (w,x,y) \in A \}| $ is odd$] \leq \frac{1}{3}$ , \end{itemize} where the probabilities are over $x$ chosen uniformly from $\{0,1 \}^{a(n)}$. We will determine by an oracle call which of the two cases we are in. We let $M$ be a nondeterministic Turing Machine such that on input $(w,x)$, it nondeterministically chooses $y$ and accepts if $(w,x,y) \in A$. We then let $f = \# M$, the number of accepting computations of $M$ on its input. We see that \begin{itemize} \item $w \in L \implies Pr_{|x|=a(|w|)}[f(w,x) $is odd$] \geq \frac{2}{3}$ \item $w \notin L \implies Pr_{|x|=a(|w|)}[f(w,x) $is odd$] \leq \frac{1}{3}$ \end{itemize} We are interested only in whether $f(w,x)$ is even or odd. This corresponds to the last bit in the binary representation of $f(w,x)$. We want to create a function $f'$ that puts zeros between the least significant digit and all of the other digits, such that we have enough zeros when we add up $f'(w,x)$, for all values of $x$, the rightmost bits of the sum will be the number of ones in the righthand column. To accomplish this we examine the manipulation of $\# P$ functions. \begin{lemma}\label{L1} Let $f$, $g \in \# P$. Then \begin{description} \item[a.] $f+g \in \# P$ \item[b.] $f \cdot g \in \# P$ \item[c.] $c(|w|) \cdot f(w) \in \# P$ where $c(|w|)$ is a positive integer constant that can be computed in time polynomial in the length of w \item[d.] $f(w)^{d(|w|)} \in \# P$ where $d(|w|)$ is a positive integer that can be computed in time polynomial in the length of w, and $d(|w|) \subseteq |w|^{O(1)}$ \end{description} \end{lemma} \begin{proof-of-lemma}{\ref{L1}} Let $f = \# M_{1}$ and $g = \# M_{2}$ \begin{description} \item[a.] We create a machine where the first step of the machine is to nondeterministically choose $M_{1}$ or $M_{2}$. Then the total number of accepting paths in this new machine is the number of accepting paths in $M_{1}$ plus the number of accepting paths in $M_{2}$. \item[b.] We create a machine that runs $M_{1}$. If a computation path accepts, it then runs $M_{2}$ and accepts only if both machines accept. Then the total number of accepting paths is the product of the number of accepting paths of $M_{1}$ times the number of accepting paths of $M_{2}$. \item[c.] We create a machine that computes $c(|w|)$ in polynomial time. The machine then nondeterministically chooses $i$, where $1 \leq i \leq c(|w|)$. This takes time $\lceil \log c(|w|) \rceil$ as $c(|w|)$ is at most exponential in the size of $w$. The machine then ignores $i$ and runs M. The number of accepting paths is thus $c(|w|)$ times the number of accepting paths of $M_{1}$. \item[d.] We create a machine that computes $d(|w|)$. Then for $i = 1$ to $d(|w|)$ this machine runs $M_{1}$ and rejects if $M_{1}$ rejects at any point, and accepts if along the computation path $M_{1}$ always accepts. This machine has $f^{d(|w|)}$ accepting computation paths. \end{description} \end{proof-of-lemma} Given $f \in \# P$ we want to design a function in $\# P$ that is some polynomial in $f$. \begin{definition}\label{D1} $h(x) = 3x^{4} + 4x^{3}$ \end{definition} \begin{claim}\label{Cl1} \begin{eqnarray*} x \equiv 0 \mbox{ }mod \mbox{ } 2^{c} \implies h(x) \equiv 0 \mbox{ } mod \mbox{ } 2^{2c} \end{eqnarray*} \begin{eqnarray*} x \equiv -1 \mbox{ } mod \mbox{ }2^{c} \implies h(x) \equiv -1 \mbox{ } mod \mbox{ }2^{2c} \end{eqnarray*} \end{claim} \begin{proof}\ref{Cl1} \begin{eqnarray*} x & = & -1 + a2^{c} \mbox{ implies}\\ h(x) &=& 3 - 12a2^{c} + 2^{2c}? -4 + 12a2^{c} + 2^{2c}? = -1 + 2^{2c}? \end{eqnarray*} where $?$ represents other factors \end{proof} \begin{definition}\label{D2} \begin{eqnarray*} h^{(c)}(x) = h^{(c-1)}(h(x)) \end{eqnarray*} \begin{eqnarray*} h^{(1)}(x) = h(x) \end{eqnarray*} \end{definition} \begin{corollary}\label{Co1} \begin{eqnarray*} x \equiv 1 \mbox{ } mod \mbox{ } 2 \implies h^{(c)}(x) \equiv -1 \mbox{ } mod \mbox{ } 2^{2^{c}} \end{eqnarray*} \begin{eqnarray*} x \equiv 0 \mbox{ } mod \mbox{ } 2 \implies h^{(c)}(x) \equiv 0 \mbox{ } mod \mbox{ } 2^{2^{c}} \end{eqnarray*} \end{corollary} Recall that we choose $x$, $|x| = a(|w|)$, at random and consider whether $f(w,x)$ is odd. For $w \in L$ the probability that $x$ is odd is $\geq \frac{2}{3}$. For $w \notin L$ the probability that $x$ is odd is $\leq \frac{1}{3}$. We consider $h^{(\lceil \log a(|w|) \rceil)}(f(w,x))$. If $f(w,x)$ is odd, then this is equivalent to $-1$ $ mod $ $2^{2^{\lceil \log a(|w|) \rceil}}$ and if $f(w,x)$ is even, then this is equivalent to $0 $ $mod$ $ 2^{2^{\lceil \log a(|w|) \rceil}}$. We sum this over all choices for $x$. There are $2^{a(|w|)}$ choices for $x$ so there are enough zeroes to count how many ones we have here. Assume that we have proved that $h^{\lceil \log a(|w|) \rceil}(f(w,x)) = \# M'(w,x)$, where Turing Machine $M'$ computes $f'$. We can then construct $M''$ to choose $x$ nondeterministically and run $M'(w,x)$. Then $\# M'' = \sum_{|x| = a(|w|)} \# M'(w,x) = \sum_{|x| = a(|w|)} h^{(\lceil \log a(|w|) \rceil)}(w,x)$. Therefore, $\# M'' = -$ the number of $x$ for which $w(x)$ is odd $mod$ $ 2^{2^{\lceil \log a(|w|) \rceil}}$. The $P^{\# P}$ machine makes one query. It counts the number of accepting paths of $M''(w)$ and takes the answer $mod 2^{2^{\lceil \log a(|w|) \rceil}} = m$. It then treats the answer as a number between $-m$ and $0$ and accepts if the answer is less than $-\frac{2}{3} 2^{a(|w|)}$. We still need to prove that $M'$ is a polynomial time nondeterministic Turing Machine. To do this, we need to show that if $f \in \# P$, where $f = \# M$, $M$ a nondeterministic polynomial time Turing Machine,then for any polynomial function $a(|w|)$, $h^{\lceil \log a(|w|) \rceil}(f(w,x)) \in \# P$. The expression $h^{\lceil \log a(|w|) \rceil}$ is a one variable polynomial, and its degree is polynomial in the length of $w$. Therefore, it is computable in polynomial time. $M'$ can nondeterministically chooose a mononomial $c_{i}X^{i}$, nondeterministically choose $1 \leq j \leq c_{i}$ and run $M$ on $(w,x)$ $i$ times, and accept if it always accepts. \end{document}