pub struct VerifyEngine<'tcx> {
slicer: BackwardSlicer<'tcx>,
verifier: ForwardVerifier<'tcx>,
checker: SmtChecker<'tcx>,
}Expand description
Thin wrapper around the three-stage verification pipeline.
Each structural check (checkpoint or invariant) delegates to one of the two public methods; the engine handles visitor bookkeeping internally.
Fields§
§slicer: BackwardSlicer<'tcx>§verifier: ForwardVerifier<'tcx>§checker: SmtChecker<'tcx>Implementations§
Source§impl<'tcx> VerifyEngine<'tcx>
impl<'tcx> VerifyEngine<'tcx>
Sourcepub fn check_invariant_from_tree(
&self,
def_id: DefId,
tree: &PathTree,
checkpoint: CheckpointLocation,
invariant: &Property<'tcx>,
entry_facts: &[BackwardItem<'tcx>],
) -> Vec<InvariantCheckResult>
pub fn check_invariant_from_tree( &self, def_id: DefId, tree: &PathTree, checkpoint: CheckpointLocation, invariant: &Property<'tcx>, entry_facts: &[BackwardItem<'tcx>], ) -> Vec<InvariantCheckResult>
Run the invariant-check pipeline in bulk using a per-checkpoint path tree.
Calls visit_path_tree_for_checkpoint once, then forward + SMT per
path. The tree already contains only paths reaching checkpoint;
common prefixes are shared to avoid redundant backward analysis.
Sourcepub fn check_callsite_from_tree(
&self,
tree: &PathTree,
checkpoint: &Checkpoint<'tcx>,
property: &Property<'tcx>,
caller_contracts: &[Property<'tcx>],
) -> Vec<(ForwardVisitResult<'tcx>, SmtCheckResult)>
pub fn check_callsite_from_tree( &self, tree: &PathTree, checkpoint: &Checkpoint<'tcx>, property: &Property<'tcx>, caller_contracts: &[Property<'tcx>], ) -> Vec<(ForwardVisitResult<'tcx>, SmtCheckResult)>
Run the checkpoint-check pipeline in bulk using a per-checkpoint path tree.
Calls visit_path_tree once, then forward + SMT per path.
Auto Trait Implementations§
impl<'tcx> Freeze for VerifyEngine<'tcx>
impl<'tcx> !RefUnwindSafe for VerifyEngine<'tcx>
impl<'tcx> !Send for VerifyEngine<'tcx>
impl<'tcx> !Sync for VerifyEngine<'tcx>
impl<'tcx> Unpin for VerifyEngine<'tcx>
impl<'tcx> !UnwindSafe for VerifyEngine<'tcx>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more