TargetConfig

Struct TargetConfig 

Source
pub struct TargetConfig {
    lower_bounds: HashMap<Location, u32>,
    locations_not_covered: HashSet<Location>,
    variable_constr: LIAVariableConstraint,
}
Expand description

Upward closed set of configurations representing a target set of configurations

This type specifies an upwards closed set of configurations. It can be seen as a minimal basis specifying a set of configurations

Fields§

§lower_bounds: HashMap<Location, u32>

Map with location + number of processes at least in there Set of locations where no process should be

§locations_not_covered: HashSet<Location>

Location should not be covered by any processes

§variable_constr: LIAVariableConstraint

conjunct of variable constraints

Implementations§

Source§

impl TargetConfig

Source

fn new_unconstrained() -> Self

Create a new specification object that contains all possible configurations

Source

fn new_loc_not_covered(loc: Location) -> Self

Create a new specification that contains all configurations where loc is not covered by any processes

Source

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

Create a new specification that requires all configurations in cover to be covered by at least one process

Source

pub fn new_general_cover<L: IntoIterator<Item = (Location, u32)>>( cover: L, ) -> Result<Self, ReachabilityTransformationError>

Create a new specification that requires all configurations in cover to be covered by at the given amount of processes

Source

pub fn new_reach<LI: IntoIterator<Item = Location>, LII: IntoIterator<Item = Location>>( cover: LI, uncover: LII, ) -> Result<Self, ReachabilityTransformationError>

Create a new specification that requires all configurations in cover to be covered by at least one process and all locations in uncover to be empty

Source

pub fn new_general_reach<U: IntoIterator<Item = Location>, C: IntoIterator<Item = (Location, u32)>>( cover: C, uncover: U, ) -> Result<Self, ReachabilityTransformationError>

Create a new specification that requires all configurations in cover to be covered by at least the specified amount of processes and all locations in uncover to be empty

Source

pub fn get_locations_appearing(&self) -> HashSet<&Location>

Get all locations that appear in the target specification

Source

pub fn get_variable_constraint(&self) -> &LIAVariableConstraint

Get the variable constraint appearing in the target configuration

Source

pub fn new_reach_with_var_constr<LC: Into<HashMap<Location, u32>>, LU: Into<HashSet<Location>>>( locs: LC, uncover: LU, var_constr: BooleanExpression<Variable>, ) -> Result<Self, ReachabilityTransformationError>

Create a new target configuration constraint

Source

fn new_with_var_constr( var_constr: BooleanExpression<Variable>, ) -> Result<Self, ReachabilityTransformationError>

Create a new specification contains all configurations where var_constr holds

Source

fn is_reachability_constraint(&self) -> bool

Check whether this constraint is a reachability constraint

A reachability constraint requires at least one location to be empty.

Source

pub fn get_locations_to_cover(&self) -> impl Iterator<Item = (&Location, &u32)>

Get iterator over the locations that should be covered by processes with the least amount of processes

Source

pub fn get_locations_to_uncover(&self) -> impl Iterator<Item = &Location>

Locations that should not be covered

Source

pub fn into_disjunct_with_name<S: ToString>( self, name: S, ) -> DisjunctionTargetConfig

Create a DisjunctionTargetConfig with the given name from the single target location

Source

fn try_from_loc_constr( constr: (IntegerExpression<Location>, ComparisonOp, IntegerExpression<Location>), ) -> Result<Self, ReachabilityTransformationError>

Attempt to parse an DisjunctionTargetConfig from a location constraint

This function can be used to attempt to extract an upwards closed set of configurations from a single boolean constraint over location variables

This function returns an error if the specification does not correspond to an upwards closed set of configurations. See

Trait Implementations§

Source§

impl And for TargetConfig

Source§

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

Get the conjunction of self and other
Source§

impl Clone for TargetConfig

Source§

fn clone(&self) -> TargetConfig

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 TargetConfig

Source§

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

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

impl Display for TargetConfig

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<TargetConfig, C> for TargetConfig

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 PartialEq for TargetConfig

Source§

fn eq(&self, other: &TargetConfig) -> 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 StructuralPartialEq for TargetConfig

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.