Probabilistic logic programs are logic programs in which some of the facts are annotated with probabilities.
ProbLog is a tool that allows you to intuitively build programs that do not only encode complex interactions between a large sets of heterogenous components but also the inherent uncertainties that are present in real-life situations.
The engine tackles several tasks such as computing the marginals given evidence and learning from (partial) interpretations. ProbLog is a suite of efficient algorithms for various inference tasks. It is based on a conversion of the program and the queries and evidence to a weighted Boolean formula. This allows us to reduce the inference tasks to well-studied tasks such as weighted model counting, which can be solved using state-of-the-art methods known from the graphical model and knowledge compilation literature.
ProbLog makes it easy to express complex, probabilistic models.
0.3::stress(X) :- person(X). 0.2::influences(X,Y) :- person(X), person(Y). smokes(X) :- stress(X). smokes(X) :- friend(X,Y), influences(Y,X), smokes(Y). 0.4::asthma(X) <- smokes(X). person(angelika). person(joris). person(jonas). person(dimitar). friend(joris,jonas). friend(joris,angelika). friend(joris,dimitar). friend(angelika,jonas).
For an introduction, please consult the following papers
ProbLog2 is our 2nd generation engine to reason with the ProbLog language. The current engine builds on logic programming, knowledge compilation, the distribution semantics and probabilistic, graphical models. It allows you to:
For more information about these inference and learning tasks and how they are solved in ProbLog2, please consult the following papers.
evidence(smokes(angelika),false). evidence(influences(jonas,joris),false). query(smokes(joris)).
You can try out ProbLog using our online interface.
ProbLog2 binaries and source are available for download. The only requirements are Python 3 and YAP Prolog. ProbLog2 is licensed under the LGPL3 license (contact us for alternative licenses). See the included README file for detailed installation instructions.
If you discover a bug, please report it using our bug tracking system: sign in here, enter a summary and description of the bug, press "Submit issue".
(This requires a Google account. If you do not have this, please report your bug using the mailing list instead.)
Other people who contributed to ProbLog1 and 2 (in alphabetical order):
Our colleagues from the probabilistic programming community.