We show that Propositional Dynamic Logic (PDL) has the Craig Interpolation Property. This question has been open for many
years. Three proof attempts were published, but later criticized in the literature or retracted. Our proof is based on the
main ideas from Borzechowski (1988). We define a cyclic tableau system for PDL with a loading mechanism to recognize successful
repeats. For this system, we show soundness and completeness via a game. To show interpolation, we modify Maehara's method
to work for tableaux with repeats: we first define pre-interpolants at each node, and then use a quasi-tableau to define interpolants
for clusters (strongly connected components). In different terms, our method solves the fixpoint equations that characterize
the desired interpolants, and the method ensures that the solutions to these equations can be expressed within PDL. The proof
is constructive and we show how to compute interpolants. We also make available a Haskell implementation of the proof system
that provides interpolants. Lastly, we mention ongoing work to formally verify this proof in the interactive theorem prover
Lean, and several questions for future work.