Foerster runs probabilistic programs on Spindel's forkable execution runtime. These five objects have different roles and lifetimes:
| Object | Meaning | Boundary |
|---|---|---|
| World | An execution context containing managed application state and registered systems. Canonical particle methods copy the caller's world; fresh-world methods start without it. | Forking isolates state supported by the runtime or a system adapter. Ordinary host atoms and arbitrary I/O are outside that boundary. |
| Trace | One run's addressed random choices, observations, scores and replay information. Trace operations can propose changes and re-execute a model. | Live replay resources have ownership and cleanup obligations. An arbitrary collection of values is not a replayable trace. |
| Measure | A settled inference result, with weighted values, summaries and method-specific diagnostics. | It is not a collection of live application worlds. Normalizer/evidence availability depends on the estimator. |
| Population | Intermediate inference state over a target, with weights and retained trace or numeric values. Population programs compose target changes, resampling and moves. | A move's invariance, a proposal correction and an evidence estimate are separate contracts. A common result interface does not certify all three. |
| Numerical block | A site exposing a joint numeric state and explicit density, gradient or other sampler capabilities. Raster can compile those supplied functions. | Foerster does not automatically extract a differentiable density from an arbitrary simulator. |
A typical particle run starts from a world, records traces, maintains a population, then settles a measure and retires its owned worlds. Numerical methods can instead operate on block values. Read the algorithm guide for each entry point's model and world-policy requirements.
Causal inference, amortized inference and incremental trace inference each have additional model assumptions and current restrictions. In particular, counterfactuals need structural mechanisms and a declared noise coupling; an amortized sampler is an approximation whose training loss alone does not validate its posterior; fixed-target trace reuse does not implement a general reactive posterior controller.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |