/* Learn distribution for a sprinkler database. */

:- ['../sprinkler.pfl'].

:- use_module(library(clpbn/learning/em)).

%:- set_em_solver(ve).
%:- set_em_solver(hve).
%:- set_em_solver(bdd).
%:- set_em_solver(bp).
%:- set_em_solver(cbp).

data(t,t,t,t).
data(_,t,_,t).
data(t,t,f,f).
data(t,t,f,t).
data(t,_,_,t).
data(t,f,t,t).
data(t,t,f,t).
data(t,_,f,f).
data(t,t,f,f).
data(f,f,t,t).
data(t,t,_,f).
data(t,f,f,t).
data(t,f,t,t).

main :-
	findall(X, scan_data(X), L),
	em(L, 0.01, 10, CPTs, Lik),
	writeln(Lik:CPTs).

scan_data([cloudy(C),sprinkler(S),rain(R),wet_grass(W)]) :-
	data(C, S, R, W).