pub(crate) mod alias;
pub(crate) mod alias_hazard;
pub(crate) mod alias_tree;
pub(crate) mod call;
pub(crate) mod display;
pub(crate) mod exec;
pub(crate) mod memory;
pub(crate) mod region;
pub(crate) mod state;
use rustc_middle::ty::TyCtxt;
use z3::Context;
use crate::verify::slicer::ProofGoal;
pub(crate) use self::state::VmState;
pub(crate) struct SymbolicVm;
impl SymbolicVm {
pub(crate) fn new() -> Self {
Self
}
pub(crate) fn run<'z3, 'tcx>(
&self,
z3_ctx: &'z3 Context,
tcx: TyCtxt<'tcx>,
goal: ProofGoal<'tcx>,
) -> VmState<'z3, 'tcx> {
let mut state = VmState::new(z3_ctx, tcx, &goal.path, goal.path.target.caller);
state.execute_items(&goal.items);
state
}
}