pub struct VerifyEngine<'tcx> {
slicer: BackwardSlicer<'tcx>,
vm: SymbolicVm<'tcx>,
checker: PropertyChecker,
}Fields§
§slicer: BackwardSlicer<'tcx>§vm: SymbolicVm<'tcx>§checker: PropertyCheckerImplementations§
Source§impl<'tcx> VerifyEngine<'tcx>
impl<'tcx> VerifyEngine<'tcx>
pub fn new(tcx: TyCtxt<'tcx>) -> Self
fn new_z3_context() -> Context
pub fn check_callsite_from_tree( &self, tree: &PathTree, checkpoint: &Checkpoint<'tcx>, property: &Property<'tcx>, caller_contracts: &[Property<'tcx>], ) -> Vec<(CheckResult, String)>
fn callee_is_simple(tcx: TyCtxt<'_>, callee_def_id: DefId) -> bool
Sourcefn inject_inline_callees(
&self,
items: Vec<RelevantItem<'tcx>>,
caller_def_id: DefId,
depth: usize,
) -> Vec<RelevantItem<'tcx>>
fn inject_inline_callees( &self, items: Vec<RelevantItem<'tcx>>, caller_def_id: DefId, depth: usize, ) -> Vec<RelevantItem<'tcx>>
Scan the relevant items for unsupported Call terminators whose callee
has available MIR. For each such call, inject CalleeEntry + callee
MIR items + CalleeExit, replacing the original terminator.
Sourcefn build_callee_items(
&self,
callee_def_id: DefId,
depth: usize,
) -> Vec<RelevantItem<'tcx>>
fn build_callee_items( &self, callee_def_id: DefId, depth: usize, ) -> Vec<RelevantItem<'tcx>>
Build a linear sequence of relevant items for a callee’s MIR body. Walks BFS from the entry block, collecting statements and terminators.
fn bind_property_to_checkpoint( property: &Property<'tcx>, checkpoint: &Checkpoint<'tcx>, ) -> Property<'tcx>
fn rebind_place( place: &ContractPlace<'tcx>, checkpoint: &Checkpoint<'tcx>, ) -> ContractPlace<'tcx>
fn rebind_contract_expr( expr: &ContractExpr<'tcx>, checkpoint: &Checkpoint<'tcx>, ) -> ContractExpr<'tcx>
pub fn check_invariant_from_tree( &self, def_id: DefId, tree: &PathTree, checkpoint: CheckpointLocation, invariant: &Property<'tcx>, entry_facts: &[RelevantItem<'tcx>], ) -> Vec<(CheckResult, String)>
Auto Trait Implementations§
impl<'tcx> !RefUnwindSafe for VerifyEngine<'tcx>
impl<'tcx> !Send for VerifyEngine<'tcx>
impl<'tcx> !Sync for VerifyEngine<'tcx>
impl<'tcx> !UnwindSafe for VerifyEngine<'tcx>
impl<'tcx> DynSend for VerifyEngine<'tcx>
impl<'tcx> DynSync for VerifyEngine<'tcx>
impl<'tcx> Freeze for VerifyEngine<'tcx>
impl<'tcx> Unpin for VerifyEngine<'tcx>
impl<'tcx> UnsafeUnpin 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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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