Skip to main content

xlog_prob/
lib.rs

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