pub struct RegulationConstraint { /* private fields */ }
Expand description

A helper structure which provides a collection of static functions that can be used to analyse static constraints of Boolean functions.

Implementations§

source§

impl RegulationConstraint

source

pub fn mk_observability( ctx: &SymbolicContext, fn_is_true: &Bdd, input: VariableId ) -> Bdd

Compute a BDD representing all instantiations of a (partial) function where the given input is observable (also called essential).

In particular:

  • ctx is a symbolic encoding of a BooleanNetwork.
  • fn_is_true is a BDD representing a (partially unknown) function.
  • input refers to the function input which should be considered observable.

Note that if fn_is_true is fully specified, then the result is always true or false. If input does not appear in fn_is_true at all, the result is always false.

The main point of this function is that you can build an observability constraint for an arbitrary symbolic function. Hence, it can be used both to validate an existing regulatory graph, and to infer observability of an otherwise unspecified regulation.

source

pub fn mk_activation( ctx: &SymbolicContext, fn_is_true: &Bdd, input: VariableId ) -> Bdd

Compute a BDD representing all instantiations of a (partial) function where the given input is an activator (also called positively monotonic).

In particular:

  • ctx is a symbolic encoding of a BooleanNetwork.
  • fn_is_true is a BDD representing a (partially unknown) function.
  • input refers to the function input which should be an activator.

Note that if fn_is_true is fully specified, then the result is always true or false. If input does not appear in fn_is_true at all, the result is always true.

The main point of this function is that you can build an activator constraint for an arbitrary symbolic function. Hence, it can be used both to validate an existing regulatory graph, and to infer observability of an otherwise unspecified regulation.

source

pub fn mk_inhibition( ctx: &SymbolicContext, fn_is_true: &Bdd, input: VariableId ) -> Bdd

The same as RegulationConstraint::mk_activation, but with negative monotonicity instead of positive monotonicity.

source

pub fn infer_sufficient_regulation( ctx: &SymbolicContext, regulator: VariableId, target: VariableId, fn_is_true: &Bdd ) -> Option<Regulation>

Infer the most specific Regulation which is still sufficient to correctly cover the relationship between regulator and target in the provided function (represented as a fn_is_true Bdd).

In particular:

  • If regulator has no effect on target, return None.
  • If regulator has an effect on target only for some instantiations of fn_is_true, return a regulation with observable = false.
  • If regulator impacts target in every instantiation of fn_is_true, return observable = true.
  • If all instantiations are positively/negatively monotonous, return a monotonic regulation, otherwise return monotonicity = None.
source

pub fn fix_regulation( ctx: &SymbolicContext, old_regulation: &Regulation, fn_is_true: &Bdd ) -> Option<Regulation>

Similar to Self::infer_sufficient_regulation, but it tries to keep the constraints from the given old_regulation assuming they are satisfiable and more restrictive than the inferred constraints.

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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V