Using the SNAPSHOT of today, the bug is a succeeding spec that fails (as intended) with 1.6.1 but succeeds with 1.7-SNAPSHOT .
If I print out the values for both marginals I get the following, which obviously should fail.
Marginals of edu.uulm.scbayes.inference.sampling.MutableMCMCStepper$$anon$1@3f357ede:
P(at(6,A) = 0) = 0,000000
P(at(6,A) = 1) = 0,000000
P(at(6,A) = 2) = 0,000000
P(at(6,A) = 3) = 0,000000
P(at(6,A) = 4) = 0,015997
P(at(6,A) = 5) = 0,019796
P(at(6,A) = 6) = 0,069186
P(at(6,A) = 7) = 0,089182
P(at(6,A) = 8) = 0,802440
P(at(6,A) = 9) = 0,003399
P(at(6,B) = 0) = 0,000000
P(at(6,B) = 1) = 0,005999
P(at(6,B) = 2) = 0,002999
P(at(6,B) = 3) = 0,002400
P(at(6,B) = 4) = 0,000400
P(at(6,B) = 5) = 0,058988
P(at(6,B) = 6) = 0,057189
P(at(6,B) = 7) = 0,062188
P(at(6,B) = 8) = 0,805239
P(at(6,B) = 9) = 0,004599
P(at(7,A) = 0) = 0,099180
P(at(7,A) = 1) = 0,087782
P(at(7,A) = 2) = 0,083383
P(at(7,A) = 3) = 0,086983
P(at(7,A) = 4) = 0,092581
P(at(7,A) = 5) = 0,121576
P(at(7,A) = 6) = 0,089182
P(at(7,A) = 7) = 0,137772
P(at(7,A) = 8) = 0,123975
P(at(7,A) = 9) = 0,077584
P(at(7,B) = 0) = 0,084383
P(at(7,B) = 1) = 0,068186
P(at(7,B) = 2) = 0,075585
P(at(7,B) = 3) = 0,089782
P(at(7,B) = 4) = 0,065587
P(at(7,B) = 5) = 0,075585
P(at(7,B) = 6) = 0,152969
P(at(7,B) = 7) = 0,130974
P(at(7,B) = 8) = 0,151770
P(at(7,B) = 9) = 0,105179
Marginals of edu.uulm.scbayes.inference.junctiontree.JunctionTreeInference$$anon$1@2288e718:
P(at(6,A) = 0) = 0,000055
P(at(6,A) = 1) = 0,411777
P(at(6,A) = 2) = 0,225696
P(at(6,A) = 3) = 0,225696
P(at(6,A) = 4) = 0,007790
P(at(6,A) = 5) = 0,013290
P(at(6,A) = 6) = 0,013290
P(at(6,A) = 7) = 0,013290
P(at(6,A) = 8) = 0,088452
P(at(6,A) = 9) = 0,000665
P(at(6,B) = 0) = 0,000055
P(at(6,B) = 1) = 0,007790
P(at(6,B) = 2) = 0,225696
P(at(6,B) = 3) = 0,225696
P(at(6,B) = 4) = 0,411777
P(at(6,B) = 5) = 0,013290
P(at(6,B) = 6) = 0,013290
P(at(6,B) = 7) = 0,013290
P(at(6,B) = 8) = 0,088452
P(at(6,B) = 9) = 0,000665
P(at(7,A) = 0) = 0,043545
P(at(7,A) = 1) = 0,043545
P(at(7,A) = 2) = 0,318816
P(at(7,A) = 3) = 0,178694
P(at(7,A) = 4) = 0,178694
P(at(7,A) = 5) = 0,036646
P(at(7,A) = 6) = 0,052036
P(at(7,A) = 7) = 0,052036
P(at(7,A) = 8) = 0,052036
P(at(7,A) = 9) = 0,043951
P(at(7,B) = 0) = 0,043545
P(at(7,B) = 1) = 0,043545
P(at(7,B) = 2) = 0,036646
P(at(7,B) = 3) = 0,178694
P(at(7,B) = 4) = 0,178694
P(at(7,B) = 5) = 0,318816
P(at(7,B) = 6) = 0,052036
P(at(7,B) = 7) = 0,052036
P(at(7,B) = 8) = 0,052036
P(at(7,B) = 9) = 0,043951
Sorry that I didn't reduce this to a smaller example. Inserting a println
near the beCloseTo
, I see that this line gets evaluated for every variable/value combination which seems correct. Maybe the beCloseTo
matcher is broken? But this seems unlikely.