pub struct ACSModelChecker {
pub(crate) ta_spec: TASpecOf<Self>,
pub(crate) unknown: Vec<String>,
pub(crate) ctx: SMTSolverBuilder,
}Expand description
Counter system based model checker
This crate implements a counter system based model checker as described
in the paper
“Parameterized Verification of Round-based Distributed Algorithms via Extended Threshold Automata”.
This model checker will construct the explicit counter system (ACS in the
paper), starting from potential error states and checking whether an initial
state is reachable.
If a path is found, the SMT checker will be used to check whether the path
is spurious.
Note that this model checker does not support “reachability” specifications, i.e. specifications, that require a location to be not covered by any process.
Fields§
§ta_spec: TASpecOf<Self>Threshold automata and specifications to check
unknown: Vec<String>Properties that could not be translated
ctx: SMTSolverBuilderSMT solver builder used for spurious checks
Trait Implementations§
Source§impl Clone for ACSModelChecker
impl Clone for ACSModelChecker
Source§fn clone(&self) -> ACSModelChecker
fn clone(&self) -> ACSModelChecker
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ACSModelChecker
impl Debug for ACSModelChecker
Source§impl ModelChecker for ACSModelChecker
impl ModelChecker for ACSModelChecker
Source§type ModelCheckerContext = SMTSolverBuilder
type ModelCheckerContext = SMTSolverBuilder
Source§type ModelCheckerOptions = Option<()>
type ModelCheckerOptions = Option<()>
Source§type ThresholdAutomatonType = IntervalThresholdAutomaton
type ThresholdAutomatonType = IntervalThresholdAutomaton
Source§type InitializationError = ACSModelCheckerInitializationError
type InitializationError = ACSModelCheckerInitializationError
Source§type ModelCheckingError = Infallible
type ModelCheckingError = Infallible
Source§fn initialize(
_mode: Self::ModelCheckerOptions,
ta_spec: TASpecOf<Self>,
unknown: Vec<String>,
ctx: Self::ModelCheckerContext,
) -> Result<Self, Self::InitializationError>
fn initialize( _mode: Self::ModelCheckerOptions, ta_spec: TASpecOf<Self>, unknown: Vec<String>, ctx: Self::ModelCheckerContext, ) -> Result<Self, Self::InitializationError>
Source§fn verify(
self,
abort_on_violation: bool,
) -> Result<ModelCheckerResult, Self::ModelCheckingError>
fn verify( self, abort_on_violation: bool, ) -> Result<ModelCheckerResult, Self::ModelCheckingError>
§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>>
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>>
Auto Trait Implementations§
impl Freeze for ACSModelChecker
impl RefUnwindSafe for ACSModelChecker
impl Send for ACSModelChecker
impl Sync for ACSModelChecker
impl Unpin for ACSModelChecker
impl UnsafeUnpin for ACSModelChecker
impl UnwindSafe for ACSModelChecker
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
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>
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>
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