9.2
3 Engines
An engine provides a backend for performing inference. By default, Roulette automatically installs the RSDD backend.
3.1 RSDD
| (require roulette/engine/rsdd) | package: roulette-lib |
procedure
(rsdd-engine [#:semiring s])
→ (engine/c (immutable-set/c any/c) s) s : semiring? = number-semiring
Performs inference over the s semiring using RSDD.
When an engine is garbage collected,
all the memory associated with it
(i.e., BDDs and weights)
is freed.
> (define poly-semiring (polynomial-semiring number-semiring)) > (define poly-engine (rsdd-engine #:semiring poly-semiring))
procedure
(bernoulli-measure f t [#:semiring s])
→ (measure/c (immutable-set/c boolean?) s) f : s t : s s : semiring? = number-semiring
Returns a measure such that
(set) gets (semiring-zero s),
(set #f) gets f,
(set #t) gets t,
and (set #f #t) gets ((semiring-plus s) f t).
> (define-measurable y (bernoulli-measure '(0.1 0.6) '(0.9 0.4) #:semiring poly-semiring)) > ((infer y #:engine poly-engine) (set #f #t)) '(1.0 1.0)
procedure
pred : predicate/c zero : any/c add : (-> any/c any/c any/c) one : any/c mul : (-> any/c any/c any/c)
procedure
v : any/c
procedure
(semiring-zero s) → any/c
s : semiring?
procedure
(semiring-add s) → procedure?
s : semiring?
procedure
(semiring-one s) → any/c
s : semiring?
procedure
(semiring-mul s) → procedure?
s : semiring?
Constructor, predicate, and accessors for semirings.
Addition and multiplication are guaranteed to have variable arity.
value
value
value
complex-semiring : semiring?
value
value
Base semirings.
procedure
(polynomial-semiring s) → semiring?
s : semiring?
Constructs a polynomial semiring where coefficients are members of s.