Skip to main content

Module symbolic

Module symbolic 

Source
Expand description

Experimental: answering finite Boolean programs with decision diagrams instead of worlds (docs/design/symbolic-inference.md, stage 1).

Each draw is a variable, each Boolean a diagram over the variables, and the evidence one diagram. A report is then weighted model counts: of the worlds that reach it with its value true, and with it false. Enumeration would keep a world for each assignment of the draws that are still live, which can be all of them; a diagram shares what the assignments have in common. The results are the same, up to rounding.

It runs programs whose top level is made of draws from Boolean laws (like bernoulli(1%), or a law that depends on Booleans, like if sick { bernoulli(95%) } else { bernoulli(8%) }), Boolean expressions, assignments, if, observations, score and reports without by. Values other than Booleans, like probabilities and laws, are constants, or one constant in each of a few sets of worlds. Anything else, and any operation that fails, is unsupported: the engine enumerates such a program instead, or, with Symbolic::Only, says what isn’t supported.

Structs§

Diagrams
The size of a run’s decision diagrams.

Enums§

Symbolic
Whether a program is answered with decision diagrams (docs/design/ symbolic-inference.md). Experimental, and off by default.