pub(crate) mod arjun;
mod arjun_lib;
mod backbone;
mod backbone_pipeline;
pub(crate) mod bve_project;
pub(crate) mod cadical;
pub(crate) mod cadical_ffi;
mod count_preserve;
mod dve;
mod equivalence;
mod fork_budget;
mod fork_payload;
mod fork_result;
mod gates;
mod meter;
mod pipelines;
mod probe_engine;
pub(crate) mod projected;
mod renumber;
pub(crate) mod simplify;
mod tarjan;
pub(crate) mod unit_propagation;
mod var_map;
pub(crate) mod weighted_lift;
pub use arjun::{ArjunEffort, ArjunOptions, ArjunSbva, OracleCaps};
pub use var_map::{OriginalMap, OriginalTarget, VarMap};
pub(crate) use arjun_lib::export_learned_clauses_enabled;
pub(crate) use backbone_pipeline::BackboneStats;
#[cfg(test)]
pub(crate) use backbone_pipeline::preprocess_backbone_eq_iter;
pub(crate) use dve::build_dual_cnf_with_indicators;
pub(crate) use pipelines::PipelineOutput;
pub(crate) fn env_defaults() -> Result<ArjunOptions, crate::error::VitriError> {
let default = ArjunOptions::default();
Ok(ArjunOptions {
effort: arjun_lib::resolve_arjun_effort()?,
sbva: ArjunSbva::from_env()?,
oracle_max_vars: OracleCaps {
projected: Some(arjun_lib::projected_oracle_max_vars(
"VITRI_PMC_ARJUN_ORACLE_MAX_VARS",
)?),
weighted_projected: Some(arjun_lib::projected_oracle_max_vars(
"VITRI_PWMC_ARJUN_ORACLE_MAX_VARS",
)?),
..default.oracle_max_vars
},
keep_overrun: arjun_lib::keep_overrun_enabled()?,
seed: crate::env::parse("VITRI_ARJUN_SEED", default.seed, "a seed, a whole number")?,
export_learned_clauses: export_learned_clauses_enabled()?,
..default
})
}
#[cfg(test)]
mod tests;