Skip to main content

xlog_prob/
lib.rs

1//! Probabilistic reasoning tier for XLOG.
2#![warn(missing_docs)]
3
4mod aggregates;
5pub mod cnf;
6pub mod compilation;
7mod decision_order;
8pub mod epistemic;
9pub mod epistemic_production;
10pub mod exact;
11pub mod gpu;
12/// Knowledge-compilation circuit representations.
13pub mod kc;
14mod logsumexp;
15pub mod mc;
16pub mod neural_fast_path;
17pub mod pir;
18pub mod provenance;
19pub mod wfs;
20pub mod xgcf;
21
22pub use pir::{ChoiceVarId, LeafId, PirGraph, PirNode, PirNodeId};
23pub use provenance::{
24    AggregateLiftReport, AggregateLiftStatus, ChoiceSource, GroundAtom, Provenance, Value,
25};
26
27// Primary entry points (convenience re-exports)
28pub use compilation::{
29    compile_gpu_d4_and_verify, compile_gpu_d4_and_verify_cached, CircuitCompileProfile,
30    GpuCompileConfig,
31};
32pub use exact::{ExactDdnnfProgram, ExactResult, GpuConfig, ProbVarInfo};
33pub use mc::{
34    EvidenceForcing, ForceabilityReason, McCountStrategy, McDeviceResult, McEvalConfig,
35    McHotLoopTransfers, McProgram, McResult, McSamplingMethod,
36};
37pub use wfs::{
38    evaluate_wfs_rules, evaluate_wfs_with_rules, TruthValue, WfsAtom, WfsConfig, WfsLiteral,
39    WfsResult, WfsRule,
40};
41
42#[cfg(test)]
43pub(crate) mod test_gpu_lock {
44    use std::sync::{Mutex, MutexGuard, OnceLock};
45
46    pub(crate) fn lock() -> MutexGuard<'static, ()> {
47        static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
48        LOCK.get_or_init(|| Mutex::new(()))
49            .lock()
50            .unwrap_or_else(|poisoned| poisoned.into_inner())
51    }
52}