On this page:
3.1 RSDD
rsdd-engine
bernoulli-measure
semiring
semiring?
semiring-zero
semiring-add
semiring-one
semiring-mul
boolean-semiring
number-semiring
complex-semiring
log-semiring
expectation-semiring
polynomial-semiring
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

(semiring pred zero add one mul)  semiring?

  pred : predicate/c
  zero : any/c
  add : (-> any/c any/c any/c)
  one : any/c
  mul : (-> any/c any/c any/c)

procedure

(semiring? v)  boolean?

  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.

Base semirings.

procedure

(polynomial-semiring s)  semiring?

  s : semiring?
Constructs a polynomial semiring where coefficients are members of s.