  Today, many different probabilistic programming languages exist and even more
inference mechanisms for these languages. Still, most logic programming based
languages use backward reasoning based on SLD resolution for inference. While
these methods are typically computationally efficient, they often can neither
handle infinite and/or continuous distributions, nor evidence. To overcome
these limitations, we introduce distributional clauses, a variation and
extension of Sato's distribution semantics. We also contribute a novel
approximate inference method that integrates forward reasoning with importance
sampling, a well-known technique for probabilistic inference. To achieve
efficiency, we integrate two logic programming techniques to direct forward
sampling. Magic sets are used to focus on relevant parts of the program, while
the integration of backward reasoning allows one to identify and avoid regions
of the sample space that are inconsistent with the evidence.
