[][src]Struct fbas_analyzer::Analysis

pub struct Analysis<'a> { /* fields omitted */ }

Front end for the most interesting FBAS analyses. Among other things, it does ID space shrinking (which improves memory and performance when using bit sets) and caches the results of long-running computations.

Implementations

impl<'a> Analysis<'a>[src]

pub fn new(fbas: &'a Fbas) -> Self[src]

Start a new Analysis

pub fn all_nodes(&self) -> NodeIdSetResult[src]

Nodes in the analyzed FBAS - not filtered by relevance.

pub fn satisfiable_nodes(&self) -> NodeIdSetResult[src]

Nodes in the analyzed FBAS that can be satisfied given their quorum sets and the nodes existing in the FBAS.

pub fn unsatisfiable_nodes(&self) -> NodeIdSetResult[src]

Nodes in the analyzed FBAS that can never be satisfied given their quorum sets and the nodes existing in the FBAS.

pub fn has_quorum_intersection(&self) -> bool[src]

Regular quorum intersection check via finding all minimal quorums. Algorithm inspired by Lachowski 2019).

pub fn has_quorum_intersection_via_alternative_check(
    &self
) -> (bool, Option<NodeIdSetVecResult>)
[src]

Quorum intersection check that works without enumerating all minimal quorums.

pub fn minimal_quorums(&self) -> NodeIdSetVecResult[src]

Minimal quorums - no proper subset of any of these node sets is a quorum.

pub fn minimal_blocking_sets(&self) -> NodeIdSetVecResult[src]

Minimal blocking sets - minimal indispensable sets for global liveness.

pub fn minimal_splitting_sets(&self) -> NodeIdSetVecResult[src]

Minimal splitting sets - minimal indispensable sets for safety.

pub fn top_tier(&self) -> NodeIdSetResult[src]

Top tier - the set of nodes exclusively relevant when determining minimal blocking sets and minimal splitting sets.

pub fn symmetric_clusters(&self) -> Vec<QuorumSet>[src]

Symmetric clusters - sets of nodes in which each two nodes have the same quorum set. Here, each found symmetric cluster is represented by its common quorum set.

Trait Implementations

impl<'a> Debug for Analysis<'a>[src]

Auto Trait Implementations

impl<'a> !RefUnwindSafe for Analysis<'a>

impl<'a> Send for Analysis<'a>

impl<'a> !Sync for Analysis<'a>

impl<'a> Unpin for Analysis<'a>

impl<'a> UnwindSafe for Analysis<'a>

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> Same<T> for T

type Output = T

Should always be Self

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>,