Struct stateright::Property[][src]

pub struct Property<M: Model> {
    pub expectation: Expectation,
    pub name: &'static str,
    pub condition: fn(_: &M, _: &M::State) -> bool,
}
Expand description

A named predicate, such as “an epoch sometimes has no leader” (for which the the model checker would find an example) or “an epoch always has at most one leader” (for which the model checker would find a counterexample) or “a proposal is eventually accepted” (for which the model checker would find a counterexample path leading from the initial state through to a terminal state).

Fields

expectation: Expectationname: &'static strcondition: fn(_: &M, _: &M::State) -> bool

Implementations

impl<M: Model> Property<M>[src]

pub fn always(
    name: &'static str,
    condition: fn(_: &M, _: &M::State) -> bool
) -> Property<M>
[src]

An invariant that defines a safety property. The model checker will try to discover a counterexample.

pub fn eventually(
    name: &'static str,
    condition: fn(_: &M, _: &M::State) -> bool
) -> Property<M>
[src]

An invariant that defines a liveness property. The model checker will try to discover a counterexample path leading from the initial state through to a terminal state.

Note that in this implementation eventually properties only work correctly on acyclic paths (those that end in either states with no successors or checking boundaries). A path ending in a cycle is not viewed as terminating in that cycle, as the checker does not differentiate cycles from DAG joins, and so an eventually property that has not been met by the cycle-closing edge will ignored – a false negative.

pub fn sometimes(
    name: &'static str,
    condition: fn(_: &M, _: &M::State) -> bool
) -> Property<M>
[src]

Something that should be possible in the model. The model checker will try to discover an example.

Trait Implementations

impl<M: Model> Clone for Property<M>[src]

fn clone(&self) -> Self[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl<M> RefUnwindSafe for Property<M>

impl<M> Send for Property<M>

impl<M> Sync for Property<M>

impl<M> Unpin for Property<M>

impl<M> UnwindSafe for Property<M>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V