pub struct EContextMgr {
solver: SMTSolver,
ta: Rc<GeneralThresholdAutomaton>,
k: usize,
ctx_mgr: SMTConfigMgr<LazyStepContext<GeneralThresholdAutomaton, ConfigCtx>, ConfigCtx>,
}Fields§
§solver: SMTSolver§ta: Rc<GeneralThresholdAutomaton>§k: usize§ctx_mgr: SMTConfigMgr<LazyStepContext<GeneralThresholdAutomaton, ConfigCtx>, ConfigCtx>Implementations§
Source§impl EContextMgr
impl EContextMgr
pub fn new( ta: GeneralThresholdAutomaton, target_constr: &[&LIAVariableConstraint], smt_builder: &SMTSolverBuilder, ) -> Result<Self, ContextMgrError>
Sourcepub fn check_spec(self, spec: &DisjunctionTargetConfig) -> Option<Path>
pub fn check_spec(self, spec: &DisjunctionTargetConfig) -> Option<Path>
Check whether spec holds
If the specification holds None is returned. Otherwise an error path is returned
Sourcefn compute_k_for_ta(
ta: &GeneralThresholdAutomaton,
target_constr: &[&LIAVariableConstraint],
) -> Result<usize, ContextMgrError>
fn compute_k_for_ta( ta: &GeneralThresholdAutomaton, target_constr: &[&LIAVariableConstraint], ) -> Result<usize, ContextMgrError>
Compute the number K for the threshold automaton
In the paper, the number of guards is simply given as the size of the set of guards ϕ plus one, i.e. K = |ϕ| + 1.
However, this assumes that all guards are in their strict upper and
lower guard form. Therefore we need to convert the threshold automaton
first into a LIAThresholdAutomaton and then compute the number K.
Sourcefn encode_phi_reach(&mut self, spec: &DisjunctionTargetConfig)
fn encode_phi_reach(&mut self, spec: &DisjunctionTargetConfig)
Encodes the ϕ_{reach} of the threshold automaton
Sourcefn encode_final_error_condition(
&self,
spec: &DisjunctionTargetConfig,
) -> SMTExpr
fn encode_final_error_condition( &self, spec: &DisjunctionTargetConfig, ) -> SMTExpr
Encodes the goal condition of the threshold automaton into an SMT
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for EContextMgr
impl !RefUnwindSafe for EContextMgr
impl !Send for EContextMgr
impl !Sync for EContextMgr
impl Unpin for EContextMgr
impl !UnwindSafe for EContextMgr
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