ProbLog is a simple language for probabilistic reasoning. It allows you to write logic programs that account for uncertainty among the facts and propositions, and it can calculate the probabilities of hypothesis or events based on your model. An online tutorial with a web-based calculator is available here.
Of all the intellectual techniques available for those who pursue a rational worldview, I believe none are more important that Bayesian inference. By saying this is “most important,” I don’t mean to disregard the fundamentals of logic, mathematics, probability, statistics, etc — those are all prerequisites to understanding Bayesian techniques. There’s been a lot of talk about Bayesianism recently in skeptical circles, with Richard Carrier drawing a lot of attention for his advocacy of Bayesian methods in history. I appreciate that there are a lot of philosophical arguments surrounding Carrier and others’ use and application of Bayes’ theorem. As with all reasoning techniques, Bayesian reasoning can be used well or it can be used poorly.
In order to promote understanding of probabilistic reasoning, I’ve been looking for tools that can help people create structured probabilistic arguments, and to help them perform the calculations. On the internet you may find a number of simple Bayesian calculators and demonstrations, but most of these are not really useful for examining sophisticated theories and inferences. After years of sifting through online utilities, I believe one has finally emerged that is both powerful and accessible to any reasonably serious student.
ProbLog is an extension of the ProLog language for logic programming. In ordinary ProLog, the user may enter a series of logical statements along with some “ground facts,” and the system reveals the logical consequences that follow from that information. ProbLog extends ProLog by allowing probabilistic annotations — the ground facts are not simply “true,” they are true only with a specified probability. The resulting language provides a powerful tool for managing uncertainty within a framework of logical inferences. Best of all, the ProbLog team has provided an online tutorial complete with a web-based ProbLog interpreter. Although ProbLog is designed to facilitate applications in artificial intelligence and data mining, I think it could be valuable for people trying to perform sophisticated reasoning on tough theoretical questions.
So what is the value of using a language like ProbLog, instead of doing hand calculations? First, I believe it is always important to structure our reasoning as precisely as possible. With hand calculations I could easily make two kinds of mistakes — model errors or numerical errors. By representing that reasoning as a program, I can re-examine the model and the numbers, giving more chances to correct those errors. Second, a program can be passed around to other people, who can critique or revise your model with exacting precision, or perhaps discover things about it that you missed yourself. Of course a program can easily become so ugly that no one wants to look at it — you have to be a decent writer or it won’t work. But let’s just say that if someone tells me that they’ve calculated a 90% probability that Bigfoot exists, I’d love to see that calculation spelled out in something like ProbLog.