pub struct KripkeStructure {
pub num_states: usize,
pub initial_states: Vec<usize>,
pub transition_relation: Vec<Vec<usize>>,
pub labeling: Vec<StateLabel>,
}Expand description
A Kripke structure M = (S, S_0, R, L).
Fields§
§num_states: usizeTotal number of states (states are 0..num_states).
initial_states: Vec<usize>Initial states.
transition_relation: Vec<Vec<usize>>Transition relation: transition_relation[s] = successors of s.
labeling: Vec<StateLabel>Labeling function.
Implementations§
Source§impl KripkeStructure
impl KripkeStructure
Sourcepub fn add_initial(&mut self, s: usize)
pub fn add_initial(&mut self, s: usize)
Mark state s as an initial state.
Sourcepub fn add_transition(&mut self, s: usize, t: usize)
pub fn add_transition(&mut self, s: usize, t: usize)
Add a transition from s to t.
Sourcepub fn label_state(&mut self, s: usize, prop: impl Into<String>)
pub fn label_state(&mut self, s: usize, prop: impl Into<String>)
Add a proposition to a state’s label.
Sourcepub fn reachable_states(&self) -> HashSet<usize>
pub fn reachable_states(&self) -> HashSet<usize>
Return all states reachable from initial states via BFS.
Sourcepub fn is_connected(&self) -> bool
pub fn is_connected(&self) -> bool
Returns true if all states are reachable from the initial states.
Sourcepub fn compute_scc(&self) -> Vec<Vec<usize>>
pub fn compute_scc(&self) -> Vec<Vec<usize>>
Compute strongly connected components (Kosaraju’s algorithm).
Trait Implementations§
Source§impl Clone for KripkeStructure
impl Clone for KripkeStructure
Source§fn clone(&self) -> KripkeStructure
fn clone(&self) -> KripkeStructure
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 moreAuto Trait Implementations§
impl Freeze for KripkeStructure
impl RefUnwindSafe for KripkeStructure
impl Send for KripkeStructure
impl Sync for KripkeStructure
impl Unpin for KripkeStructure
impl UnsafeUnpin for KripkeStructure
impl UnwindSafe for KripkeStructure
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