[][src]Struct stateright::Property

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

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.

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]

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

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

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

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

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.

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.

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