IndexedSMTContext

Struct IndexedSMTContext 

Source
struct IndexedSMTContext {
    smt_solver: SMTSolver,
    config_ctxs: Vec<ConfigCtx>,
    param_to_smt: Rc<HashMap<Parameter, SMTExpr>>,
    curr_index: usize,
}
Expand description

An indexed SMT Context which creates and manages smt variables for parameters and indexed smt variables for Locations, Variables and Rules

The context keeps track of the current index for locations, variables and rules

Fields§

§smt_solver: SMTSolver

smt solver which used to evaluate SMT constraints

§config_ctxs: Vec<ConfigCtx>

smt variable contexts for configurations

§param_to_smt: Rc<HashMap<Parameter, SMTExpr>>

mapping from parameter to smt variable

§curr_index: usize

current index

Implementations§

Source§

impl IndexedSMTContext

Source

fn new<T: ThresholdAutomaton>( solver_builder: SMTSolverBuilder, len: usize, ta: &T, ) -> Self

creates a new IndexedSMTContext that creates smt variables for all indexed locations and shared variables up to index len, and all parameters

Source

fn set_curr_index(&mut self, i: usize)

updates the current index

Source

fn get_current_config_ctx(&self) -> &ConfigCtx

Get the current configuration context

Source

fn get_indexed_shared_smt(&self, var: &Variable, i: usize) -> SMTExpr

Get the smt expression for the indexed shared variable at index i

Source

fn get_indexed_loc_smt(&self, loc: &Location, i: usize) -> SMTExpr

Get the smt expression for the indexed location at index i

Source

fn get_assigned_configs(&mut self, res: SMTSolution) -> Vec<Configuration>

Extract the assigned configurations

Trait Implementations§

Source§

impl GetAssignment<Parameter> for IndexedSMTContext

§

fn get_assignment( &mut self, res: SMTSolution, var: &T, ) -> Result<Option<u64>, SMTSolverError>

Get the assigned solution of the variable Read more
Source§

impl SMTSolverContext for IndexedSMTContext

Source§

fn get_smt_solver(&self) -> &SMTSolver

Get the SMT solver associated with this context
Source§

fn get_smt_solver_mut(&mut self) -> &mut SMTSolver

Get a mutable reference to the SMT solver associated with this context
§

fn assert_and_check_expr( &mut self, expr: SExpr, ) -> Result<SMTSolution, SMTSolverError>

Check the satisfiability of the given [SMTExpr]
Source§

impl SMTVariableContext<Parameter> for IndexedSMTContext

Source§

fn get_expr_for(&self, param: &Parameter) -> Result<SMTExpr, SMTSolverError>

Get the corresponding [SMTExpr] for the given expression of type T Read more
Source§

fn get_exprs<'a>(&'a self) -> impl IntoIterator<Item = &'a Parameter>
where Parameter: 'a,

Get all expressions for which the current context holds an assignment
§

fn get_solution<'a>( &'a self, solver: &mut Context, res: SMTSolution, ) -> Result<HashMap<T, u32>, SMTSolverError>
where T: 'a + Eq + Hash + Clone,

Get the solution assignment

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.