Probabilistic Logic Programming Tutorial


Fabrizio Riguzzi and Giuseppe Cota

University of Ferrara, Italy


Probabilistic Logic Programming (PLP) introduces probabilistic reasoning in Logic Programs in order to represent uncertain information. It is receiving an increased attention due to its applications in particular in the Machine Learning field.
In this tutorial we will show how to use cplint on SWISH, a web application for performing inference and learning on user-defined probabilistic logic programs. You will learn how to write a probabilistic logic program processable by cplint on SWISH, how to execute the different types of queries allowed by this application and how to perform learning.
cplint on SWISH is based on SWISH, a web framework for Logic Programming, and on cplint , a suite of programs for inference and learning of Logic Programs with annotated disjunctions (LPADs) . It keeps the same syntax of cplint and as cplint it uses Logic Programs with annotated disjunctions (LPADs) as formalism to represent probabilistic logic programs.
The tutorial is structured as follows. provides an introduction to LPADs. shows how to write an LPAD processable by cplint on SWISH and how to perform simple and conditional exact inference. and illustrate some features for approximate inference. describes how to learn the parameters of an LPAD, whereas explains how to perform structure learning. Finally shows how to test a learned program.


  1. Logic Program with Annotated Disjunction
  2. Writing an LPAD and Asking a Query with Exact Inference
  3. Approximate Inference
  4. Approximate conditional inference with Rejection Sampling and Metropolis-Hastings MCMC
  5. Unconditional Queries over Hybrid Programs
  6. Conditional Queries over Hybrid Programs
  7. Parameter Learning
  8. Structure Learning
  9. How to Test a Program

The complete tutorial is freely available at


  1. E. Bellodi and F. Riguzzi. Expectation Maximization over binary decision diagrams for probabilistic logic programs. Intelligent Data Analysis, 17(2):343-363, IOS Press, 2013.
  2. E. Bellodi and F. Riguzzi. Experimentation of an expectation maximization algorithm for probabilistic logic programs. Intelligenza Artificiale, 8(1):3-18, IOS Press, 2012.
  3. Elena Bellodi and Fabrizio Riguzzi. Structure learning of probabilistic logic programs by searching the clause space. Theory and Practice of Logic Programming, 15(2):169-212, Cambridge University Press, 2015.
  4. F. Riguzzi and T. Swift. The PITA system: Tabling and answer subsumption for reasoning under uncertainty. Theory and Practice of Logic Programming, 27th International Conference on Logic Programming (ICLP’11) Special Issue, 11(4-5), pages 433-449, 2011.
  5. Riguzzi F. Extended semantics and inference for the Independent Choice Logic. Log. J. IGPL 2009, 17(6), pages 589-629, 2009.
  6. A. Itai and M. Rodeh. Symmetry Breaking in Distributed Networks.Information and Computation, 88(1). 1990.
  7. Gorlin, Andrey, C. R. Ramakrishnan, and Scott A. Smolka. Model checking with probabilistic tabled logic programming. Theory and Practice of Logic Programming 12.4-5 (2012).
  9. Nampally, Arun, and C. R. Ramakrishnan. Adaptive MCMC-Based Inference in Probabilistic Logic Programs. arXiv preprint arXiv:1403.6036 (2014).
  11. The ACE Data Mining System User’s Manual
  12. J. Vennekens, S. Verbaeten, and M. Bruynooghe. Logic programs with annotated disjunctions. In International Conference on Logic Programming, volume 3131 of LNCS, pages 195-209. Springer, 2004.
  13. D. Nitti, T. De Laet,L. De Raedt. Probabilistic logic programming for hybrid relational domains. Mach. Learn. 103(3), 407–449 (2016)