pub struct SMTModelChecker {
pub(crate) _opts: SMTModelCheckerOptions,
pub(crate) solver_builder: SMTSolverBuilder,
pub(crate) ta_spec: Vec<(DisjunctionTargetConfig, Vec<GeneralThresholdAutomaton>)>,
}Fields§
§_opts: SMTModelCheckerOptions§solver_builder: SMTSolverBuilder§ta_spec: Vec<(DisjunctionTargetConfig, Vec<GeneralThresholdAutomaton>)>Implementations§
Source§impl SMTModelChecker
impl SMTModelChecker
Sourcepub(crate) fn model_check_non_concurrent(
self,
abort_on_violation: bool,
) -> Result<ModelCheckerResult, ContextMgrError>
pub(crate) fn model_check_non_concurrent( self, abort_on_violation: bool, ) -> Result<ModelCheckerResult, ContextMgrError>
Execute the model checker sequentially
Sourcepub(crate) fn model_check_concurrent(
self,
abort_on_violation: bool,
) -> Result<ModelCheckerResult, ContextMgrError>
pub(crate) fn model_check_concurrent( self, abort_on_violation: bool, ) -> Result<ModelCheckerResult, ContextMgrError>
Verify all properties concurrently
This method will build a multi-threaded runtime and will attempt to check each property concurrently to attempt to reduce the overall runtime.
TODO: The setup is still very rudimentary and could be fine tuned in the future
Sourcepub(crate) async fn wait_for_mc_results(
futures: FuturesUnordered<JoinHandle<Result<ModelCheckerResult, ContextMgrError>>>,
abort_on_violation: bool,
completed_map: HashMap<String, (usize, Arc<AtomicUsize>)>,
) -> Result<ModelCheckerResult, ContextMgrError>
pub(crate) async fn wait_for_mc_results( futures: FuturesUnordered<JoinHandle<Result<ModelCheckerResult, ContextMgrError>>>, abort_on_violation: bool, completed_map: HashMap<String, (usize, Arc<AtomicUsize>)>, ) -> Result<ModelCheckerResult, ContextMgrError>
Helper method to collect the results and abort early if desired
Sourcepub(crate) async fn check_single_target(
ta: GeneralThresholdAutomaton,
target: DisjunctionTargetConfig,
solver_builder: SMTSolverBuilder,
safe_counter: Arc<AtomicUsize>,
) -> Result<ModelCheckerResult, ContextMgrError>
pub(crate) async fn check_single_target( ta: GeneralThresholdAutomaton, target: DisjunctionTargetConfig, solver_builder: SMTSolverBuilder, safe_counter: Arc<AtomicUsize>, ) -> Result<ModelCheckerResult, ContextMgrError>
Check reachability of a single [DisjunctionTargetConfig]
Source§impl SMTModelChecker
impl SMTModelChecker
pub fn new_mc() -> Self
pub fn new_mc_with_opts(opts: SMTModelCheckerOptions) -> Self
Trait Implementations§
Source§impl Clone for SMTModelChecker
impl Clone for SMTModelChecker
Source§fn clone(&self) -> SMTModelChecker
fn clone(&self) -> SMTModelChecker
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 SMTModelChecker
impl Debug for SMTModelChecker
Source§impl Default for SMTModelChecker
impl Default for SMTModelChecker
Source§impl ModelChecker for SMTModelChecker
impl ModelChecker for SMTModelChecker
Source§type ModelCheckerContext = SMTSolverBuilder
type ModelCheckerContext = SMTSolverBuilder
Context for the model checker which for example includes interfaces to
create solvers or BDD libraries
Source§type ModelCheckerOptions = SMTModelCheckerOptions
type ModelCheckerOptions = SMTModelCheckerOptions
Options for the model checker
Source§type SpecType = ReachabilityProperty
type SpecType = ReachabilityProperty
Internal specification representation the model checker uses
Source§type ThresholdAutomatonType = GeneralThresholdAutomaton
type ThresholdAutomatonType = GeneralThresholdAutomaton
Internal representation of a threshold automaton the model checker works
on
Source§type InitializationError = SMTModelCheckerInitializationError
type InitializationError = SMTModelCheckerInitializationError
Error type for errors that can occur during initialization of the model
checker
Source§type ModelCheckingError = ContextMgrError
type ModelCheckingError = ContextMgrError
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 SMTModelChecker
impl RefUnwindSafe for SMTModelChecker
impl Send for SMTModelChecker
impl Sync for SMTModelChecker
impl Unpin for SMTModelChecker
impl UnwindSafe for SMTModelChecker
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