Pascal (probabilistic inductive constraint logic) is an algorithm for learning probabilistic integrity constraints. It was proposed in
Fabrizio Riguzzi, Elena Bellodi, Riccardo Zese, Marco Alberti, and Evelina Lamma. Probabilistic inductive constraint logic. Machine Learning, 110:723–754, 2021. doi:10.1007/s10994-020-05911-6
It contains modules for both structure and parameter learning.
You can find the manual at http://friguzzi.github.io/pascal/.
You can try it online at http://cplint.eu.
This is an SWI-Prolog pack.
It can be installed with pack_install/1
$ swipl
?- pack_install(pascal).
You can upgrade the pack with
$ swipl
?- pack_upgrade(pascal).
It requires the pack lbfgs
https://github.com/friguzzi/lbfgs
It is installed automatically when installing pack pascal
or can be installed manually as
$ swipl
?- pack_install(lbfgs).
$ cd <pack>/pascal/prolog/examples
$ swipl
?- [bongardkeys].
?- induce_pascal([train]),T).
$ swipl
?- [library(test_pascal)].
?- test_pascal.
Use the Google group https://groups.google.com/forum/#!forum/cplint.