1:- module(test_pita,
    2  [test_pita/0]).    3:- use_module(library(plunit)).    4
    5test_pita:-
    6	run_tests([coin,
    7    coinmsw,
    8    coinmsw_memo,
    9    coin_mpe,
   10    dice,
   11    epidemic,
   12    earthquake,
   13    sneezing,
   14    trigger,
   15    light,
   16    threesideddice,
   17    bloodtype,
   18    mendel,
   19    mendel_map,
   20    mendel_mpe,
   21    coin2,
   22    simpson,
   23    viral,
   24    uwcse,
   25    path,
   26    pathdb,
   27    multiple_paths_simple,
   28    multiple_paths,
   29    abd1,
   30    abd2,
   31    abd3,
   32    abd1cons1,
   33    abd1cons2,
   34    bag_game_mpe,
   35    bag_pb_mpe,
   36    bag_simple,
   37    bag_mpe,
   38    eruption_mpe,
   39    bag_1,
   40    bag_2,
   41    hmm_mpe,
   42    meta,
   43    pcfg,
   44    pcfglrdb,
   45    var_objdb,
   46    card,
   47    dt_umbrella,
   48    dt_winning,
   49    dt_weather,
   50    dt_viral,
   51    tabling_probs,
   52    event_calculus,
   53    card_body,
   54    card_disc,
   55    card_disc_body
   56    ]).
   57
   58:-use_module(library(cplint_test/cplint_test)).   59
   60
   61:- begin_tests(event_calculus, []).   62:- ensure_loaded(library(examples/event_calculus)).   63test(garden2):-
   64  run((prob(holdsAt(locatedIn(bob,garden),2),P),close_to(P,1))).
   65test(garden4):-
   66  run((prob(holdsAt(locatedIn(bob,garden),4),P),close_to(P,0.34))).
   67test(kitchen4):-
   68  run((prob(holdsAt(locatedIn(bob,kitchen),4),P),close_to(P,0.66))).
   69test(garage6):-
   70  run((prob(holdsAt(locatedIn(bob,garage),6),P),close_to(P,0.66))).
   71:- end_tests(event_calculus).   72
   73
   74:- begin_tests(dt_winning, []).   75:- ensure_loaded(library(examples/dt_winning)).   76test(best_st_wnning):-
   77  run((dt_solve(Strategy,ExpValue),close_to(ExpValue,17.25),perm(Strategy,[[play1]]))).
   78:- end_tests(dt_winning).   79
   80:- begin_tests(dt_umbrella, []).   81:- ensure_loaded(library(examples/dt_umbrella)).   82test(best_st_umbrella):-
   83  run((dt_solve(Strategy,ExpValue),close_to(ExpValue,43),perm(Strategy,[[umbrella]]))).
   84:- end_tests(dt_umbrella).   85
   86:- begin_tests(dt_weather, []).   87:- ensure_loaded(library(examples/dt_weather)).   88test(best_st_weather):-
   89  run((dt_solve(Strategy,ExpValue),close_to(ExpValue,77),perm(Strategy,[[decide_u(rainy)]]))).
   90:- end_tests(dt_weather).   91
   92:- begin_tests(dt_viral, []).   93:- ensure_loaded(library(examples/dt_viral)).   94test(best_st_viral):-
   95  ansi_format([bold,fg(cyan)], '~nThis test takes some time.~n',[]),
   96  % run((dt_solve(Strategy,ExpValue),close_to(ExpValue,2.217),perm(Strategy,[[marketed(theo)],[marketed(guy)]]))).
   97  run((dt_solve(Strategy,ExpValue),close_to(ExpValue,3.21),perm(Strategy,[[marketed(theo)],[marketed(martijn)],[marketed(ingo)],[marketed(guy)]]))).
   98:- end_tests(dt_viral).   99
  100:- begin_tests(tabling_probs, []).  101:- ensure_loaded(library(examples/dt_viral_probs)).  102test(correct_probs):-
  103  run((compute_probs(PB,PI,PT,PA,PG,PM,PL,PK),close_to(PB,0.420),close_to(PI,0.480),close_to(PT,0.486),close_to(PA,0.384),close_to(PG,0.480),close_to(PM,0.486),close_to(PL,0.490),close_to(PK,0.291))).
  104:- end_tests(tabling_probs).  105
  106:- begin_tests(coin, []).  107
  108:-ensure_loaded(library(examples/coin)).  109
  110test(h_c):-
  111  run((prob(heads(coin),P),close_to(P,0.51))).
  112test(h_c_b):-
  113  run(((prob(heads(coin),P),bar(P,C)),close_to(P,0.51),is_dict(C))).
  114test(h_c_b2):-
  115  run(((prob(heads(coin),P),bar1(P,C)),close_to(P,0.51),is_dict(C))).
  116test(h_c_b_c):-
  117  run((prob((heads(coin),biased(coin)),P),close_to(P,0.06))).
  118test(t_c):-
  119  run((prob(tails(coin),P),close_to(P,0.49))).
  120test(h_c_g_b_c):-
  121  run((prob(heads(coin),biased(coin),P),close_to(P,0.6))).
  122test(h_c_n_b_c):-
  123  run((prob((heads(coin),\+ biased(coin)),P),close_to(P,0.45))).
  124test(n_h_c):-
  125  run((prob(\+ heads(coin),P),close_to(P,0.49))).
  126
  127:- end_tests(coin).  128
  129:- begin_tests(coin_mpe, []).  130
  131:-ensure_loaded(library(examples/coin_mpe)).  132
  133test(h_c):-
  134  run((map(heads(coin),Prob,Exp),close_to(Prob,0.27),
  135    perm(Exp, [rule(2,fair(coin),[fair(coin):0.9,biased(coin):0.1],true),
  136  rule(0,heads(coin),[heads(coin):0.5,tails(coin):0.5],(toss(coin),\+biased(coin))),
  137  rule(1,heads(coin),[heads(coin):0.6,tails(coin):0.4],(toss(coin),biased(coin)))]
  138  ))).
  139:- end_tests(coin_mpe).  140
  141:- begin_tests(coinmsw, []).  142
  143:-ensure_loaded(library(examples/coinmsw)).  144
  145test(r_c_h):-
  146  run((prob(res(coin,heads),P),close_to(P,0.51))).
  147test(r_c_t):-
  148  run((prob(res(coin,tails),P),close_to(P,0.49))).
  149
  150:- end_tests(coinmsw).  151
  152:- begin_tests(coinmsw_memo, []).  153
  154:-ensure_loaded(library(examples/coinmsw_memo)).  155
  156test(r_c_h):-
  157  run((prob(res(coin,heads),fairness(coin,fair),P),close_to(P,0.5))).
  158test(r_c_t):-
  159  run((prob(res(coin,tails),fairness(coin,fair),P),close_to(P,0.5))).
  160
  161:- end_tests(coinmsw_memo).  162
  163:- begin_tests(dice, []).  164
  165:-ensure_loaded(library(examples/dice)).  166
  167test(on_0_1):-
  168  run((prob(on(0,1),P),close_to(P,0.16666666666666666))).
  169test(on_1_1):-
  170  run((prob(on(1,1),P),close_to(P,0.13888888888888887))).
  171test(on_2_1):-
  172  run((prob(on(2,1),P),close_to(P,0.11574074074074071))).
  173test(on_2_1_0_1):-
  174  run((prob(on(2,1),on(0,1),P),close_to(P,0.13888888888888887))).
  175test(on_2_1_ev):-
  176  run((prob(on(2,1),evidence,P),close_to(P,0.16666666666666666))).
  177
  178:- end_tests(dice).  179
  180:- begin_tests(epidemic, []).  181
  182:-ensure_loaded(library(examples/epidemic)).  183
  184test(ep):-
  185  run((prob(epidemic,P),close_to(P,0.588))).
  186test(pan):-
  187  run((prob(pandemic,P),close_to(P,0.357))).
  188
  189:- end_tests(epidemic).  190
  191:- begin_tests(earthquake, []).  192
  193:-ensure_loaded(library(examples/earthquake)).  194
  195test(s_s):-
  196  run((prob(earthquake(stromboli,strong),P),close_to(P,0.43999999999999995))).
  197test(s_m):-
  198  run((prob(earthquake(stromboli,moderate),P),close_to(P,0.7999999999999998))).
  199test(e_s):-
  200  run((prob(earthquake(eyjafjallajkull,strong),P),close_to(P,0.2))).
  201test(e_m):-
  202  run((prob(earthquake(eyjafjallajkull,moderate),P),close_to(P,0.6))).
  203:- end_tests(earthquake).  204
  205
  206:- begin_tests(sneezing, []).  207
  208:-ensure_loaded(library(examples/sneezing)).  209
  210test(s_s):-
  211  run((prob(strong_sneezing(bob),P),close_to(P,0.43999999999999995))).
  212test(m_s):-
  213  run((prob(moderate_sneezing(bob),P),close_to(P,0.7999999999999998))).
  214
  215:- end_tests(sneezing).  216
  217:- begin_tests(trigger, []).  218
  219:-ensure_loaded(library(examples/trigger)).  220
  221test(death):-
  222  run((prob(death,P),close_to(P,0.305555555555556))).
  223
  224:- end_tests(trigger).  225
  226
  227:- begin_tests(light, []).  228
  229:-ensure_loaded(library(examples/light)).  230
  231test(light):-
  232  run((prob(light,P),close_to(P,0.4))).
  233test(replace):-
  234  run((prob(replace,P),close_to(P,0.6))).
  235
  236:- end_tests(light).  237
  238:- begin_tests(threesideddice, []).  239
  240:-ensure_loaded(library(examples/threesideddice)).  241
  242test(on_0_1):-
  243  run((prob(on(0,1),P),close_to(P,0.333333333333333))).
  244test(on_1_1):-
  245 run((prob(on(1,1),P),close_to(P,0.222222222222222))).
  246test(on_2_1):-
  247  run((prob(on(2,1),P),close_to(P,0.148148147703704))).
  248
  249test(on_2_1_0_1):-
  250 run((prob(on(2,1),on(0,1),P),close_to(P,0.222222222222222))).
  251test(on_2_1_1_1):-
  252 run((prob(on(2,1),on(1,1),P),close_to(P,0.333333333333333))).
  253
  254:- end_tests(threesideddice).  255
  256:- begin_tests(bloodtype, []).  257
  258:-ensure_loaded(library(examples/bloodtype)).  259
  260test(pc_p_f_a):-
  261  run((prob(pchrom(p_f,a),Prob),
  262  close_to(Prob, 0.318))).
  263
  264test(p_f_a):-
  265  run((prob(pchrom(p_f,a),Prob),
  266  close_to(Prob, 0.3))).
  267
  268test(p_a):-
  269  run((prob(bloodtype(p,a),Prob),
  270  close_to(Prob, 0.3186942939999999))).
  271
  272test(p_b):-
  273  run((prob(bloodtype(p,b),Prob),
  274  close_to(Prob, 0.2239874943000002))).
  275
  276test(p_aa):-
  277  run((prob(bloodtype(p,ab),Prob),
  278  close_to(Prob, 0.19329257700000035))).
  279
  280test(p_null):-
  281  run((prob(bloodtype(p,null),Prob),
  282  close_to(Prob, 0.16751706690000012))).
  283
  284:- end_tests(bloodtype).  285
  286:- begin_tests(mendel, []).  287
  288:-ensure_loaded(library(examples/mendel)).  289
  290
  291test(s_1_p):-
  292  run((prob(cg(s,1,p),P),close_to(P,0.5))).
  293test(s_1_w):-
  294  run((prob(cg(s,1,w),P),close_to(P,0.5))).
  295test(s_2_p):-
  296  run((prob(cg(s,2,p),P),close_to(P,0.5))).
  297test(s_2_w):-
  298  run((prob(cg(s,2,w),P),close_to(P,0.5))).
  299
  300:- end_tests(mendel).  301
  302:- begin_tests(mendel_mpe, []).  303
  304:-ensure_loaded(library(examples/mendel_mpe)).  305
  306test(s_w):-
  307  run((map(color(s,white),Prob,Exp),close_to(Prob,0.25),
  308  perm(Exp, [rule(0, cg(s, 1, w), [cg(s, 1, p):0.5, cg(s, 1, w):0.5],
  309     (mother(m, s), cg(m, 1, p), cg(m, 2, w))),
  310	 rule(1, cg(s, 2, w), [cg(s, 2, w):0.5, cg(s, 2, p):0.5],
  311	   (father(f, s), cg(f, 1, w), cg(f, 2, p)))]))).
  312
  313:- end_tests(mendel_mpe).  314
  315:- begin_tests(mendel_map, []).  316
  317:-ensure_loaded(library(examples/mendel_map)).  318
  319test(s_p):-
  320  run((map(color(s,purple),Prob,Exp),close_to(Prob,0.5),
  321	perm(Exp, [rule(0, cg(s, 1, p), [cg(s, 1, p):0.5, cg(s, 1, w):0.5],
  322	 (mother(m, s), cg(m, 1, p), cg(m, 2, w)))]))).
  323
  324:- end_tests(mendel_map).  325:- begin_tests(coin2, []).  326
  327:-ensure_loaded(library(examples/coin2)).  328
  329test(h_coin1):-
  330  run((prob(heads(coin1),P),close_to(P,0.51))).
  331test(h_coin2):-
  332  run((prob(heads(coin2),P),close_to(P,0.51))).
  333
  334test(t_coin1):-
  335  run((prob(tails(coin1),P),close_to(P,0.49))).
  336test(t_coin2):-
  337  run((prob(tails(coin2),P),close_to(P,0.49))).
  338
  339:- end_tests(coin2).  340
  341:- begin_tests(simpson, []).  342
  343:-ensure_loaded(library(examples/simpson)).  344
  345test(r_d):-
  346  run((prob(recovery,drug,P),close_to(P,0.5))).
  347test(r_n_d):-
  348  run((prob(recovery,\+ drug,P),close_to(P,0.4))).
  349test(d_f):-
  350  run((prob(recovery,(drug,female),P),close_to(P,0.2))).
  351test(n_d_f):-
  352  run((prob(recovery,(\+drug,female),P),close_to(P,0.3))).
  353test(d_n_m):-
  354  run((prob(recovery,(drug,\+female),P),close_to(P,0.6))).
  355test(n_d_m):-
  356  run((prob(recovery,(\+ drug,\+female),P),close_to(P,0.7))).
  357test(d_d):-
  358  run((prob(recovery,do(drug),P),close_to(P,0.4))).
  359test(d_n_d):-
  360  run((prob(recovery,do(\+ drug),P),close_to(P,0.5))).
  361test(d_d_f):-
  362  run((prob(recovery,(do(drug),female),P),close_to(P,0.2))).
  363test(d_n_d_f):-
  364  run((prob(recovery,(do(\+drug),female),P),close_to(P,0.3))).
  365test(d_d_m):-
  366  run((prob(recovery,(do(drug),\+ female),P),close_to(P,0.6))).
  367test(d_n_d_m):-
  368  run((prob(recovery,(do(\+ drug),\+ female),P),close_to(P,0.7))).
  369
  370:- end_tests(simpson).  371
  372
  373:- begin_tests(viral, []).  374
  375:-ensure_loaded(library(examples/viral)).  376
  377test(h_2_3):-
  378  run((prob(has(2),has(3),P),close_to(P,0.4065135474609725))).
  379test(h_2_d_3):-
  380  run((prob(has(2),do(has(3)),P),close_to(P,0.136))).
  381
  382:- end_tests(viral).  383
  384:- begin_tests(uwcse, []).  385
  386:-ensure_loaded(library(examples/uwcse_inf)).  387
  388test(t_c1_p1):-
  389  run((prob(taught_by(c1,p1),P),close_to(P,0.0926040439925477))).
  390
  391:- end_tests(uwcse).  392
  393:- begin_tests(path, []).  394
  395:-ensure_loaded(library(examples/path)).  396
  397test(p_a_e):-
  398  run((prob(path(a,e),P),close_to(P,0.22888))).
  399
  400:- end_tests(path).  401
  402:- begin_tests(pathdb, []).  403
  404:-ensure_loaded(library(examples/pathdb)).  405
  406test(p_a_e):-
  407  run((prob(path(a,e),P),close_to(P,0.22888))).
  408
  409:- end_tests(pathdb).  410
  411:- begin_tests(multiple_paths_simple, []).  412
  413:-ensure_loaded(library(examples/multiple_paths_simple)).  414
  415test(p):-
  416  run((prob(p,P),close_to(P,0.54))).
  417
  418:- end_tests(multiple_paths_simple).  419
  420:- begin_tests(multiple_paths, []).  421
  422:-ensure_loaded(library(examples/multiple_paths)).  423
  424test(p):-
  425  run((prob(p,P),close_to(P,0.0636))).
  426
  427:- end_tests(multiple_paths).  428
  429:- begin_tests(abd1, []).  430
  431:-ensure_loaded(library(examples/abd1)).  432
  433test(a):-
  434  run((abd_prob(a,P,Exp),close_to(P,0.72),perm_map(Exp,[[e,c]]))).
  435test(bdd_a):-
  436  run((abd_bdd_dot_string(a,_BDD,_Var,_VarA,P,Exp),close_to(P,0.72),perm_map(Exp,[[e,c]]))).
  437
  438:- end_tests(abd1).  439
  440:- begin_tests(abd1cons1, []).  441
  442:-ensure_loaded(library(examples/abd1cons1)).  443
  444test(a):-
  445  run((abd_prob(a,P,Delta),Delta=[[e]],close_to(P,0.6))).
  446
  447:- end_tests(abd1cons1).  448
  449:- begin_tests(abd1cons2, []).  450
  451:-ensure_loaded(library(examples/abd1cons2)).  452
  453test(a):-
  454  run((abd_prob(a,P,Exp),close_to(P,0.648),perm_map(Exp,[[c,e]]))).
  455
  456:- end_tests(abd1cons2).  457
  458:- begin_tests(abd2, []).  459
  460:-ensure_loaded(library(examples/abd2)).  461
  462test(a):-
  463  run((abd_prob(a,P,Exp),close_to(P,0.72),perm_map(Exp,[[f,c,d]]))).
  464test(bdd_a):-
  465  run((abd_bdd_dot_string(a,_BDD,_Var,_VarA,P,Exp),close_to(P,0.72), perm_map(Exp,[[f,c,d]]))).
  466
  467:- end_tests(abd2).  468
  469:- begin_tests(abd3, []).  470
  471:-ensure_loaded(library(examples/abd3)).  472
  473test(a):-
  474  run((abd_prob(a,P,Exp),close_to(P,0.72),perm_map(Exp,[[c,d,f]]))).
  475test(bdd_a):-
  476  run((abd_bdd_dot_string(a,_BDD,_Var,_VarA,P,Exp),close_to(P,0.72),
  477  perm_map(Exp,[[c,d,f]]))).
  478
  479:- end_tests(abd3).  480
  481:- begin_tests(bag_game_mpe, []).  482
  483:-ensure_loaded(library(examples/bag_game_mpe)).  484
  485test(winb):-
  486  run((map_bdd_dot_string(win,_BDD,_Var,_VarA,P,Exp),close_to(P,0.162),
  487  perm(Exp,[
  488	  rule(0, '', [red:0.4, '':0.6], true),
  489		rule(2, blue, [blue:0.5, '':0.5], true),
  490		rule(3, yellow, [yellow:0.6, '':0.4], true),
  491	  rule(1, green, [green:0.9, '':0.09999999999999998], true)
  492	 ]))).
  493
  494test(win):-
  495  run((map(win,P,Exp),close_to(P,0.162),
  496  perm(Exp,[
  497	  rule(0, '', [red:0.4, '':0.6], true),
  498		rule(2, blue, [blue:0.5, '':0.5], true),
  499		rule(3, yellow, [yellow:0.6, '':0.4], true),
  500	  rule(1, green, [green:0.9, '':0.09999999999999998], true)
  501	 ]))).
  502:- end_tests(bag_game_mpe).  503
  504:- begin_tests(bag_pb_mpe, []).  505
  506:-ensure_loaded(library(examples/bag_pb_mpe)).  507
  508test(ev):-
  509  run((map(ev,P,Exp),close_to(P,0.27),
  510	  perm(Exp,[
  511		  rule(2,pf(2,1),[pf(2,1):0.6,'':0.4],true),
  512			rule(1,pf(1,2),[pf(1,2):0.75,'':0.25],true),
  513			rule(0,pf(1,1),[pf(1,1):0.6,'':0.4],true)
  514		  ]))).
  515
  516test(evb):-
  517  run((map_bdd_dot_string(ev,_BDD,_Var,_VarA,P,Exp),close_to(P,0.27),
  518	  perm(Exp,[
  519		  rule(2,pf(2,1),[pf(2,1):0.6,'':0.4],true),
  520			rule(1,pf(1,2),[pf(1,2):0.75,'':0.25],true),
  521			rule(0,pf(1,1),[pf(1,1):0.6,'':0.4],true)
  522		  ]))).
  523
  524:- end_tests(bag_pb_mpe).  525
  526:- begin_tests(bag_simple, []).  527
  528:-ensure_loaded(library(examples/bag_simple)).  529
  530test(evb):-
  531  run((map_bdd_dot_string(ev,_BDD,_Var,_VarA,P,Exp),close_to(P,0.6),
  532	  perm(Exp,[
  533		  rule(0, red(b1), [red(b1):0.6, green(b1):0.3, blue(b1):0.1], pick(b1))
  534		  ]))).
  535test(ev):-
  536  run((map(ev,P,Exp),close_to(P,0.6),
  537	  perm(Exp,[
  538		  rule(0, red(b1), [red(b1):0.6, green(b1):0.3, blue(b1):0.1], pick(b1))
  539		  ]))).
  540:- end_tests(bag_simple).  541
  542:- begin_tests(bag_mpe, []).  543
  544:-ensure_loaded(library(examples/bag_mpe)).  545
  546test(evb):-
  547  run((map_bdd_dot_string(ev,_BDD,_Var,_VarA,P,Exp),close_to(P,0.36),
  548	  perm(Exp,[
  549		  rule(1, pick(b1), [pick(b1):0.6, no_pick(b1):0.4], true),
  550			rule(0, red(b1), [red(b1):0.6, green(b1):0.3, blue(b1):0.1], pick(b1))
  551		  ]))).
  552test(ev):-
  553  run((map(ev,P,Exp),close_to(P,0.36),
  554	  perm(Exp,[
  555		  rule(1, pick(b1), [pick(b1):0.6, no_pick(b1):0.4], true),
  556			rule(0, red(b1), [red(b1):0.6, green(b1):0.3, blue(b1):0.1], pick(b1))
  557		  ]))).
  558:- end_tests(bag_mpe).  559
  560:- begin_tests(eruption_mpe, []).  561
  562:-ensure_loaded(library(examples/eruption_mpe)).  563
  564test(eruption):-
  565  run((map(eruption,P,Exp),close_to(P,0.08316),
  566	  perm(Exp,[rule(1,sudden_energy_release,[sudden_energy_release:0.7,'':0.30000000000000004],true),
  567      rule(2,fault_rupture(southwest_northeast),[fault_rupture(southwest_northeast):0.6,'':0.4],true),
  568      rule(3,fault_rupture(east_west),[fault_rupture(east_west):0.55,'':0.44999999999999996],true),
  569      rule(0,eruption,[eruption:0.6,earthquake:0.3,'':0.10000000000000003],(sudden_energy_release,fault_rupture(southwest_northeast))),
  570      rule(0,eruption,[eruption:0.6,earthquake:0.3,'':0.10000000000000003],(sudden_energy_release,fault_rupture(east_west)))
  571		  ]))).
  572:- end_tests(eruption_mpe).  573
  574:- begin_tests(bag_1, []).  575
  576:-ensure_loaded(library(examples/bag_1)).  577
  578test(evb):-
  579  run((map_bdd_dot_string(ev,_BDD,_Var,_VarA,P,Exp),close_to(P,0.54),
  580	  perm(Exp,[
  581		  rule(1, pick(b1), [pick(b1):0.6, no_pick(b1):0.4], true)
  582		  ]))).
  583test(ev):-
  584  run((map(ev,P,Exp),close_to(P,0.54),
  585	  perm(Exp,[
  586		  rule(1, pick(b1), [pick(b1):0.6, no_pick(b1):0.4], true)
  587		  ]))).
  588:- end_tests(bag_1).  589
  590:- begin_tests(bag_2, []).  591
  592:-ensure_loaded(library(examples/bag_2)).  593test(evb):-
  594  run((map_bdd_dot_string(ev,_BDD,_Var,_VarA,P,Exp),close_to(P,0.6),
  595	  perm(Exp,[
  596		  rule(0, red(b1), [red(b1):0.6, green(b1):0.3, blue(b1):0.1], pick(b1))
  597		  ]))).
  598test(ev):-
  599  run((map(ev,P,Exp),close_to(P,0.6),
  600	  perm(Exp,[
  601		  rule(0, red(b1), [red(b1):0.6, green(b1):0.3, blue(b1):0.1], pick(b1))
  602		  ]))).
  603:- end_tests(bag_2).  604
  605
  606:- begin_tests(hmm_mpe, []).  607
  608:-ensure_loaded(library(examples/hmm_mpe)).  609
  610test(hmm_a_g):-
  611
  612  run((map(hmm([a,g]),P,Exp),close_to(P,0.00054),
  613    perm(Exp,
  614      [rule(0,next_state(q1,q2,[]),[next_state(q1,q1,[]):0.5,next_state(q1,q2,[]):0.45,next_state(q1,end,[]):0.05],true),
  615      rule(2,letter(q1,a,[]),[letter(q1,a,[]):0.4,letter(q1,c,[]):0.3,letter(q1,g,[]):0.2,letter(q1,t,[]):0.1],true),
  616      rule(0,next_state(q1,q1,[q1]),[next_state(q1,q1,[q1]):0.5,next_state(q1,q2,[q1]):0.45,next_state(q1,end,[q1]):0.05],true),
  617      rule(2,letter(q1,a,[q1]),[letter(q1,a,[q1]):0.4,letter(q1,c,[q1]):0.3,letter(q1,g,[q1]):0.2,letter(q1,t,[q1]):0.1],true),
  618      rule(1,next_state(q2,end,[q1]),[next_state(q2,q1,[q1]):0.45,next_state(q2,q2,[q1]):0.5,next_state(q2,end,[q1]):0.05],true),
  619      rule(3,letter(q2,g,[q1]),[letter(q2,a,[q1]):0.1,letter(q2,c,[q1]):0.2,letter(q2,g,[q1]):0.3,letter(q2,t,[q1]):0.4],true)]
  620  ))).
  621
  622:- end_tests(hmm_mpe).  623
  624:- begin_tests(meta, []).  625
  626:-ensure_loaded(library(examples/meta)).  627
  628test(meta):-
  629  run((prob(a,Prob),close_to(Prob,0.2)
  630  )).
  631
  632:- end_tests(meta).  633
  634
  635:- begin_tests(var_objdb, []).  636
  637:-ensure_loaded(library(examples/var_objdb)).  638
  639test(obj):-
  640  run((prob(obj(2),Prob),close_to(Prob, 0.08190000000000008)
  641  )).
  642
  643test(nobj):-
  644  run((prob(numObj(0,2),Prob),close_to(Prob,0.06300000000000006)
  645  )).
  646
  647:- end_tests(var_objdb).  648
  649
  650:- begin_tests(pcfg, []).  651
  652:-ensure_loaded(library(examples/pcfg)).  653
  654test(pcfg):-
  655  run((prob(pcfg([a,b,a,a]),Prob),close_to(Prob,0.0024,0.0001)
  656  )).
  657
  658:- end_tests(pcfg).  659
  660
  661:- begin_tests(pcfglrdb, []).  662
  663:-ensure_loaded(library(examples/pcfglrdb)).  664
  665test(pcfglrdb):-
  666  run((prob(pcfg([a]),Prob),close_to(Prob,0.3)
  667  )).
  668
  669:- end_tests(pcfglrdb).  670
  671:- begin_tests(card, []).  672
  673:-ensure_loaded(library(examples/card)).  674
  675test(card):-
  676  run((prob(pair,Prob),close_to(Prob,0.07692307692307693))).
  677
  678:- end_tests(card).  679
  680:- begin_tests(card_body, []).  681
  682:-ensure_loaded(library(examples/card_body)).  683
  684test(card_body):-
  685  run((prob(pair,Prob),close_to(Prob,0.07692307692307693))).
  686
  687:- end_tests(card_body).  688
  689:- begin_tests(card_disc, []).  690
  691:-ensure_loaded(library(examples/card_disc)).  692
  693test(card_disc):-
  694  run((prob(pair,Prob),close_to(Prob,0.07692307692307693))).
  695
  696:- end_tests(card_disc).  697
  698:- begin_tests(card_disc_body, []).  699
  700:-ensure_loaded(library(examples/card_disc_body)).  701
  702test(card_disc_body):-
  703  run((prob(pair,Prob),close_to(Prob,0.07692307692307693))).
  704
  705:- end_tests(card_disc_body).