ErrorGraphNode

Struct ErrorGraphNode 

Source
pub struct ErrorGraphNode {
    error_level: usize,
    config: ACSTAConfig,
    parents: Vec<ErrorGraphEdge>,
    self_loops: Vec<u32>,
    back_edges: Vec<ErrorGraphEdge>,
}
Expand description

Node in the error graph

Fields§

§error_level: usize

Distance to an error configuration

§config: ACSTAConfig

Configuration

§parents: Vec<ErrorGraphEdge>

Parent nodes ErrorGraphEdges to nodes with a smaller distance to an error

§self_loops: Vec<u32>

Rules that result in a self-loop

§back_edges: Vec<ErrorGraphEdge>

ErrorGraphEdges to a equal or higher error level node, potentially part of a cycle

Implementations§

Source§

impl ErrorGraphNode

Source

pub fn parents(&self) -> impl Iterator<Item = &ErrorGraphEdge>

Get the error graph edges leading to the parents of the current node

The edges returned here will have an error level smaller than the current node

Source

pub fn self_loops(&self) -> impl Iterator<Item = &u32>

Get all rules that can be self-loops

Source

pub fn back_edges(&self) -> impl Iterator<Item = &ErrorGraphEdge>

Get rules that can lead to higher or equal error level

Source

pub fn config(&self) -> &ACSTAConfig

Get the configuration of the current node

Source

pub fn error_level(&self) -> usize

Get the error level of the current node

Source

pub fn new_roots_from_spec( spec: &DisjunctionTargetConfig, ta: &ACSThresholdAutomaton, ) -> PartiallyOrderedConfigMap<Rc<RefCell<ErrorGraphNode>>>

Create new root error nodes from the specification

Note: This function only returns the root of the error graph, to construct the full graph ErrorGraphNode::compute_predecessors_and_insert_to_graph for all computed nodes until the to_explore_queue is empty

Source

pub fn compute_predecessors_and_insert_to_graph( cfg_node_map: &mut PartiallyOrderedConfigMap<Rc<RefCell<ErrorGraphNode>>>, to_explore_queue: &mut VecDeque<Rc<RefCell<ErrorGraphNode>>>, node_to_explore: &Rc<RefCell<ErrorGraphNode>>, ta: &ACSThresholdAutomaton, )

Compute the predecessor of node_to_compute_succs in ta, adding nodes that still require exploration to to_explore_queue while checking that no smaller or equal node exists in cfg_node_map

This function corresponds to ComputePredBasis of Algorithm 1 in the paper

Safety: This function assumes that none of the nodes in the error graph still have an existing borrow

Source

fn insert_existing_smaller_node( smaller_or_eq_node: &Rc<RefCell<ErrorGraphNode>>, node_to_explore: &Rc<RefCell<ErrorGraphNode>>, edge_to_insert: ErrorGraphEdge, rule_id: u32, )

Insert the new configuration and corresponding edge into the error graph, in case there exists an already inserted node with a smaller or equal configuration

This function corresponds to line 20-21 in Algorithm 1

Source

fn insert_existing_bigger_node( bigger_node: &Rc<RefCell<ErrorGraphNode>>, cfg_to_insert: ACSTAConfig, edge_to_insert: ErrorGraphEdge, )

Insert the new configuration and corresponding edge into the error graph, in case there exists an already inserted node with a bigger configuration

This function corresponds to line 24-26 in Algorithm 1

Trait Implementations§

Source§

impl Clone for ErrorGraphNode

Source§

fn clone(&self) -> ErrorGraphNode

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ErrorGraphNode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<ErrorGraphNode> for Rc<RefCell<ErrorGraphNode>>

Source§

fn from(value: ErrorGraphNode) -> Self

Converts to this type from the input type.
Source§

impl Ord for ErrorGraphNode

Source§

fn cmp(&self, other: &ErrorGraphNode) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for ErrorGraphNode

Source§

fn eq(&self, other: &ErrorGraphNode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for ErrorGraphNode

Source§

fn partial_cmp(&self, other: &ErrorGraphNode) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Eq for ErrorGraphNode

Source§

impl StructuralPartialEq for ErrorGraphNode

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.