1#![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
37pub 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}