  Consider a randomized algorithm that draws samples exactly from a
distribution using recursion. Such an algorithm is called a perfect simulation,
and here a variety of methods for building this type of algorithm are shown to
derive from the same result: the Fundamental Theorem of Perfect Simulation
(FTPS). The FTPS gives two necessary and sufficient conditions for the output
of a recursive probabilistic algorithm to come exactly from the desired
distribution. First, the algorithm must terminate with probability 1. Second,
the algorithm must be locally correct, which means that if the recursive calls
in the original algorithm are replaced by oracles that draw from the desired
distribution, then this new algorithm can be proven to be correct. While it is
usually straightforward to verify these conditions, they are surprisingly
powerful, giving the correctness of Acceptance/Rejection, Coupling from the
Past, the Randomness Recycler, Read-once CFTP, Partial Rejection Sampling,
Partially Recursive Acceptance Rejection, and various Bernoulli Factories. We
illustrate the use of this algorithm by building a new Bernoulli Factory for
linear functions that is 41\% faster than the previous method.
