1#![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;
12pub 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
27pub 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}