Expand description
Probabilistic Program Engine — Bayesian reasoning and posterior sampling.
§Overview
ProbabilisticProgramEngine provides a flexible probabilistic programming
environment for Bayesian inference. Variables are declared with a prior
distribution; observations fix concrete likelihoods; the engine then draws
posterior samples via one of four sampling strategies:
- Metropolis-Hastings — single-variable random-walk MCMC.
- Gibbs Sampling — coordinate-wise conditional sampling.
- Importance Sampling — weighted samples from the prior.
- Rejection Sampling — accept/reject from prior using unnormalised likelihood.
After sampling, marginal posteriors, credible intervals, and histogram approximations are available.
All random number generation uses an inline xorshift64 PRNG seeded from
PpeEngineConfig::seed; no external RNG crates are required.
§Quick-Start
use ipfrs_tensorlogic::probabilistic_program_engine::{
PpeEngineConfig, PpePrior, PpeSamplingMethod, ProbabilisticProgramEngine,
};
let config = PpeEngineConfig {
n_samples: 500,
burn_in: 100,
thinning: 2,
seed: 42,
};
let mut engine = ProbabilisticProgramEngine::new(config);
// Add a Normally-distributed variable mu ~ N(0, 1).
let mu_id = engine.add_variable("mu".into(), PpePrior::Normal { mean: 0.0, std: 1.0 });
// Condition on an observation.
engine.observe(mu_id, 0.5);
// Run Metropolis-Hastings.
let result = engine.sample(PpeSamplingMethod::MetropolisHastings).expect("example: should succeed in docs");
assert!(result.accepted_samples > 0);
// Posterior statistics.
let mean = engine.posterior_mean(mu_id).expect("example: should succeed in docs");
println!("Posterior mean of mu ≈ {mean:.4}");Structs§
- PpeEngine
Config - Configuration knobs for
ProbabilisticProgramEngine. - PpeSample
Result - Summary returned by
ProbabilisticProgramEngine::sample. - PpeSampling
Stats - Diagnostics returned by
ProbabilisticProgramEngine::sampling_stats. - PpeVar
Id - Unique identifier for a probabilistic variable: 16 opaque bytes.
- ProbVar
- A named random variable with a prior and an optional current value.
- Probabilistic
Program Engine - The main engine struct — declared here so all modules share one definition.
Enums§
- PpePrior
- Prior probability distribution for a probabilistic variable.
- PpeSampling
Method - Sampling algorithm to use when calling
ProbabilisticProgramEngine::sample.
Type Aliases§
- PpeProb
Var - Alias: public name for
ProbVar. - VarId
- Re-export:
PpeVarIdas the canonicalVarIdused internally.