pub struct TransitionSystem {
pub registers: Vec<Register>,
pub property: BoundedExpr,
}Expand description
A synchronous transition system over Boolean and bitvector registers.
Fields§
§registers: Vec<Register>§property: BoundedExprThe safety property that must hold in every reachable state (unindexed, boolean).
Implementations§
Source§impl TransitionSystem
impl TransitionSystem
Sourcepub fn bmc(&self, max_k: u32) -> BmcOutcome
pub fn bmc(&self, max_k: u32) -> BmcOutcome
Bounded model check: is a state violating property reachable within max_k steps?
Sourcepub fn prove_invariant(&self, k: u32) -> InductionOutcome
pub fn prove_invariant(&self, k: u32) -> InductionOutcome
Prove (by k-induction) that property holds in EVERY reachable state.
Sourcepub fn witness_trace(&self, steps: u32) -> Option<Vec<(String, bool)>>
pub fn witness_trace(&self, steps: u32) -> Option<Vec<(String, bool)>>
A concrete witnessing execution: a model of init ∧ trans(0..steps) with NO property
negation. For a deterministic controller this is the unique real run from the initial
state — used to ANIMATE the proven-safe machine, which (by construction) has no
counterexample to show. Returns the signal@t bit assignments of the run, or None if
the obligation leaves the supported fragment.
Trait Implementations§
Source§impl Clone for TransitionSystem
impl Clone for TransitionSystem
Source§fn clone(&self) -> TransitionSystem
fn clone(&self) -> TransitionSystem
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for TransitionSystem
impl RefUnwindSafe for TransitionSystem
impl Send for TransitionSystem
impl Sync for TransitionSystem
impl Unpin for TransitionSystem
impl UnsafeUnpin for TransitionSystem
impl UnwindSafe for TransitionSystem
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,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.