Probabilistic reasoning in logic programming