DDD  1.9.0.20240425101308
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
_VarCompVar Class Reference
Inheritance diagram for _VarCompVar:
Inheritance graph
Collaboration diagram for _VarCompVar:
Collaboration graph

Public Member Functions

 _VarCompVar (int v1, comparator c, int v2)
 
bool skip_variable (int vr) 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 phiOne () const
 Evaluation over terminal GDDD::one. More...
 
GHom phi (int vr, int vl) const
 Evaluation over an arbitrary arc of a SDD. More...
 
GHom compose (const GHom &other) const
 
size_t hash () const
 Hash key computation. More...
 
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...
 
void print (std::ostream &os) const
 pretty print More...
 
bool operator== (const StrongHom &s) const
 Comparator is pure virtual. Define a behavior in user homomorphisms. More...
 
_GHomclone () const
 
bool operator== (const _GHom &h) const
 Comparator for unicity table. More...
 
GDDD eval (const GDDD &) const
 The evaluation mechanism of strong homomorphisms. More...
 
virtual GDDD has_image (const GDDD &) const
 
GDDD has_image_skip (const GDDD &) const
 
virtual GHom invert (const GDDD &) const
 returns the predescessor homomorphism, using pot to determine variable domains More...
 
bool operator< (const _GHom &h) const
 Ordering between _GHom. It is the chronological ordering of creation. More...
 
virtual void mark () const
 For garbage collection. Used in first phase of garbage collection. More...
 
virtual GHom negate () const
 returns a negation of a selector homomorphism h, such that h.negate() (d) = d - h(d) More...
 

Static Public Member Functions

static const _GHomget_concret (const GHom &ghom)
 

Private Member Functions

GDDD eval_skip (const GDDD &) const
 

Private Attributes

int var1
 
int var2
 
comparator c
 
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...
 

Constructor & Destructor Documentation

◆ _VarCompVar()

_VarCompVar::_VarCompVar ( int  v1,
comparator  c,
int  v2 
)
inline

Referenced by clone().

Member Function Documentation

◆ clone()

_GHom* _VarCompVar::clone ( ) const
inlinevirtual

Implements _GHom.

References _VarCompVar().

◆ compose()

GHom _VarCompVar::compose ( const GHom other) const
inlinevirtual
Todo:
other cases to be treated

Reimplemented from _GHom.

References c, _GHom::compose(), EQ, _GHom::get_concret(), LT, GDDD::null, var1, and var2.

◆ eval()

GDDD StrongHom::eval ( const GDDD d) const
virtualinherited

The evaluation mechanism of strong homomorphisms.

Evaluation is defined as :

Let an SDD d= (var, Union_i (val_i, d_i) )

h (d) = Sum_i ( phi(var, val_i) (d_i) )

Implements _GHom.

References DED::add(), GDDD::begin(), GDDD::end(), GDDD::null, GDDD::one, StrongHom::phi(), StrongHom::phiOne(), GDDD::top, and GDDD::variable().

◆ eval_skip()

GDDD _GHom::eval_skip ( const GDDD d) const
privateinherited

◆ get_concret()

static const _GHom* _GHom::get_concret ( const GHom ghom)
inlinestaticinherited

◆ get_range()

const GHom::range_t _VarCompVar::get_range ( ) const
inlinevirtual

The range returns the dual of skip_variable, default implem considers that all variables are affected by this homomorphism.

Reimplemented from _GHom.

References var1, and var2.

◆ has_image()

GDDD StrongHom::has_image ( const GDDD d) const
virtualinherited

◆ has_image_skip()

GDDD _GHom::has_image_skip ( const GDDD d) const
inherited

◆ hash()

size_t _VarCompVar::hash ( ) const
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 c, var1, and var2.

◆ invert()

virtual GHom _GHom::invert ( const GDDD ) const
inlinevirtualinherited

returns the predescessor homomorphism, using pot to determine variable domains

Reimplemented in _incVar, _setVarConst, Fixpoint, Minus, And, Compose, Monotonic, Add, Inter, Mult, Apply2k, Constant, and Identity.

References _GHom::GHom, _GHom::is_selector(), GDDD::null, and _GHom::print().

Referenced by GHom::invert().

◆ is_selector()

bool _VarCompVar::is_selector ( ) const
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.

◆ mark()

virtual void _GHom::mark ( ) const
inlinevirtualinherited

For garbage collection. Used in first phase of garbage collection.

Reimplemented in MLHomAdapter, Fixpoint, Minus, RightConcat, LeftConcat, And, Compose, Monotonic, Add, NotCond, Inter, Mult, Apply2k, and Constant.

Referenced by GHom::mark().

◆ negate()

GHom _GHom::negate ( ) const
virtualinherited

returns a negation of a selector homomorphism h, such that h.negate() (d) = d - h(d)

Reimplemented in _VarCompState, And, Add, NotCond, Inter, Constant, and Identity.

References _GHom::GHom.

Referenced by GHom::negate().

◆ operator<()

bool _GHom::operator< ( const _GHom h) const
inherited

Ordering between _GHom. It is the chronological ordering of creation.

References _GHom::creation_counter.

◆ operator==() [1/2]

bool StrongHom::operator== ( const _GHom h) const
virtualinherited

Comparator for unicity table.

Users should not use this. The behavior is to check for type mismatch (and return false if that is the case) or call specialized comparators of derived subclasses otherwise.

Implements _GHom.

◆ operator==() [2/2]

bool _VarCompVar::operator== ( const StrongHom h) const
inlinevirtual

Comparator is pure virtual. Define a behavior in user homomorphisms.

Implements StrongHom.

References c, var1, and var2.

◆ phi()

GHom _VarCompVar::phi ( int  var,
int  val 
) const
inlinevirtual

Evaluation over an arbitrary arc of a SDD.

Parameters
varthe index of the variable labeling the node.
valthe value labeling the arc.
Returns
a homomorphism to apply on the successor node

Implements StrongHom.

References c, _GHom::GHom, invertComp(), var1, var2, and varCompState().

◆ phiOne()

GDDD _VarCompVar::phiOne ( ) const
inlinevirtual

Evaluation over terminal GDDD::one.

Returns a constant DDD. A homomorphism that does not overload phiOne does not expect to meet the terminal during it's evaluation, therefore default behavior returns GDDD::top

Reimplemented from StrongHom.

References GDDD::one.

◆ print()

void _VarCompVar::print ( std::ostream &  os) const
inlinevirtual

pretty print

Reimplemented from StrongHom.

References c, GDDD::getvarName(), to_string(), var1, and var2.

◆ skip_variable()

bool _VarCompVar::skip_variable ( int  ) const
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 var1, and var2.

Member Data Documentation

◆ c

comparator _VarCompVar::c
private

Referenced by compose(), hash(), operator==(), phi(), and print().

◆ creation_counter

size_t _GHom::creation_counter
privateinherited

Counter of objects created (see constructors).

This is used for the ordering between homomorphisms.

Referenced by _GHom::_GHom(), and _GHom::operator<().

◆ immediat

bool _GHom::immediat
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()().

◆ marking

bool _GHom::marking
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().

◆ refCounter

int _GHom::refCounter
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().

◆ var1

int _VarCompVar::var1
private

◆ var2

int _VarCompVar::var2
private

The documentation for this class was generated from the following file:

Please comment this page and report errors about it on the RefDocComments page.
Generated on Thu Apr 25 2024 10:15:16 for DDD by doxygen 1.9.1