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
impl UpwardsClosedSet
Sourcepub fn new_top() -> Self
pub fn new_top() -> Self
Create a new UpwardsClosedSet which is unconstrained, i.e., contains all possible configurations
Sourcepub fn is_top(&self) -> bool
pub fn is_top(&self) -> bool
Check whether this set contains all possible configurations / is a tautology
Sourcepub fn new_bot() -> Self
pub fn new_bot() -> Self
Create a new UpwardsClosedSet that is not inhabited, i.e., it contains no configurations
Sourcepub fn new_var_constraint(var_constr: LIAVariableConstraint) -> Self
pub fn new_var_constraint(var_constr: LIAVariableConstraint) -> Self
Create new UpwardsClosedSet which contains all configurations satisfying given constrain
Sourcepub fn new_cover<L: Borrow<Location>, I: IntoIterator<Item = L>>(
cover: I,
) -> Self
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
Sourcepub fn new_cover_int<L: Borrow<Location>, I: IntoIterator<Item = (L, u32)>>(
cover: I,
) -> Self
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
Sourcepub fn new_reach<L: Borrow<Location>, I: IntoIterator<Item = (L, u32)>, II: IntoIterator<Item = L>>(
cover: I,
empty: II,
) -> Self
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
Sourcefn new_from_clause(clause: UpwardsClosedClause) -> Self
fn new_from_clause(clause: UpwardsClosedClause) -> Self
Create a new UpwardsClosedSet from a single clause
Sourcepub fn contains_reachability_constraint(&self) -> bool
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.
Sourcepub fn upwards_closed_clauses(
&self,
) -> impl Iterator<Item = &UpwardsClosedClause>
pub fn upwards_closed_clauses( &self, ) -> impl Iterator<Item = &UpwardsClosedClause>
Iterator over the individual upwards closed clauses
Trait Implementations§
Source§impl And for UpwardsClosedSet
impl And for UpwardsClosedSet
Source§impl BitAnd for UpwardsClosedSet
impl BitAnd for UpwardsClosedSet
Source§impl BitOr for UpwardsClosedSet
impl BitOr for UpwardsClosedSet
Source§impl Clone for UpwardsClosedSet
impl Clone for UpwardsClosedSet
Source§fn clone(&self) -> UpwardsClosedSet
fn clone(&self) -> UpwardsClosedSet
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UpwardsClosedSet
impl Debug for UpwardsClosedSet
Source§impl DeriveFromIntegerComp<Location, UpwardsClosedSetExtractionError> for UpwardsClosedSet
impl DeriveFromIntegerComp<Location, UpwardsClosedSetExtractionError> for UpwardsClosedSet
Source§fn form_ordered_constr(
scaled_t: HashMap<Location, Fraction>,
thr_constr: ThresholdConstraint,
) -> Result<Self, UpwardsClosedSetExtractionError>
fn form_ordered_constr( scaled_t: HashMap<Location, Fraction>, thr_constr: ThresholdConstraint, ) -> Result<Self, UpwardsClosedSetExtractionError>
T§fn from_integer_expr(
lhs: IntegerExpression<T>,
op: ComparisonOp,
rhs: IntegerExpression<T>,
) -> Result<Self, E>
fn from_integer_expr( lhs: IntegerExpression<T>, op: ComparisonOp, rhs: IntegerExpression<T>, ) -> Result<Self, E>
Source§impl Display for UpwardsClosedSet
impl Display for UpwardsClosedSet
Source§impl<C: SMTVariableContext<Location> + SMTVariableContext<Variable> + SMTVariableContext<Parameter>> EncodeToSMT<UpwardsClosedSet, C> for UpwardsClosedSet
impl<C: SMTVariableContext<Location> + SMTVariableContext<Variable> + SMTVariableContext<Parameter>> EncodeToSMT<UpwardsClosedSet, C> for UpwardsClosedSet
Source§impl Or for UpwardsClosedSet
impl Or for UpwardsClosedSet
Source§impl PartialEq for UpwardsClosedSet
impl PartialEq for UpwardsClosedSet
Source§fn eq(&self, other: &UpwardsClosedSet) -> bool
fn eq(&self, other: &UpwardsClosedSet) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for UpwardsClosedSet
Source§impl TASpecification for UpwardsClosedSet
impl TASpecification for UpwardsClosedSet
Source§fn locs_appearing(&self) -> impl IntoIterator<Item = &Location>
fn locs_appearing(&self) -> impl IntoIterator<Item = &Location>
Source§fn var_constraint(&self) -> impl IntoIterator<Item = &LIAVariableConstraint>
fn var_constraint(&self) -> impl IntoIterator<Item = &LIAVariableConstraint>
Auto Trait Implementations§
impl Freeze for UpwardsClosedSet
impl RefUnwindSafe for UpwardsClosedSet
impl Send for UpwardsClosedSet
impl Sync for UpwardsClosedSet
impl Unpin for UpwardsClosedSet
impl UnsafeUnpin for UpwardsClosedSet
impl UnwindSafe for UpwardsClosedSet
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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