pub struct ZCSModelChecker {
pub(crate) ctx: SMTBddContext,
pub(crate) ta_spec: Vec<(DisjunctionTargetConfig, Vec<IntervalThresholdAutomaton>)>,
pub(crate) heuristics: ZCSModelCheckerHeuristics,
}Expand description
This struct defines a symbolic model checker (ZCS model checker) It can be used to check reachability and coverability specifications Depending on the chosen search heuristics:
- it can verify extended threshold automata with a semi-decision procedure
- it can verify canonical threshold automata with a decision procedure
Fields§
§ctx: SMTBddContextmodel checker context
ta_spec: Vec<(DisjunctionTargetConfig, Vec<IntervalThresholdAutomaton>)>specifications to be checked
heuristics: ZCSModelCheckerHeuristicssymbolic model checker heuristics
Implementations§
Source§impl ZCSModelChecker
impl ZCSModelChecker
Sourcepub(crate) fn compute_zcs<'a>(
&'a self,
ta: &'a IntervalThresholdAutomaton,
) -> ZCS<'a>
pub(crate) fn compute_zcs<'a>( &'a self, ta: &'a IntervalThresholdAutomaton, ) -> ZCS<'a>
constructs the symbolic 01-CS (ZCS) and initializes the bdd var manager
construct the symbolic shared variable state that satisfies the interval constraint of a target configuration
Sourcepub(crate) fn compute_error_states(
cs: &ZCS<'_>,
ta: &IntervalThresholdAutomaton,
specification: &DisjunctionTargetConfig,
) -> Result<ZCSStates, ZCSModelCheckerError>
pub(crate) fn compute_error_states( cs: &ZCS<'_>, ta: &IntervalThresholdAutomaton, specification: &DisjunctionTargetConfig, ) -> Result<ZCSStates, ZCSModelCheckerError>
constructs the set of error states for a given spec and 01-CS (ZCS)
Sourcepub(crate) fn compute_symbolic_error_graph<'a>(
&'a self,
ta: &'a IntervalThresholdAutomaton,
spec: &DisjunctionTargetConfig,
) -> ZCSErrorGraph<'a>
pub(crate) fn compute_symbolic_error_graph<'a>( &'a self, ta: &'a IntervalThresholdAutomaton, spec: &DisjunctionTargetConfig, ) -> ZCSErrorGraph<'a>
constructs the symbolic error graph (ZCS error graph) for the underlying 01-CS (ZCS)
Trait Implementations§
Source§impl Clone for ZCSModelChecker
impl Clone for ZCSModelChecker
Source§fn clone(&self) -> ZCSModelChecker
fn clone(&self) -> ZCSModelChecker
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ZCSModelChecker
impl Debug for ZCSModelChecker
Source§impl Default for ZCSModelChecker
impl Default for ZCSModelChecker
Source§impl ModelChecker for ZCSModelChecker
impl ModelChecker for ZCSModelChecker
Source§type ModelCheckerContext = SMTBddContext
type ModelCheckerContext = SMTBddContext
Context for the model checker which for example includes interfaces to
create solvers or BDD libraries
Source§type ModelCheckerOptions = Option<ZCSModelCheckerHeuristics>
type ModelCheckerOptions = Option<ZCSModelCheckerHeuristics>
Options for the model checker
Source§type SpecType = ReachabilityProperty
type SpecType = ReachabilityProperty
Internal specification representation the model checker uses
Source§type ThresholdAutomatonType = IntervalThresholdAutomaton
type ThresholdAutomatonType = IntervalThresholdAutomaton
Internal representation of a threshold automaton the model checker works
on
Source§type InitializationError = ZCSModelCheckerInitializationError
type InitializationError = ZCSModelCheckerInitializationError
Error type for errors that can occur during initialization of the model
checker
Source§type ModelCheckingError = ZCSModelCheckerError
type ModelCheckingError = ZCSModelCheckerError
Error type for errors that can occur during the run of the model checker
Source§fn initialize(
opts: Self::ModelCheckerOptions,
ta_spec: Vec<(DisjunctionTargetConfig, Vec<Self::ThresholdAutomatonType>)>,
ctx: Self::ModelCheckerContext,
) -> Result<Self, Self::InitializationError>
fn initialize( opts: Self::ModelCheckerOptions, ta_spec: Vec<(DisjunctionTargetConfig, Vec<Self::ThresholdAutomatonType>)>, ctx: Self::ModelCheckerContext, ) -> Result<Self, Self::InitializationError>
Initialize the model checker with the internal threshold automaton and
specification representation Read more
Source§fn verify(
self,
abort_on_violation: bool,
) -> Result<ModelCheckerResult, Self::ModelCheckingError>
fn verify( self, abort_on_violation: bool, ) -> Result<ModelCheckerResult, Self::ModelCheckingError>
Start the model checker Read more
§fn new(
ctx_opts: Option<<Self::ModelCheckerContext as ModelCheckerContext>::ContextOptions>,
mc_opts: Self::ModelCheckerOptions,
preprocessors: Vec<Box<dyn Preprocessor<GeneralThresholdAutomaton, <Self::SpecType as SpecificationTrait<Self::ModelCheckerContext>>::InternalSpecType, Self::ModelCheckerContext>>>,
ta: GeneralThresholdAutomaton,
spec: impl Iterator<Item = (String, ELTLExpression)>,
) -> Result<Self, ModelCheckerSetupError<<Self::ThresholdAutomatonType as TATrait<Self::ModelCheckerContext, <Self::SpecType as SpecificationTrait<Self::ModelCheckerContext>>::InternalSpecType>>::TransformationError, <Self::SpecType as SpecificationTrait<Self::ModelCheckerContext>>::TransformationError, <Self::ModelCheckerContext as ModelCheckerContext>::CreationError, Self::InitializationError>>
fn new( ctx_opts: Option<<Self::ModelCheckerContext as ModelCheckerContext>::ContextOptions>, mc_opts: Self::ModelCheckerOptions, preprocessors: Vec<Box<dyn Preprocessor<GeneralThresholdAutomaton, <Self::SpecType as SpecificationTrait<Self::ModelCheckerContext>>::InternalSpecType, Self::ModelCheckerContext>>>, ta: GeneralThresholdAutomaton, spec: impl Iterator<Item = (String, ELTLExpression)>, ) -> Result<Self, ModelCheckerSetupError<<Self::ThresholdAutomatonType as TATrait<Self::ModelCheckerContext, <Self::SpecType as SpecificationTrait<Self::ModelCheckerContext>>::InternalSpecType>>::TransformationError, <Self::SpecType as SpecificationTrait<Self::ModelCheckerContext>>::TransformationError, <Self::ModelCheckerContext as ModelCheckerContext>::CreationError, Self::InitializationError>>
Construct a new instance of the model checker Read more
Auto Trait Implementations§
impl Freeze for ZCSModelChecker
impl !RefUnwindSafe for ZCSModelChecker
impl !Send for ZCSModelChecker
impl !Sync for ZCSModelChecker
impl Unpin for ZCSModelChecker
impl !UnwindSafe for ZCSModelChecker
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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