/* Learn distribution for professor database. */

:- use_module(library(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).

professor(p0).
professor(p1).
professor(p2).
professor(p3).
professor(p4).
professor(p5).
professor(p6).
professor(p7).
professor(p8).

bayes abi(K)::[h,m,l] ; abi_table ; [professor(K)].

bayes pop(K)::[h,m,l], abi(K) ; pop_table ; [professor(K)].

abi_table([0.3, 0.3, 0.4]).

pop_table([0.3, 0.3, 0.4, 0.3, 0.3, 0.4, 0.3, 0.3, 0.4]).

goal_list([
	abi(p0,h),
	abi(p1,m),
	abi(p2,m),
	abi(p3,m),
	abi(p4,l),
	pop(p5,h),
	abi(p5,_),
	abi(p6,_),
	pop(p7,_)
]).

main :-
	goal_list(L),
	em(L, 0.01, 10, CPTs, Lik),
	writeln(Lik:CPTs).