pub struct SymbolicContext {
    bdd: BddVariableSet,
    state_variables: Vec<BddVariable>,
    parameter_variables: Vec<BddVariable>,
    explicit_function_tables: Vec<FunctionTable>,
    implicit_function_tables: Vec<Option<FunctionTable>>,
}
Expand description

Symbolic context manages the mapping between entities of the Boolean network (variables, parameters, uninterpreted functions) and BddVariables used in bdd-lib.

It also provides utility methods for creating Bdd objects that match different conditions imposed on the parameter space of the network.

Note that while this is technically public, it should not be used unless absolutely necessary. Playing with raw BDDs is dangerous.

Fields

bdd: BddVariableSetstate_variables: Vec<BddVariable>parameter_variables: Vec<BddVariable>explicit_function_tables: Vec<FunctionTable>implicit_function_tables: Vec<Option<FunctionTable>>

Implementations

Create a new SymbolicContext that is based on the given BooleanNetwork.

Provides access to the raw Bdd context.

Getter for variables encoding the state variables of the network.

Getter for the entire function table of an implicit update function.

Getter for the entire function table of an explicit parameter.

Getter for variables encoding the parameter variables of the network.

Create a constant true/false Bdd.

Create a Bdd that is true when given network variable is true.

Create a Bdd that is true when given explicit uninterpreted function (aka parameter) is true for given arguments.

Create a Bdd that is true when given implicit uninterpreted function is true for given arguments.

Panic: Variable must have an implicit uninterpreted function.

Create a Bdd that is true when given FnUpdate evaluates to true.

(internal) Create a Bdd that is true when given FunctionTable evaluates to true, assuming each argument is true when the corresponding Bdd in the args array is true.

Note that this actually allows functions which do not have just variables as arguments.

Create a Bdd which represents an instantiated function table.

This means the Bdd only depends on variables which appear in args and the actual semantics to each row of the FunctionTable is assigned based on the given valuation.

Create a Bdd which represents the instantiated implicit uninterpreted function.

Create a Bdd which represents the instantiated explicit uninterpreted function.

Create a Bdd which represents the instantiated FnUpdate.

(internal) Utility method for converting VariableId arguments to Bdd arguments.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The resulting type after obtaining ownership.

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

🔬 This is a nightly-only experimental API. (toowned_clone_into)

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.