mod batch;
pub(crate) mod certify;
mod expr;
mod lower;
mod nf;
mod solve;
mod threaded;
pub use crate::engine::CertStats;
pub use certify::NativeProver;
pub use nf::{NfOptions, NfStats, NormalFormSolver};
pub use threaded::ThreadedSolver;
pub use expr::{MNode, MOp, MbaError, MbaExpr, Shape};
pub use lower::{Bindings, MbaLimits, Refusal, lift, lower};
pub(crate) use lower::{fits, lift_id, lower_id};
pub use solve::{
CacheEntry, CacheKey, Claim, EquivalenceProver, MbaAnswer, MbaBudget, MbaCacheStore, MbaSolver,
MemoryCache, NoCache, SignatureSolver, Verdict,
};
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub struct MbaTrust {
pub backend_certificates: bool,
pub sampled: bool,
}
setters!(MbaTrust {
with_backend_certificates: backend_certificates: bool,
with_sampled: sampled: bool,
});
impl Default for MbaTrust {
fn default() -> Self {
MbaTrust {
backend_certificates: false,
sampled: false,
}
}
}
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub struct MbaConfig {
pub limits: MbaLimits,
pub trust: MbaTrust,
pub budget: MbaBudget,
}
setters!(MbaConfig {
with_limits: limits: MbaLimits,
with_trust: trust: MbaTrust,
with_budget: budget: MbaBudget,
});
pub(crate) const LOWERING_VERSION: u64 = 1;
#[cfg(test)]
mod tests;