I read The Complexity of Theorem-Proving Procedures by Stephen A. Cook (1971). Cook explains how to create a boolean formula $\Phi$ from $(M,w)$, where $M$ is a non-deterministic Turing machine that always halts in a polynomial number of steps and $w$ is a string in $\Sigma^*$ so that $\Phi$ is satisfiable if and only if $M$ accepts $w$.
- Is every accepting path/route of $M$ with input $w$ a satisfying assignment of $\Phi$?
- Is every rejecting path/route of $M$ with input $w$ a falsifying assignment of $\Phi$?
- Is the number of satisfying assignments of $\Phi$ equal to the number of accepting routes/paths of $M$ with input $w$?
- Is the number of falsifying assignments of $\Phi$ equal to the number of rejecting routes/paths of $M$ with input $w$?