SpuriousGraphChecker

Struct SpuriousGraphChecker 

Source
pub struct SpuriousGraphChecker {
    solver: SMTSolver,
    spec: DisjunctionTargetConfig,
    cs_ta: Rc<ACSThresholdAutomaton>,
    ctx_mgr: SMTConfigMgr<LazyStepContext<ACSThresholdAutomaton, ConfigCtx>, ConfigCtx>,
}

Fields§

§solver: SMTSolver§spec: DisjunctionTargetConfig§cs_ta: Rc<ACSThresholdAutomaton>§ctx_mgr: SMTConfigMgr<LazyStepContext<ACSThresholdAutomaton, ConfigCtx>, ConfigCtx>

Implementations§

Source§

impl SpuriousGraphChecker

Source

pub fn new( ta: &ACSThresholdAutomaton, spec: DisjunctionTargetConfig, solver: SMTSolver, ) -> Self

Source

pub fn find_violation(&mut self, e_graph: &ErrorGraph) -> ModelCheckerResult

Source

fn explore_node_for_violation( &mut self, node: &Rc<RefCell<ErrorGraphNode>>, prev_cfg_ctx: Rc<ConfigCtx>, index: usize, ) -> ModelCheckerResult

Source

fn explore_next_interval_state_transition( &mut self, next_node: &Rc<RefCell<ErrorGraphNode>>, prev_cfg: Rc<ConfigCtx>, index: usize, ) -> ModelCheckerResult

Source

fn encode_and_assert_steady_path_with_rules( &mut self, appl_rules: &HashSet<u32>, prev_cfg: Rc<ConfigCtx>, next_cfg: Rc<ConfigCtx>, index: usize, ) -> LazyStepContext<ACSThresholdAutomaton, ConfigCtx>

Source

fn collect_enabled_rules_and_next_nodes( org_node: &Rc<RefCell<ErrorGraphNode>>, visited_nodes: &mut HashSet<ACSTAConfig>, ) -> (HashSet<u32>, Vec<Rc<RefCell<ErrorGraphNode>>>, bool)

This function collects the orders in which rules are applicable while staying in the same interval state along with the rules that would allow to transition out of the interval state.

The first set (HashSet<u32>) represents all applicable rules, and the second value is a vector of next nodes.

  • The second element (Vec<NodeRef>) contains nodes that represent possible transitions out of the current interval state.
  • The third element (bool) is true if any of the traversed nodes are in an error state, false otherwise.
Source

fn check_spurious_error(&mut self, ctx: &ConfigCtx) -> ModelCheckerResult

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.