pub(crate) struct SymbolicVm;Expand description
Entry point for symbolic MIR execution.
Stateless: the inputs to a run (the Z3 context, compiler type context, and
the sliced program) are passed to [run], so this struct carries no state
of its own.
Implementations§
Source§impl SymbolicVm
impl SymbolicVm
Sourcepub(crate) fn run<'z3, 'tcx>(
&self,
z3_ctx: &'z3 Context,
tcx: TyCtxt<'tcx>,
goal: ProofGoal<'tcx>,
) -> VmState<'z3, 'tcx>
pub(crate) fn run<'z3, 'tcx>( &self, z3_ctx: &'z3 Context, tcx: TyCtxt<'tcx>, goal: ProofGoal<'tcx>, ) -> VmState<'z3, 'tcx>
Run the sliced program goal (the path and its retained MIR items) and
produce the resulting symbolic state.
The Z3 context is borrowed (not owned) so a single context can be reused
across property checks; run is a pure input -> state mapping — the
program to execute (goal) is consumed here and is never stored in the
returned VmState.
Auto Trait Implementations§
impl DynSend for SymbolicVm
impl DynSync for SymbolicVm
impl Freeze for SymbolicVm
impl RefUnwindSafe for SymbolicVm
impl Send for SymbolicVm
impl Sync for SymbolicVm
impl Unpin for SymbolicVm
impl UnsafeUnpin for SymbolicVm
impl UnwindSafe for SymbolicVm
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