1:- module(test_mc,
    2  [test_mc/0,test_mc_rev/0]).    3:- use_module(library(plunit)).    4
    5:-set_random(seed(100)).    6:-use_module(library(cplint_test/cplint_test)).    7
    8test_list([
    9    coinmsw_mc,
   10    coinmsw_mc_memo,
   11    binomial,
   12    binomial_user,
   13    coinmc,
   14    threesideddicemc,
   15    markov_chain,
   16    prefix,
   17    pre_plcg,
   18    pctl_slep,
   19    arithm,
   20    gaussian_mixture,
   21    %kalman_filter,
   22    gauss_mean_est,
   23    gauss_mean_est_user,
   24    slp_pdcg,
   25    indian_gpa,
   26    indian_gpadc,
   27    nballs,
   28    nballsdc,
   29    simpsonmc,
   30    viralmc,
   31    uwcsemc,
   32    bitcoin_attack,
   33    lda,
   34    ship,
   35    fruit,
   36    multinomial
   37  ]).
   38
   39test_mc:-
   40  test_list(L),
   41	run_tests(L).
   42
   43test_mc_rev:-
   44  test_list(L),
   45	reverse(L,Rev),
   46  run_tests(Rev).
   47
   48
   49:- begin_tests(coinmc, []).   50
   51:-ensure_loaded(library(examples/coinmc)).   52
   53test(heads):-
   54  run((
   55	mc_sample(heads(coin),1000,P),
   56  close_to(P,0.51))).
   57
   58test(tails):-
   59	run((
   60	mc_sample(tails(coin),1000,P),
   61	close_to(P,0.49)
   62	)).
   63
   64test(tails_o):-
   65	run((
   66	mc_sample(tails(coin),1000,P,[successes(S),failures(F),bar(B)]),
   67	close_to(P,0.49), close_to(S,490,50), close_to(F,510,50), is_dict(B,c3)
   68	)).
   69
   70:- end_tests(coinmc).   71
   72:- begin_tests(threesideddicemc, []).   73
   74:-ensure_loaded(library(examples/threesideddicemc)).   75
   76test(on_0_1):-
   77	run((mc_sample(on(0,1),1000,P),close_to(P,0.333333333333333))).
   78test(on_1_1):-
   79  run((mc_sample(on(1,1),1000,P),close_to(P,0.222222222222222))).
   80test(on_2_1):-
   81	run((mc_sample(on(2,1),1000,P),close_to(P,0.148148147703704))).
   82test(on_2_1__on_1_1_mh):-
   83  run((mc_mh_sample(on(2,1),on(1,1),1000,P,[mix(1000)]),close_to(P,0.333333333333333))).
   84test(on_2_1__on_0_1_mh):-
   85  run((mc_mh_sample(on(2,1),on(0,1),1000,P,[mix(1000)]),close_to(P,0.222222222222222))).
   86
   87
   88test(on_0_1_g):-
   89	run((mc_gibbs_sample(on(0,1),1000,P),close_to(P,0.333333333333333))).
   90test(on_1_1_g):-
   91  run((mc_gibbs_sample(on(1,1),1000,P),close_to(P,0.222222222222222))).
   92test(on_2_1_g):-
   93	run((mc_gibbs_sample(on(2,1),1000,P),close_to(P,0.148148147703704))).
   94
   95test(on_2_1_g_m):-
   96	run((mc_gibbs_sample(on(2,1),1000,P,[mix(100)]),close_to(P,0.148148147703704))).
   97
   98test(on_2_1_g_m_b):-
   99	run((mc_gibbs_sample(on(2,1),1000,P,[mix(100),block(2)]),close_to(P,0.148148147703704))).
  100
  101test(on_2_1__on_1_1_g):-
  102  run((mc_gibbs_sample(on(2,1),on(1,1),1000,P,[mix(1000)]),close_to(P,0.333333333333333))).
  103test(on_2_1__on_0_1_g):-
  104  run((mc_gibbs_sample(on(2,1),on(0,1),1000,P,[mix(1000)]),close_to(P,0.222222222222222))).
  105
  106test(on_2_1__on_0_1_g_b):-
  107  run((mc_gibbs_sample(on(2,1),on(0,1),1000,P,[mix(1000),block(2)]),close_to(P,0.222222222222222))).
  108
  109:- end_tests(threesideddicemc).  110
  111:- begin_tests(markov_chain, []).  112
  113:-ensure_loaded(library(examples/markov_chain)).  114
  115test(reach_s0_0_s0):-
  116  run((mc_sample(reach(s0,0,s0),1000,P),close_to(P,1))).
  117test(reach_s0_0_s1):-
  118  run((mc_sample(reach(s0,0,s1),1000,P),close_to(P,0.5984054054054054))).
  119test(reach_s0_0_s2):-
  120	run((mc_sample(reach(s0,0,s2),1000,P),close_to(P,0.4025135135135135))).
  121test(reach_s0_0_s3):-
  122	run((mc_sample(reach(s0,0,s3),1000,P),close_to(P,0.5998378378378378))).
  123test(reach_s0_0_s4):-
  124	run((mc_sample(reach(s0,0,s4),1000,P),close_to(P,0.49948717948717947))).
  125test(reach_s1_0_s0):-
  126	run((mc_sample(reach(s1,0,s0),1000,P),close_to(P,0))).
  127test(reach_s0_0_S_s0):-
  128	run((mc_sample_arg(reach(s0,0,S),50,S,Values),\+ member([s0]-_,Values))).
  129test(reach_s0_0_S_s0_mh):-
  130	run((mc_mh_sample_arg(reach(s0,0,S),reach(s0,0,s1),50,S,Values),\+ member([s0]-_,Values))).
  131test(reach_s0_0_S_s0_g):-
  132	run((mc_gibbs_sample_arg(reach(s0,0,S),50,S,Values),\+ member([s0]-_,Values))).
  133test(reach_s0_0_S_s0_gibbs):-
  134	run((mc_gibbs_sample_arg(reach(s0,0,S),reach(s0,0,s1),50,S,Values,[mix(100)]),\+ member([s0]-_,Values))).
  135
  136test(reach_s0_0_S_s0_b):-
  137	run((mc_gibbs_sample_arg(reach(s0,0,S),reach(s0,0,s1),50,S,Values,[mix(100),block(2)]),\+ member([s0]-_,Values))).
  138
  139test(reach_s0_0_s0_s3_s2,[nondet]):-
  140	run((mc_sample_arg_first(reach(s0,0,S),50,S,Values),member(s3-_,Values),member(s2-_,Values))).
  141test(reach_s0_0_S_s0_o):-
  142	run((mc_sample_arg(reach(s0,0,S),50,S,Values,[bar(B)]),\+ member([s0]-_,Values),is_dict(B,c3))).
  143test(reach_s0_0_s0_s3_s2_o,[nondet]):-
  144	run((mc_sample_arg_first(reach(s0,0,S),50,S,Values,[bar(B)]),member(s3-_,Values),member(s2-_,Values),is_dict(B,c3))).
  145:- end_tests(markov_chain).  146
  147:- begin_tests(prefix, []).  148
  149:-ensure_loaded(library(examples/prefix)).  150
  151test(pre_cfg_a):-
  152	run((mc_sample(pre_pcfg([a]),1000,P),close_to(P,0.5))).
  153test(pre_cfg_a_b):-
  154	run((mc_sample(pre_pcfg([a,b]),1000,P),close_to(P,0.09692857142857143))).
  155test(pre_cfg_b):-
  156	run((mc_sample(pre_pcfg([b]),1000,P),close_to(P,0.5))).
  157test(pre_cfg_a_b_a):-
  158	run((mc_sample(pre_pcfg([a,b,a]),1000,P),close_to(P,0.03))).
  159test(pre_cfg_b_a):-
  160	run((mc_sample(pre_pcfg([b,a]),1000,P),close_to(P,0.1014))).
  161
  162:- end_tests(prefix).  163
  164:- begin_tests(pre_plcg, []).  165
  166:-ensure_loaded(library(examples/pre_plcg)).  167test(pre_plc_a_b):-
  168	run((mc_sample(pre_plc([a,b]),1000,P),close_to(P,0.0326))).
  169:- end_tests(pre_plcg).  170
  171:- begin_tests(pctl_slep, []).  172
  173:-ensure_loaded(library(examples/pctl_slep)).  174test(eventually_elect):-
  175	run((mc_sample(eventually(elect),100,P),close_to(P,1))).
  176test(bounded_eventually_elect):-
  177	run((mc_sample(bounded_eventually(elect,3),100,P),close_to(P,0.97))).
  178test(exp_eventually_elect):-
  179	run((mc_expectation(eventually(elect,T),100,T,P),relatively_close_to(P,1.2))).
  180:- end_tests(pctl_slep).  181
  182:- begin_tests(arithm, []).  183
  184:-ensure_loaded(library(examples/arithm)).  185
  186test(eval_1_3):-
  187	run((mc_mh_sample(eval(2,4),eval(1,3),500,P),close_to(P,0.1151,0.4))).
  188test(eval_1_3_o):-
  189	run((mc_mh_sample(eval(2,4),eval(1,3),500,P,[mix(10),lag(2),successes(S),failures(F)]),
  190  close_to(P,0.1151,0.4),close_to(S,51,100),close_to(F,449,100))).
  191test(eval_0_2_1_3):-
  192  run((mc_mh_sample(eval(2,4),(eval(0,2),eval(1,3)),200,P),close_to(P,1))).
  193%test((mc_rejection_sample(eval(2,4),eval(1,3),1000,P),close_to(P,0.1151)),arithm).
  194%test((mc_rejection_sample(eval(2,4),(eval(0,2),eval(1,3)),1000,P),close_to(P,1)),arithm).
  195test(exp_eval_2):-
  196  run((mc_expectation(eval(2,Y),100,Y,E),relatively_close_to(E,3.968,1))).
  197test(exp_eval_2_eval_1_3):-
  198  run((mc_mh_expectation(eval(2,Y),eval(1,3),300,Y,E),relatively_close_to(E,2.855,1))).
  199test(exp_eval_2_eval_1_3_o):-
  200  run((mc_mh_expectation(eval(2,Y),eval(1,3),300,Y,E,[mix(10),lag(2)]),relatively_close_to(E,2.855,1))).
  201
  202test(eval_1_3_g):-
  203 	run((mc_gibbs_sample(eval(2,4),eval(1,3),1000,P,[]),close_to(P,0.4,0.4))).
  204test(eval_1_3_g_n):-
  205	run((mc_gibbs_sample(eval(2,4),eval(1,3),1000,P,[block(2)]),close_to(P,0.4,0.4))).
  206test(eval_1_3_o_g):-
  207	run((mc_gibbs_sample(eval(2,4),eval(1,3),500,P,[mix(10),successes(S),failures(F)]),
  208  close_to(P,0.1151,0.4),close_to(S,51,150),close_to(F,449,150))).
  209test(eval_0_2_1_3_g):-
  210  run((mc_gibbs_sample(eval(2,4),(eval(0,2),eval(1,3)),200,P,[]),close_to(P,1))).
  211
  212test(exp_eval_2_g):-
  213  run((mc_gibbs_expectation(eval(2,Y),300,Y,E),relatively_close_to(E,3.968,1))).
  214test(exp_eval_2_g_m):-
  215  run((mc_gibbs_expectation(eval(2,Y),500,Y,E,[mix(100)]),relatively_close_to(E,3.968,1))).
  216test(exp_eval_2_eval_1_3_g):-
  217  run((mc_gibbs_expectation(eval(2,Y),eval(1,3),300,Y,E,[]),relatively_close_to(E,2.855,1))).
  218test(exp_eval_2_eval_1_3_o_g):-
  219  run((mc_gibbs_expectation(eval(2,Y),eval(1,3),300,Y,E,[mix(10)]),relatively_close_to(E,2.855,1))).
  220
  221test(exp_eval_2_eval_1_3_o_g_b):-
  222  run((mc_gibbs_expectation(eval(2,Y),eval(1,3),300,Y,E,[mix(10),block(3)]),relatively_close_to(E,2.855,1))).
  223
  224:- end_tests(arithm).  225
  226:- begin_tests(gaussian_mixture, []).  227
  228:-ensure_loaded(library(examples/gaussian_mixture)).  229
  230test(mix_X):-
  231	run((mc_expectation(mix(X),1000,X,E),relatively_close_to(E,1.9911150139041882,0.2))).
  232test(mix_X_heads):-
  233	run((mc_mh_expectation(mix(X),heads,1000,X,E),close_to(E,0,1))).
  234test(mix_X_mix):-
  235	run((mc_mh_expectation(mix(X),(mix(Y),Y>2),1000,X,E),relatively_close_to(E,5.00202846171105,0.25))).
  236:- end_tests(gaussian_mixture).  237
  238:- begin_tests(kalman_filter, []).  239
  240:-ensure_loaded(library(examples/kalman_filter)).  241
  242test(exp_kf):-
  243	run((mc_expectation(kf(1,_O2,[T]),1000,T,E),close_to(E,0,0.1))).
  244test(lw_exp_kf):-
  245	run((mc_lw_expectation(kf(1,_O2,T),kf(1,[2.5],_T),3000,T,[E]),relatively_close_to(E,0.6324846033555553,0.2))).
  246
  247:- end_tests(kalman_filter).  248
  249
  250:- begin_tests(gauss_mean_est, []).  251
  252:-ensure_loaded(library(examples/gauss_mean_est)).  253test(lw_exp_value_0_X):-
  254  run((mc_lw_expectation(val(0,X),(val(1,9),val(2,8)),2000,X,E),relatively_close_to(E,7.166960047178755,0.25))).
  255test(exp_value_0_X):-
  256	run((mc_expectation(val(0,X),2000,X,E),relatively_close_to(E,0.9698875384639362,0.25))).
  257test(part_exp_value_0_X):-
  258	run((mc_particle_expectation(val(0,X),[val(1,9),val(2,8)],2000,X,E),relatively_close_to(E,7.166960047178755,0.25))).
  259:- end_tests(gauss_mean_est).  260
  261:- begin_tests(gauss_mean_est_user, []).  262
  263:-ensure_loaded(library(examples/gauss_mean_est_user)).  264test(lw_exp_value_0_X):-
  265  run((mc_lw_expectation(val(0,X),(val(1,9),val(2,8)),2000,X,E),relatively_close_to(E,7.166960047178755,0.25))).
  266test(exp_value_0_X):-
  267	run((mc_expectation(val(0,X),2000,X,E),relatively_close_to(E,0.9698875384639362,0.25))).
  268test(part_exp_value_0_X):-
  269	run((mc_particle_expectation(val(0,X),[val(1,9),val(2,8)],2000,X,E),relatively_close_to(E,7.166960047178755,0.25))).
  270:- end_tests(gauss_mean_est_user).  271
  272:- begin_tests(slp_pdcg, []).  273
  274:-ensure_loaded(library(examples/slp_pdcg)).  275
  276test(is_word):-
  277	run((mc_sample(is_word,1000,P),close_to(P,0.067222))).
  278:- end_tests(slp_pdcg).  279
  280:- begin_tests(indian_gpa, []).  281
  282:-ensure_loaded(library(examples/indian_gpa)).  283test(nation_a_st):-
  284	run((mc_lw_sample(nation(a),student_gpa(4.0),1000,P),close_to(P,1.0))).
  285test(nation_a):-
  286  run((mc_sample(nation(a),1000,P),close_to(P,0.25))).
  287:- end_tests(indian_gpa).  288
  289:- begin_tests(indian_gpadc, []).  290
  291:-ensure_loaded(library(examples/indian_gpadc)).  292test(nation_a_st):-
  293  run((mc_lw_sample(nation(a),student_gpa(4.0),1000,P),close_to(P,1.0))).
  294test(nation_a):-
  295  run((mc_sample(nation(a),1000,P),close_to(P,0.25))).
  296:- end_tests(indian_gpadc).  297
  298:- begin_tests(nballs, []).  299
  300:-ensure_loaded(library(examples/nballs)).  301test(drawn_1_1):-
  302  run((mc_sample(drawn(1,1),1000,P),close_to(P,0.285))).
  303test(drawn_1_1_wood):-
  304	run((mc_sample((drawn(1,1),material(1,wood)),1000,P),close_to(P,0.086))).
  305test(drawn_1_1_wood_black):-
  306	run((mc_sample((drawn(1,1),material(1,wood),color(1,black)),1000,P),close_to(P,0.044))).
  307:- end_tests(nballs).  308
  309:- begin_tests(nballsdc, []).  310
  311:-ensure_loaded(library(examples/nballsdc)).  312test(drawn_1_1):-
  313  run((mc_sample(drawn(1,1),1000,P),close_to(P,0.285))).
  314test(drawn_1_1_wood):-
  315  run((mc_sample((drawn(1,1),material(1,wood)),1000,P),close_to(P,0.086))).
  316test(drawn_1_1_wood_black):-
  317  run((mc_sample((drawn(1,1),material(1,wood),color(1,black)),1000,P),close_to(P,0.044))).
  318:- end_tests(nballsdc).  319
  320:- begin_tests(simpsonmc, []).  321
  322:-ensure_loaded(library(examples/simpsonmc)).  323test(rec_drug):-
  324	run((mc_rejection_sample(recovery,drug,500,P),close_to(P,0.5))).
  325test(rec_drug_o):-
  326	run((mc_rejection_sample(recovery,drug,500,P,[successes(S),failures(F)]),
  327  close_to(P,0.5),close_to(S,250,50),close_to(F,250,50))).
  328test(rec_n_drug):-
  329  run((mc_rejection_sample(recovery,\+ drug,500,P),close_to(P,0.4))).
  330test(rec_drug_f):-
  331  run((mc_rejection_sample(recovery,(drug,female),500,P),close_to(P,0.2))).
  332test(rec_n_drug_f):-
  333  run((mc_rejection_sample(recovery,(\+drug,female),500,P),close_to(P,0.3))).
  334test(rec_drug_m):-
  335  run((mc_rejection_sample(recovery,(drug,\+female),500,P),close_to(P,0.6))).
  336test(rec_n_drug_m):-
  337  run((mc_rejection_sample(recovery,(\+ drug,\+female),500,P),close_to(P,0.7))).
  338test(rec_d_drug):-
  339  run((mc_rejection_sample(recovery,do(drug),500,P),close_to(P,0.4))).
  340test(rec_d_n_drug):-
  341  run((mc_rejection_sample(recovery,do(\+ drug),500,P),close_to(P,0.5))).
  342test(rec_d_drug_f):-
  343  run((mc_rejection_sample(recovery,(do(drug),female),500,P),close_to(P,0.2))).
  344test(rec_d_n_drug_f):-
  345  run((mc_rejection_sample(recovery,(do(\+drug),female),500,P),close_to(P,0.3))).
  346test(rec_d_drug_m):-
  347  run((mc_rejection_sample(recovery,(do(drug),\+ female),500,P),close_to(P,0.6))).
  348test(rec_d_n_drug_m):-
  349  run((mc_rejection_sample(recovery,(do(\+ drug),\+ female),500,P),close_to(P,0.7))).
  350
  351test(mh_rec_drug):-
  352  run((mc_mh_sample(recovery,drug,500,P,[lag(2)]),close_to(P,0.5,0.15))).
  353test(mh_rec_n_drug):-
  354  run((mc_mh_sample(recovery,\+ drug,500,P,[lag(2)]),close_to(P,0.4))).
  355test(mh_rec_drug_f):-
  356  run((mc_mh_sample(recovery,(drug,female),500,P,[lag(2)]),close_to(P,0.2))).
  357test(mh_rec_n_drug_f):-
  358  run((mc_mh_sample(recovery,(\+drug,female),1000,P,[lag(2)]),close_to(P,0.3))).
  359test(mh_rec_drug_m):-
  360  run((mc_mh_sample(recovery,(drug,\+female),500,P,[lag(2)]),close_to(P,0.6))).
  361test(mh_rec_n_drug_m):-
  362  run((mc_mh_sample(recovery,(\+ drug,\+female),500,P,[lag(2)]),close_to(P,0.7))).
  363test(mh_rec_d_drug):-
  364  run((mc_mh_sample(recovery,do(drug),500,P,[lag(2)]),close_to(P,0.4))).
  365test(mh_rec_d_n_drug):-
  366  run((mc_mh_sample(recovery,do(\+ drug),500,P,[lag(2)]),close_to(P,0.5))).
  367test(mh_rec_d_drug_f):-
  368  run((mc_mh_sample(recovery,(do(drug),female),500,P,[lag(2)]),close_to(P,0.2))).
  369test(mh_rec_d_n_drug_f):-
  370  run((mc_mh_sample(recovery,(do(\+drug),female),500,P,[lag(2)]),close_to(P,0.3))).
  371test(mh_rec_d_drug_m):-
  372  run((mc_mh_sample(recovery,(do(drug),\+ female),500,P,[lag(2)]),close_to(P,0.6))).
  373test(mh_rec_d_n_drug_m):-
  374  run((mc_mh_sample(recovery,(do(\+ drug),\+ female),500,P,[lag(2)]),close_to(P,0.7))).
  375:- end_tests(simpsonmc).  376
  377:- begin_tests(viralmc, []).  378
  379:-ensure_loaded(library(examples/viralmc)).  380test(has_2_has_3):-
  381  run((mc_rejection_sample(has(2),has(3),500,P),close_to(P,0.4065135474609725,0.1))).
  382test(has_2_d_has_3):-
  383  run((mc_rejection_sample(has(2),do(has(3)),500,P),close_to(P,0.136))).
  384test(mh_has_2_d_has_3):-
  385  run((mc_mh_sample(has(2),do(has(3)),500,P),close_to(P,0.136))).
  386:- end_tests(viralmc).  387
  388:- begin_tests(uwcsemc, []).  389
  390:-ensure_loaded(library(examples/uwcsemc)).  391test(taught_by_c1_p1):-
  392  run((mc_sample(taught_by(c1,p1),1000,P),close_to(P,0.0926040439925477))).
  393:- end_tests(uwcsemc).  394
  395:- begin_tests(lda, []).  396
  397:-ensure_loaded(library(examples/lda)).  398
  399test(topic_1_1_1):-
  400  run((mc_sample(topic(1,1,1),400,P),close_to(P,0.5,0.2))).
  401test(topic_1_1_1_g):-
  402  run((mc_gibbs_sample(topic(1,1,1),400,P),close_to(P,0.5,0.3))).
  403
  404test(topic_1_1_1_ww):-
  405  run((mc_mh_sample(topic(1,1,1),(word(1,1,1),word(1,2,1)),100,G,[]),close_to(G,0.5,0.5))).
  406test(topic_1_1_1_ww_g):-
  407  run((mc_gibbs_sample(topic(1,1,1),(word(1,1,1),word(1,2,1)),100,G,[]),close_to(G,0.5,0.5))).
  408test(topic_1_1_1_ww_g_b):-
  409  run((mc_gibbs_sample(topic(1,1,1),(word(1,1,1),word(1,2,1)),100,G,[block(2)]),close_to(G,0.5,0.5))).
  410test(topic_1_1_1_ww_g_b_part):-
  411run((mc_particle_sample(topic(1,1,1),[word(1,1,1),word(1,2,1)],100,G),close_to(G,0.5,0.5))).
  412:- end_tests(lda).  413
  414
  415:- begin_tests(bitcoin_attack, []).  416
  417:-ensure_loaded(library(examples/bitcoin_attack)).  418
  419test(poisson):-
  420  run((mc_sample(success_poisson,1000,P),close_to(P,0.042))).
  421
  422test(negative_binomial):-
  423  run((mc_sample(success_negative_binomial,1000,P),close_to(P,0.02))).
  424
  425:- end_tests(bitcoin_attack).  426
  427:- begin_tests(bitcoin_two_phase, []).  428
  429:-ensure_loaded(library(examples/bitcoin_two_phase)).  430test(a):-
  431  run((mc_sample(reach(a0,0,a2),1000,P),close_to(P,0.071))).
  432
  433test(b):-
  434  run((mc_sample(reach(b0,0,b2),1000,P),close_to(P,0.115))).
  435
  436:- end_tests(bitcoin_two_phase).  437
  438:- begin_tests(binomial, []).  439
  440:-ensure_loaded(library(examples/binomial)).  441
  442test(exp):-
  443  run((mc_expectation(a(X),1000,X,E),relatively_close_to(E,10))).
  444
  445
  446:- end_tests(binomial).  447
  448:- begin_tests(binomial_user, []).  449
  450:-ensure_loaded(library(examples/binomial_user)).  451
  452test(exp):-
  453  run((mc_expectation(a(X),1000,X,E),relatively_close_to(E,10))).
  454
  455
  456:- end_tests(binomial_user).  457
  458:- begin_tests(coinmsw_mc, []).  459
  460:-ensure_loaded(library(examples/coinmsw_mc)).  461
  462test(mc_sample):-
  463  run((mc_sample(res(coin,heads),1000,P),close_to(P,0.51))).
  464
  465:- end_tests(coinmsw_mc).  466
  467
  468:- begin_tests(coinmsw_mc_memo, []).  469
  470:-ensure_loaded(library(examples/coinmsw_mc_memo)).  471
  472test(lw):-
  473  run((mc_lw_sample(res(coin,heads),fairness(coin,fair),1000,P),close_to(P,0.5))).
  474
  475test(mh):-
  476  run((mc_mh_sample(res(coin,heads),fairness(coin,fair),200,P,[mix(100),lag(3)]),close_to(P,0.5))).
  477
  478:- end_tests(coinmsw_mc_memo).  479
  480:- begin_tests(ship, []).  481
  482:-ensure_loaded(library(examples/ship)).  483
  484test(fire):-
  485  run((
  486	mc_sample(saved,1000,P),
  487  close_to(P,0.67))).
  488
  489:- end_tests(ship).  490
  491:- begin_tests(fruit, []).  492
  493:-ensure_loaded(library(examples/fruit)).  494
  495test(apple):-
  496  run((
  497	mc_sample(buy(apple),1000,P),
  498  close_to(P,0.464))).
  499
  500test(banana):-
  501  run((
  502	mc_sample(buy(banana),1000,P),
  503  close_to(P,0.162))).
  504
  505:- end_tests(fruit).  506
  507:- begin_tests(multinomial, []).  508
  509:-ensure_loaded(library(examples/multinomial)).  510
  511test(100):-
  512  run((
  513    prob_query(100,[0.5,0.25,0.25],P),
  514  close_to(P,1))).
  515
  516
  517:- end_tests(multinomial).