  This paper introduces a categorical framework to study the exact and
approximate semantics of probabilistic programs. We construct a dagger
symmetric monoidal category of Borel kernels where the dagger-structure is
given by Bayesian inversion. We show functorial bridges between this category
and categories of Banach lattices which formalize the move from kernel-based
semantics to predicate transformer (backward) or state transformer (forward)
semantics. These bridges are related by natural transformations, and we show in
particular that the Radon-Nikodym and Riesz representation theorems - two
pillars of probability theory - define natural transformations.
  With the mathematical infrastructure in place, we present a generic and
endogenous approach to approximating kernels on standard Borel spaces which
exploits the involutive structure of our category of kernels. The approximation
can be formulated in several equivalent ways by using the functorial bridges
and natural transformations described above. Finally, we show that for sensible
discretization schemes, every Borel kernel can be approximated by kernels on
finite spaces, and that these approximations converge for a natural choice of
topology.
  We illustrate the theory by showing two examples of how approximation can
effectively be used in practice: Bayesian inference and the Kleene star
operation of ProbNetKAT.
