Skip to main content

UpwardsClosedSet

Struct UpwardsClosedSet 

Source
pub struct UpwardsClosedSet {
    clauses: Disjunction<UpwardsClosedClause>,
}
Expand description

Type representing an upwards closed set of configurations

This type represents an upwards closed set of configurations symbolically. Therefore, it can be seen as disjunction over UpwardsClosedClause (i.e., since the clauses build a disjunction, it can be seen as a formula in DNF). Its purpose is to serve as the low-level characterization of an error state when model checking.

To create a new UpwardsClosedSet use the new methods and combine them using the [And] and [Or] implementations. For an UpwardsClosedSet they can also be thought of as taking the intersection or the union.

Fields§

§clauses: Disjunction<UpwardsClosedClause>

Set of clauses treated as a disjunction over all clauses

Implementations§

Source§

impl UpwardsClosedSet

Source

pub fn new_top() -> Self

Create a new UpwardsClosedSet which is unconstrained, i.e., contains all possible configurations

Source

pub fn is_top(&self) -> bool

Check whether this set contains all possible configurations / is a tautology

Source

pub fn new_bot() -> Self

Create a new UpwardsClosedSet that is not inhabited, i.e., it contains no configurations

Source

pub fn is_bot(&self) -> bool

Check whether the current set of constraints is unsatisfiable

Source

pub fn new_var_constraint(var_constr: LIAVariableConstraint) -> Self

Create new UpwardsClosedSet which contains all configurations satisfying given constrain

Source

pub fn new_cover<L: Borrow<Location>, I: IntoIterator<Item = L>>( cover: I, ) -> Self

Create a new UpwardsClosedSet which contains all configurations for which all locations given in cover are occupied by at least one process

Source

pub fn new_cover_int<L: Borrow<Location>, I: IntoIterator<Item = (L, u32)>>( cover: I, ) -> Self

Create a new UpwardsClosedSet requiring each location in cover to contain at least the given number of processes

Source

pub fn new_reach<L: Borrow<Location>, I: IntoIterator<Item = (L, u32)>, II: IntoIterator<Item = L>>( cover: I, empty: II, ) -> Self

Create a new UpwardsClosedSet requiring each location in cover to contain at least the given number of processes, and each location in empty to contain no processes

Source

fn new_from_clause(clause: UpwardsClosedClause) -> Self

Create a new UpwardsClosedSet from a single clause

Source

pub fn contains_reachability_constraint(&self) -> bool

Check whether this constraint contains a reachability constraint

A reachability constraint requires at least one location to be empty, this function checks whether any of the clauses (see UpwardsClosedClause) contains a reachability specification.

Source

pub fn upwards_closed_clauses( &self, ) -> impl Iterator<Item = &UpwardsClosedClause>

Iterator over the individual upwards closed clauses

Trait Implementations§

Source§

impl And for UpwardsClosedSet

Source§

fn and(self, other: Self) -> Self

Get the conjunction of self and other
Source§

impl BitAnd for UpwardsClosedSet

Source§

type Output = UpwardsClosedSet

The resulting type after applying the & operator.
Source§

fn bitand(self, rhs: Self) -> Self::Output

Performs the & operation. Read more
Source§

impl BitOr for UpwardsClosedSet

Source§

type Output = UpwardsClosedSet

The resulting type after applying the | operator.
Source§

fn bitor(self, rhs: Self) -> Self::Output

Performs the | operation. Read more
Source§

impl Clone for UpwardsClosedSet

Source§

fn clone(&self) -> UpwardsClosedSet

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for UpwardsClosedSet

Source§

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

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

impl DeriveFromIntegerComp<Location, UpwardsClosedSetExtractionError> for UpwardsClosedSet

Source§

fn form_ordered_constr( scaled_t: HashMap<Location, Fraction>, thr_constr: ThresholdConstraint, ) -> Result<Self, UpwardsClosedSetExtractionError>

Derive from threshold and map scaled values of T
§

fn from_integer_expr( lhs: IntegerExpression<T>, op: ComparisonOp, rhs: IntegerExpression<T>, ) -> Result<Self, E>

Derive the the type T from the integer expression
Source§

impl Display for UpwardsClosedSet

Source§

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

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

impl<C: SMTVariableContext<Location> + SMTVariableContext<Variable> + SMTVariableContext<Parameter>> EncodeToSMT<UpwardsClosedSet, C> for UpwardsClosedSet

Source§

fn encode_to_smt_with_ctx( &self, solver: &SMTSolver, ctx: &C, ) -> Result<SMTExpr, SMTSolverError>

Encode the type into an SMT expression Read more
Source§

impl Or for UpwardsClosedSet

Source§

fn or(self, other: Self) -> Self

Get the disjunction of self and other
Source§

impl PartialEq for UpwardsClosedSet

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 StructuralPartialEq for UpwardsClosedSet

Source§

impl TASpecification for UpwardsClosedSet

Source§

fn locs_appearing(&self) -> impl IntoIterator<Item = &Location>

Get the locations that appear in the specification Read more
Source§

fn var_constraint(&self) -> impl IntoIterator<Item = &LIAVariableConstraint>

Get the variable constraints that appear in target Read more

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.