  The $\textbf{P}$ vs. $\textbf{NP}$ problem is an important problem in
contemporary mathematics and theoretical computer science. Many proofs have
been proposed to this problem. This paper proposes a theoretic proof for
$\textbf{P}$ vs. $\textbf{NP}$ problem. The central idea of this proof is a
recursive definition for Turing machine (shortly TM) that accepts the encoding
strings of valid TMs. By the definition, an infinite sequence of TM is
constructed, and it is proven that the sequence includes all valid TMs. Based
on these TMs, the class $\textbf{D}$ that includes all decidable languages and
the union and reduction operators are defined. By constructing a language
$\textbf{Up}$ of the union of $\textbf{D}$, it is proved that
$\textbf{P}=\textbf{Up}$ and $\textbf{Up}=\textbf{NP}$, and the result
$\textbf{P}=\textbf{NP}$ is proven.
