DDD
1.9.0.20240826145154
|
A commutative composition of n homomorphisms. More...
Public Types | |
typedef std::vector< GHom > | parameters_t |
typedef parameters_t::const_iterator | parameters_it |
Public Member Functions | |
And (const std::set< GHom > &p, int ref=0) | |
And (const parameters_t &p, int ref=0) | |
bool | operator== (const _GHom &h) const |
Comparator. More... | |
GHom | negate () const |
returns a negation of a selector homomorphism h, such that h.negate() (d) = d - h(d) More... | |
GDDD | has_image (const GDDD &d) const |
size_t | hash () const |
Hash key computation. More... | |
_GHom * | clone () const |
bool | is_selector () const |
The isSelector predicate indicates a homomorphism that only selects paths in the SDD (no modifications, no additions) Tagging with isSelector() allows to enable optimizations and makes the homomorphism eligible as "condition" in ITE construct. More... | |
bool | skip_variable (int var) const |
The skip_variable predicate indicates which variables are "don't care" with respect to this SHom. More... | |
const GHom::range_t | get_range () const |
The range returns the dual of skip_variable, default implem considers that all variables are affected by this homomorphism. More... | |
GDDD | eval (const GDDD &d) const |
The computation function responsible for evaluation over a node. More... | |
void | mark () const |
For garbage collection. Used in first phase of garbage collection. More... | |
GHom | invert (const GDDD &pot) const |
returns the predescessor homomorphism, using pot to determine variable domains More... | |
void | print (std::ostream &os) const |
GDDD | has_image_skip (const GDDD &) const |
bool | operator< (const _GHom &h) const |
Ordering between _GHom. It is the chronological ordering of creation. More... | |
virtual GHom | compose (const GHom &r) const |
Static Public Member Functions | |
static const _GHom * | get_concret (const GHom &ghom) |
Public Attributes | |
parameters_t | parameters |
PLEASE DONT HURT ME !! More... | |
Private Member Functions | |
GDDD | eval_skip (const GDDD &) const |
Private Attributes | |
int | refCounter |
For garbage collection. More... | |
bool | marking |
For garbage collection. More... | |
bool | immediat |
For operation cache management. More... | |
size_t | creation_counter |
Counter of objects created (see constructors). More... | |
A commutative composition of n homomorphisms.
typedef parameters_t::const_iterator And::parameters_it |
typedef std::vector<GHom> And::parameters_t |
|
inline |
Reimplemented in _VarCompVar, and _VarCompState.
References GHom::id, and GDDD::null.
Referenced by _VarCompState::compose(), _VarCompVar::compose(), and GHom::compose().
The computation function responsible for evaluation over a node.
Users should not directly use this. Normal behavior is to use GShom::operator() that encapsulates this call with operation caching.
Implements _GHom.
References _GHom::get_concret(), GHom::id, GDDD::null, GDDD::one, parameters, GDDD::top, and GDDD::variable().
References GDDD::begin(), GDDD::end(), _GHom::eval(), GHom::id, GDDD::null, GDDD::one, _GHom::skip_variable(), GDDD::top, and GDDD::variable().
Referenced by GHom::eval().
References GHom::concret.
Referenced by Add::Add(), addCompositionParameter(), _VarCompState::compose(), _VarCompVar::compose(), eval(), Fixpoint::eval(), Fixpoint::has_image(), Inter::skip_variable(), NotCond::skip_variable(), Add::skip_variable(), Monotonic::skip_variable(), Compose::skip_variable(), RightConcat::skip_variable(), and Fixpoint::skip_variable().
|
inlinevirtual |
The range returns the dual of skip_variable, default implem considers that all variables are affected by this homomorphism.
Reimplemented from _GHom.
References parameters.
Reimplemented from _GHom.
References _GHom::has_image(), GDDD::null, and parameters.
References GDDD::begin(), GDDD::end(), _GHom::has_image(), GHom::has_image(), GHom::id, GDDD::null, GDDD::one, _GHom::skip_variable(), GDDD::top, and GDDD::variable().
|
inlinevirtual |
Hash key computation.
It is essential for good hash table operation that the spread of the keys be as good as possible. Also, fast hash key computation is a good design goal. Note that bad hash functions will yield more collisions, thus equality comparisons which may be quite costly.
Implements _GHom.
References parameters.
returns the predescessor homomorphism, using pot to determine variable domains
Reimplemented from _GHom.
References GHom::id, and parameters.
|
inlinevirtual |
The isSelector predicate indicates a homomorphism that only selects paths in the SDD (no modifications, no additions) Tagging with isSelector() allows to enable optimizations and makes the homomorphism eligible as "condition" in ITE construct.
Reimplemented from _GHom.
References parameters.
|
inlinevirtual |
For garbage collection. Used in first phase of garbage collection.
Reimplemented from _GHom.
References parameters.
|
inlinevirtual |
returns a negation of a selector homomorphism h, such that h.negate() (d) = d - h(d)
Reimplemented from _GHom.
References GHom::add(), and parameters.
|
inherited |
Ordering between _GHom. It is the chronological ordering of creation.
References _GHom::creation_counter.
|
inlinevirtual |
Comparator.
Used in case of hash collision. Should be appropriately defined in derived classes, in particular in user defined homomorphisms.
Implements _GHom.
References parameters.
|
inlinevirtual |
Implements _GHom.
References parameters.
|
inlinevirtual |
The skip_variable predicate indicates which variables are "don't care" with respect to this SHom.
This is defined as a StrongHom with : phi(var,val) { if ( skip_variable(var) ) return GShom( var, val, this ); else { real behavior } }
Reimplemented from _GHom.
References parameters.
|
privateinherited |
Counter of objects created (see constructors).
This is used for the ordering between homomorphisms.
Referenced by _GHom::_GHom(), and _GHom::operator<().
|
mutableprivateinherited |
For operation cache management.
If immediat==true, eval is called without attempting a cache hit. Currently only the constant homomorphism has this attribute set to true.
Referenced by GHom::operator()().
|
mutableprivateinherited |
For garbage collection.
Used in the two phase garbage collection process. A Hom that is not marked after the first pass over the unicity table, will be sweeped in the second phase. Outside of garbage collection routine, marking should always bear the value false.
Referenced by GHom::garbage(), and GHom::mark().
parameters_t And::parameters |
PLEASE DONT HURT ME !!
Referenced by eval(), get_range(), has_image(), hash(), invert(), is_selector(), mark(), negate(), operator==(), print(), and skip_variable().
|
mutableprivateinherited |
For garbage collection.
Counts the number of times a _GShom is referenced from the context of an Shom.
Referenced by Hom::Hom(), Hom::operator=(), GHom::refCounter(), and Hom::~Hom().