Skip to main content

Module probabilistic_program_engine

Module probabilistic_program_engine 

Source
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§

PpeEngineConfig
Configuration knobs for ProbabilisticProgramEngine.
PpeSampleResult
Summary returned by ProbabilisticProgramEngine::sample.
PpeSamplingStats
Diagnostics returned by ProbabilisticProgramEngine::sampling_stats.
PpeVarId
Unique identifier for a probabilistic variable: 16 opaque bytes.
ProbVar
A named random variable with a prior and an optional current value.
ProbabilisticProgramEngine
The main engine struct — declared here so all modules share one definition.

Enums§

PpePrior
Prior probability distribution for a probabilistic variable.
PpeSamplingMethod
Sampling algorithm to use when calling ProbabilisticProgramEngine::sample.

Type Aliases§

PpeProbVar
Alias: public name for ProbVar.
VarId
Re-export: PpeVarId as the canonical VarId used internally.