//! Varisat internal interface used for on-the-fly checking. use partial_ref::{IntoPartialRefMut, PartialRef}; use varisat_internal_proof::ProofStep; use crate::{ state::{check_step, process_unit_conflicts}, Checker, CheckerError, }; /// Varisat internal interface used for on-the-fly checking. /// /// This should only be used within other Varisat crates. It is not considered part of the public /// API and may change at any time. pub trait SelfChecker { fn self_check_step(&mut self, step: ProofStep) -> Result<(), CheckerError>; fn self_check_delayed_steps(&mut self) -> Result<(), CheckerError>; } impl<'a> SelfChecker for Checker<'a> { fn self_check_step(&mut self, step: ProofStep) -> Result<(), CheckerError> { self.ctx.checker_state.step += 1; let mut ctx = self.ctx.into_partial_ref_mut(); check_step(ctx.borrow(), step) } fn self_check_delayed_steps(&mut self) -> Result<(), CheckerError> { let mut ctx = self.ctx.into_partial_ref_mut(); process_unit_conflicts(ctx.borrow()) } }