CCacheManagement.h
Go to the documentation of this file.
// -*- c++ -*-
//*****************************************************************************
//*****************************************************************************
#ifndef polybori_cache_CCacheManagement_h_
#define polybori_cache_CCacheManagement_h_
// include basic definitions
#include <polybori/pbori_defs.h>
// get DD navigation
#include <polybori/iterators/CCuddNavigator.h>
#include <polybori/ring/CCuddCore.h>
#include <boost/intrusive_ptr.hpp>
// get standard functionality
#include <functional>
BEGIN_NAMESPACE_PBORI
class CCacheTypes {
public:
struct no_cache_tag { enum { nargs = 0 }; };
struct unary_cache_tag { enum { nargs = 1 }; };
struct binary_cache_tag { enum { nargs = 2 }; };
struct ternary_cache_tag { enum { nargs = 3 }; };
template <class TagType>
struct lead_tag: public binary_cache_tag {};
// user functions
struct no_cache: public no_cache_tag { };
struct union_xor: public binary_cache_tag { };
struct multiply_recursive: public binary_cache_tag { };
struct divide: public binary_cache_tag { };
struct minimal_mod: public binary_cache_tag { };
struct minimal_elements: public unary_cache_tag { };
struct multiplesof: public binary_cache_tag { };
struct divisorsof: public binary_cache_tag { };
struct ll_red_nf: public binary_cache_tag { };
struct plug_1: public binary_cache_tag { };
struct exist_abstract: public binary_cache_tag { };
struct degree: public unary_cache_tag { };
struct has_factor_x: public binary_cache_tag { };
struct has_factor_x_plus_one: public binary_cache_tag { };
struct mod_varset: public binary_cache_tag { };
struct interpolate: public binary_cache_tag { };
struct zeros: public binary_cache_tag { };
struct interpolate_smallest_lex: public binary_cache_tag { };
struct include_divisors: public unary_cache_tag { };
//struct mod_deg2_set: public binary_cache_tag { };
typedef mod_varset mod_deg2_set;
typedef mod_varset mod_mon_set;
struct contained_deg2: public unary_cache_tag { };
struct contained_variables: public unary_cache_tag { };
struct map_every_x_to_x_plus_one: public unary_cache_tag { };
struct lex_lead: public unary_cache_tag {};
typedef lead_tag<dlex_tag> dlex_lead;
typedef lead_tag<dp_asc_tag> dp_asc_lead;
typedef lead_tag<block_dlex_tag> block_dlex_lead;
typedef lead_tag<block_dp_asc_tag> block_dp_asc_lead;
struct divisorsof_fixedpath: public ternary_cache_tag { };
struct testwise_ternary: public ternary_cache_tag { };
struct used_variables: public unary_cache_tag { };
struct block_degree: public binary_cache_tag { };
struct has_factor_x_plus_y: public ternary_cache_tag { };
struct left_equals_right_x_branch_and_r_has_fac_x:
public ternary_cache_tag { };
struct graded_part: public binary_cache_tag { };
struct mapping: public binary_cache_tag { };
struct is_rewriteable: public binary_cache_tag{};
};
// Reserve integer Numbers for Ternary operations (for cudd)
template <class TagType>
struct count_tags;
template<>
struct count_tags<CCacheTypes::divisorsof_fixedpath>{
enum { value = 0 };
};
template <class BaseTag>
struct increment_count_tags {
enum{ value = count_tags<BaseTag>::value + 1 };
};
template<>
class count_tags<CCacheTypes::testwise_ternary>:
public increment_count_tags<CCacheTypes::divisorsof_fixedpath>{ };
template<>
class count_tags<CCacheTypes::left_equals_right_x_branch_and_r_has_fac_x>:
public increment_count_tags<CCacheTypes::testwise_ternary>{ };
template<>
class count_tags<CCacheTypes::has_factor_x_plus_y>:
public increment_count_tags<CCacheTypes::left_equals_right_x_branch_and_r_has_fac_x>{ };
// generate tag number (special pattern with 4 usable bits)
// 18 bits are already used
template <unsigned Counted, unsigned Offset = 18>
class cudd_tag_number {
public:
enum { value =
( ((Counted + Offset) & 0x3 ) << 2) |
( ((Counted + Offset) & 0x1C ) << 3) | 0x2 };
};
template <class MgrType>
class CCuddLikeMgrStorage {
public:
typedef MgrType manager_type;
typedef DdManager* internal_manager_type;
typedef DdNode* node_type;
typedef CCuddNavigator navigator;
// typedef CTypes::dd_base dd_base;
// typedef typename manager_type::mgrcore_ptr mgrcore_ptr;
typedef BoolePolyRing ring_type;
typedef typename ring_type::dd_type dd_type;
CCuddLikeMgrStorage(const manager_type& mgr):
m_mgr(mgr) {}
// CCuddLikeMgrStorage(const mgrcore_ptr& mgr):
// m_mgr(mgr) {}
manager_type manager() const { return m_mgr; }
dd_type generate(navigator navi) const {
return dd_type(m_mgr, navi);
}
dd_type one() const {
return ring_type(m_mgr).one();//dd_type(m_mgr, DD_ONE(m_mgr->manager()));//manager().zddOne();
}
dd_type zero() const {
return ring_type(m_mgr).zero();//dd_base(m_mgr, PBORI_PREFIX(Cudd_ReadZero)(m_mgr->manager()));//manager().zddZero();
}
ring_type ring() const { return ring_type(manager()); }
protected:
internal_manager_type internalManager() const {
return m_mgr.getManager();
// return manager().getManager();
}
private:
manager_type m_mgr;
// typename manager_type::mgrcore_ptr m_mgr;
};
template <class ManagerType, class CacheType, unsigned ArgumentLength>
class CCacheManBase;
// Fixing base type for Cudd-Like type CCuddInterface
template <class CacheType, unsigned ArgumentLength>
struct pbori_base<CCacheManBase<CCuddInterface, CacheType, ArgumentLength> > {
typedef CCuddLikeMgrStorage<CCuddInterface> type;
};
// Fixing base type for Cudd-Like type CCuddInterface
template <class CacheType, unsigned ArgumentLength>
struct pbori_base<CCacheManBase<BoolePolyRing, CacheType, ArgumentLength> > {
typedef CCuddLikeMgrStorage<BoolePolyRing> type;
};
// Fixing base type for Cudd-Like type CCuddInterface
template <class CacheType, unsigned ArgumentLength>
struct pbori_base<CCacheManBase<boost::intrusive_ptr<CCuddCore>, CacheType, ArgumentLength> > {
typedef CCuddLikeMgrStorage<boost::intrusive_ptr<CCuddCore> > type;
};
// Dummy variant for generating empty cache managers, e.g. for using generate()
template <class ManagerType, class CacheType>
class CCacheManBase<ManagerType, CacheType, 0> :
public pbori_base<CCacheManBase<ManagerType, CacheType, 0> >::type {
public:
typedef CCacheManBase<ManagerType, CacheType, 0> self;
typedef typename pbori_base<self>::type base;
typedef typename base::node_type node_type;
typedef typename base::navigator navigator;
typedef typename base::manager_type manager_type;
CCacheManBase(const manager_type& mgr): base(mgr) {}
navigator find(navigator, ...) const { return navigator(); }
node_type find(node_type, ...) const { return NULL; }
void insert(...) const {}
};
// Variant for unary functions
template <class ManagerType, class CacheType>
class CCacheManBase<ManagerType, CacheType, 1> :
public pbori_base<CCacheManBase<ManagerType, CacheType, 1> >::type {
public:
typedef CCacheManBase<ManagerType, CacheType, 1> self;
typedef typename pbori_base<self>::type base;
typedef typename base::node_type node_type;
typedef typename base::navigator navigator;
typedef typename base::manager_type manager_type;
CCacheManBase(const manager_type& mgr): base(mgr) {}
node_type find(node_type node) const {
return PBORI_PREFIX(cuddCacheLookup1Zdd)(internalManager(), cache_dummy, node);
}
navigator find(navigator node) const {
return explicit_navigator_cast(find(node.getNode()));
}
void insert(node_type node, node_type result) const {
PBORI_PREFIX(Cudd_Ref)(result);
PBORI_PREFIX(cuddCacheInsert1)(internalManager(), cache_dummy, node, result);
PBORI_PREFIX(Cudd_Deref)(result);
}
void insert(navigator node, navigator result) const {
insert(node.getNode(), result.getNode());
}
protected:
using base::internalManager;
private:
static node_type cache_dummy(typename base::internal_manager_type,node_type){ // LCOV_EXCL_LINE
return NULL; // LCOV_EXCL_LINE
}
};
// Variant for binary functions
template <class ManagerType, class CacheType>
class CCacheManBase<ManagerType, CacheType, 2> :
public pbori_base<CCacheManBase<ManagerType, CacheType, 2> >::type {
public:
typedef CCacheManBase<ManagerType, CacheType, 2> self;
typedef typename pbori_base<self>::type base;
typedef typename base::node_type node_type;
typedef typename base::navigator navigator;
typedef typename base::manager_type manager_type;
CCacheManBase(const manager_type& mgr): base(mgr) {}
node_type find(node_type first, node_type second) const {
return PBORI_PREFIX(cuddCacheLookup2Zdd)(internalManager(), cache_dummy, first, second);
}
navigator find(navigator first, navigator second) const {
return explicit_navigator_cast(find(first.getNode(), second.getNode()));
}
void insert(node_type first, node_type second, node_type result) const {
PBORI_PREFIX(Cudd_Ref)(result);
PBORI_PREFIX(cuddCacheInsert2)(internalManager(), cache_dummy, first, second, result);
PBORI_PREFIX(Cudd_Deref)(result);
}
void insert(navigator first, navigator second, navigator result) const {
insert(first.getNode(), second.getNode(), result.getNode());
}
protected:
using base::internalManager;
private:
static node_type cache_dummy(typename base::internal_manager_type, // LCOV_EXCL_LINE
node_type, node_type){ // LCOV_EXCL_LINE
return NULL; // LCOV_EXCL_LINE
}
};
// Variant for ternary functions
template <class ManagerType, class CacheType>
class CCacheManBase<ManagerType, CacheType, 3> :
public pbori_base<CCacheManBase<ManagerType, CacheType, 3> >::type {
public:
typedef CCacheManBase<ManagerType, CacheType, 3> self;
typedef typename pbori_base<self>::type base;
typedef typename base::node_type node_type;
typedef typename base::navigator navigator;
typedef typename base::manager_type manager_type;
CCacheManBase(const manager_type& mgr): base(mgr) {}
node_type find(node_type first, node_type second, node_type third) const {
return PBORI_PREFIX(cuddCacheLookupZdd)(internalManager(), (ptruint)GENERIC_DD_TAG,
first, second, third);
}
navigator find(navigator first, navigator second, navigator third) const {
return explicit_navigator_cast(find(first.getNode(), second.getNode(),
third.getNode()));
}
void insert(node_type first, node_type second, node_type third,
node_type result) const {
PBORI_PREFIX(Cudd_Ref)(result);
PBORI_PREFIX(cuddCacheInsert)(internalManager(), (ptruint)GENERIC_DD_TAG,
first, second, third, result);
PBORI_PREFIX(Cudd_Deref)(result);
}
void insert(navigator first, navigator second, navigator third,
navigator result) const {
insert(first.getNode(), second.getNode(), third.getNode(),
result.getNode());
}
protected:
using base::internalManager;
private:
enum { GENERIC_DD_TAG =
cudd_tag_number<count_tags<CacheType>::value>::value };
};
template <class ManagerType, class CacheType,
unsigned ArgumentLength = CacheType::nargs>
class CCacheManagement:
public CCacheManBase<ManagerType,
CacheType, ArgumentLength> {
public:
typedef ManagerType manager_type;
typedef typename manager_type::deg_type deg_type;
typedef typename manager_type::size_type size_type;
typedef typename manager_type::idx_type idx_type;
typedef CacheType cache_type;
enum { nargs = ArgumentLength };
typedef CCacheManBase<manager_type, cache_type, nargs> base;
typedef typename base::node_type node_type;
CCacheManagement(const manager_type& mgr):
base(mgr) {}
using base::find;
using base::insert;
};
template <class ManagerType, class CacheType>
class CCommutativeCacheManagement:
public CCacheManagement<ManagerType, CacheType, 2> {
public:
typedef ManagerType manager_type;
typedef CacheType cache_type;
typedef CCacheManagement<manager_type, cache_type, 2> base;
typedef typename base::node_type node_type;
typedef typename base::navigator navigator;
CCommutativeCacheManagement(const typename base::manager_type& mgr):
base(mgr) {}
node_type find(node_type first, node_type second) const {
if ( std::less<node_type>()(first, second) )
return base::find(first, second);
else
return base::find(second, first);
}
navigator find(navigator first, navigator second) const {
return explicit_navigator_cast(find(first.getNode(), second.getNode()));
}
void insert(node_type first, node_type second, node_type result) const {
if ( std::less<node_type>()(first, second) )
base::insert(first, second, result);
else
base::insert(second, first, result);
}
void insert(navigator first, navigator second, navigator result) const {
insert(first.getNode(), second.getNode(), result.getNode());
}
};
END_NAMESPACE_PBORI
#endif
PBORI_PREFIX
#define PBORI_PREFIX(name)
Definition: prefix.h:27
polybori::CCacheManBase< ManagerType, CacheType, 2 >
Definition: CCacheManagement.h:330
polybori::CCacheTypes
Definition: CCacheManagement.h:32
polybori::CCacheManagement::node_type
base::node_type node_type
Extracting inherited node type.
Definition: CCacheManagement.h:474
polybori::CCacheTypes::graded_part
Definition: CCacheManagement.h:100
polybori::CCuddLikeMgrStorage::dd_type
ring_type::dd_type dd_type
Get high-level decision diagram type.
Definition: CCacheManagement.h:167
polybori::CCuddLikeMgrStorage::zero
dd_type zero() const
Get constant zero.
Definition: CCacheManagement.h:189
polybori::CCacheTypes::dlex_lead
lead_tag< dlex_tag > dlex_lead
Definition: CCacheManagement.h:82
polybori::CCacheManBase< ManagerType, CacheType, 2 >::node_type
base::node_type node_type
Definition: CCacheManagement.h:342
END_NAMESPACE_PBORI
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
polybori::CCacheManBase< ManagerType, CacheType, 0 >::find
node_type find(node_type,...) const
Definition: CCacheManagement.h:267
polybori::CCacheTypes::plug_1
Definition: CCacheManagement.h:56
polybori::CCacheManBase
This template forms the base for CCacheManagement. It implements routines for finding and inserting r...
Definition: CCacheManagement.h:219
boost
Definition: embed.h:359
polybori::CCacheManagement::deg_type
manager_type::deg_type deg_type
Definition: CCacheManagement.h:463
polybori::CCacheTypes::interpolate_smallest_lex
Definition: CCacheManagement.h:68
polybori::CCacheManBase< ManagerType, CacheType, 0 >::CCacheManBase
CCacheManBase(const manager_type &mgr)
Constructor.
Definition: CCacheManagement.h:262
polybori::pbori_base< CCacheManBase< boost::intrusive_ptr< CCuddCore >, CacheType, ArgumentLength > >::type
CCuddLikeMgrStorage< boost::intrusive_ptr< CCuddCore > > type
Definition: CCacheManagement.h:240
polybori::CCacheManBase< ManagerType, CacheType, 2 >::insert
void insert(navigator first, navigator second, navigator result) const
Store cached value wrt. given node.
Definition: CCacheManagement.h:367
polybori::CCacheManBase< ManagerType, CacheType, 2 >::find
node_type find(node_type first, node_type second) const
Find cached value wrt. given node.
Definition: CCacheManagement.h:351
polybori::CCommutativeCacheManagement::base
CCacheManagement< manager_type, cache_type, 2 > base
Name base type.
Definition: CCacheManagement.h:499
BEGIN_NAMESPACE_PBORI
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
polybori::CCacheTypes::ternary_cache_tag
Definition: CCacheManagement.h:38
polybori::CCacheManBase< ManagerType, CacheType, 3 >::node_type
base::node_type node_type
Definition: CCacheManagement.h:397
polybori::CCuddLikeMgrStorage::manager_type
MgrType manager_type
Set manager type.
Definition: CCacheManagement.h:148
polybori::CCacheManBase< ManagerType, CacheType, 0 >::insert
void insert(...) const
Definition: CCacheManagement.h:268
polybori::CCacheManagement
This template class forms the base for CCommutativeCacheManagement and CacheManager. It is an interface defining find and insert on decision diagram cache.
Definition: CCacheManagement.h:455
polybori::CCacheManagement::base
CCacheManBase< manager_type, cache_type, nargs > base
Name base type.
Definition: CCacheManagement.h:471
polybori::CCommutativeCacheManagement::insert
void insert(node_type first, node_type second, node_type result) const
Store cached value wrt. given node.
Definition: CCacheManagement.h:524
polybori::CCacheManagement::manager_type
ManagerType manager_type
Definition: CCacheManagement.h:462
polybori::CAuxTypes::deg_type
int deg_type
Type for polynomial degrees (ranges from -1 to maxint)
Definition: pbori_defs.h:222
polybori::CCacheTypes::minimal_mod
Definition: CCacheManagement.h:50
polybori::CCacheManBase< ManagerType, CacheType, 1 >::navigator
base::navigator navigator
Definition: CCacheManagement.h:288
CCuddCore.h
polybori::CCacheTypes::interpolate
Definition: CCacheManagement.h:66
polybori::CCommutativeCacheManagement::CCommutativeCacheManagement
CCommutativeCacheManagement(const typename base::manager_type &mgr)
Constructor and default constructor.
Definition: CCacheManagement.h:506
polybori::CCacheTypes::minimal_elements
Definition: CCacheManagement.h:51
polybori::CCacheTypes::block_dp_asc_lead
lead_tag< block_dp_asc_tag > block_dp_asc_lead
Definition: CCacheManagement.h:86
polybori::explicit_navigator_cast
CCuddNavigator explicit_navigator_cast(CCuddNavigator::pointer_type ptr)
Definition: CCuddNavigator.h:214
polybori::CCacheTypes::contained_variables
Definition: CCacheManagement.h:77
polybori::CCacheTypes::has_factor_x_plus_y
Definition: CCacheManagement.h:96
polybori::CCacheManBase< ManagerType, CacheType, 1 >
Definition: CCacheManagement.h:275
polybori::CCacheTypes::lex_lead
Definition: CCacheManagement.h:81
polybori::CCuddLikeMgrStorage::manager
manager_type manager() const
Accessing manager.
Definition: CCacheManagement.h:177
polybori::BoolePolyRing
This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and v...
Definition: BoolePolyRing.h:40
polybori::CCuddLikeMgrStorage::generate
dd_type generate(navigator navi) const
Re-generate valid decision diagram from navigator.
Definition: CCacheManagement.h:180
polybori::CCacheManBase< ManagerType, CacheType, 3 >::base
pbori_base< self >::type base
Set base type.
Definition: CCacheManagement.h:393
cuddCacheLookup2Zdd
#define cuddCacheLookup2Zdd
Definition: prefix_internal.h:191
polybori::CCacheTypes::no_cache_tag
Definition: CCacheManagement.h:35
polybori::CCacheManBase< ManagerType, CacheType, 0 >::find
navigator find(navigator,...) const
Definition: CCacheManagement.h:266
polybori::CCacheManagement::CCacheManagement
CCacheManagement(const manager_type &mgr)
Constructor and default constructor.
Definition: CCacheManagement.h:477
polybori::CCacheTypes::testwise_ternary
Definition: CCacheManagement.h:89
polybori::CCacheManBase< ManagerType, CacheType, 1 >::node_type
base::node_type node_type
Definition: CCacheManagement.h:287
polybori::CCuddInterface
This class defines a C++ interface to CUDD's decicion diagram manager.
Definition: CCuddInterface.h:111
polybori::CCacheManBase< ManagerType, CacheType, 2 >::find
navigator find(navigator first, navigator second) const
Find cached value wrt. given node (for navigator type)
Definition: CCacheManagement.h:355
cuddCacheInsert2
#define cuddCacheInsert2
Definition: prefix_internal.h:183
polybori::CCacheTypes::ll_red_nf
Definition: CCacheManagement.h:55
polybori::CCacheManBase< ManagerType, CacheType, 1 >::find
navigator find(navigator node) const
Find cached value wrt. given node (for navigator type)
Definition: CCacheManagement.h:301
polybori::CCuddLikeMgrStorage::internal_manager_type
DdManager * internal_manager_type
Set type of Cudd's internal manager type.
Definition: CCacheManagement.h:151
cuddCacheLookupZdd
#define cuddCacheLookupZdd
Definition: prefix_internal.h:192
polybori::pbori_base
Definition: pbori_func.h:881
cuddCacheInsert
#define cuddCacheInsert
Definition: prefix_internal.h:182
polybori::CCuddLikeMgrStorage::ring_type
BoolePolyRing ring_type
Type of Boolean rings.
Definition: CCacheManagement.h:164
polybori::CCacheManBase< ManagerType, CacheType, 3 >::insert
void insert(navigator first, navigator second, navigator third, navigator result) const
Store cached value wrt. given node.
Definition: CCacheManagement.h:426
polybori::CCacheTypes::union_xor
Definition: CCacheManagement.h:45
polybori::CCacheManBase< ManagerType, CacheType, 3 >::find
node_type find(node_type first, node_type second, node_type third) const
Find cached value wrt. given node.
Definition: CCacheManagement.h:406
pbori_defs.h
polybori::BoolePolyRing::dd_type
class BooleSet dd_type
set decision diagram type
Definition: BoolePolyRing.h:62
polybori::CCacheTypes::exist_abstract
Definition: CCacheManagement.h:57
polybori::CCacheManBase< ManagerType, CacheType, 3 >::find
navigator find(navigator first, navigator second, navigator third) const
Find cached value wrt. given node (for navigator type)
Definition: CCacheManagement.h:412
polybori::CCacheManBase< ManagerType, CacheType, 2 >::insert
void insert(node_type first, node_type second, node_type result) const
Store cached value wrt. given node.
Definition: CCacheManagement.h:360
polybori::CCacheManBase< ManagerType, CacheType, 3 >::CCacheManBase
CCacheManBase(const manager_type &mgr)
Constructor.
Definition: CCacheManagement.h:403
polybori::CCacheTypes::block_degree
Definition: CCacheManagement.h:93
polybori::CCacheManBase< ManagerType, CacheType, 3 >::navigator
base::navigator navigator
Definition: CCacheManagement.h:398
CCuddNavigator.h
polybori::CCacheTypes::used_variables
Definition: CCacheManagement.h:91
polybori::CCuddLikeMgrStorage::CCuddLikeMgrStorage
CCuddLikeMgrStorage(const manager_type &mgr)
Constructor.
Definition: CCacheManagement.h:170
polybori::CCacheTypes::has_factor_x
Definition: CCacheManagement.h:61
polybori::CCacheTypes::zeros
Definition: CCacheManagement.h:67
polybori::CCacheTypes::unary_cache_tag
Definition: CCacheManagement.h:36
polybori::CCacheManBase< ManagerType, CacheType, 1 >::base
pbori_base< self >::type base
Set base type.
Definition: CCacheManagement.h:283
polybori::DdManager
pbori_DdManager DdManager
Definition: traits.h:33
polybori::CCacheManBase< ManagerType, CacheType, 3 >::insert
void insert(node_type first, node_type second, node_type third, node_type result) const
Store cached value wrt. given node.
Definition: CCacheManagement.h:418
polybori::CCommutativeCacheManagement::find
navigator find(navigator first, navigator second) const
Find cached value wrt. given node (for navigator type)
Definition: CCacheManagement.h:518
polybori::CCacheTypes::block_dlex_lead
lead_tag< block_dlex_tag > block_dlex_lead
Definition: CCacheManagement.h:85
polybori::CCuddLikeMgrStorage::navigator
CCuddNavigator navigator
Type of navigators.
Definition: CCacheManagement.h:157
polybori::CAuxTypes::idx_type
int idx_type
Type for indices.
Definition: pbori_defs.h:228
polybori::CCacheManBase< ManagerType, CacheType, 1 >::CCacheManBase
CCacheManBase(const manager_type &mgr)
Constructor.
Definition: CCacheManagement.h:293
polybori::CCacheManagement::idx_type
manager_type::idx_type idx_type
Definition: CCacheManagement.h:465
polybori::cudd_tag_number
Definition: CCacheManagement.h:132
polybori::CCommutativeCacheManagement::find
node_type find(node_type first, node_type second) const
Find cached value wrt. given node.
Definition: CCacheManagement.h:510
polybori::CCacheTypes::mod_deg2_set
mod_varset mod_deg2_set
Definition: CCacheManagement.h:73
polybori::CCacheManBase< ManagerType, CacheType, 0 >::navigator
base::navigator navigator
Definition: CCacheManagement.h:257
polybori::CCacheManagement::size_type
manager_type::size_type size_type
Definition: CCacheManagement.h:464
polybori::CCommutativeCacheManagement::navigator
base::navigator navigator
Definition: CCacheManagement.h:503
polybori::CCacheManagement::cache_type
CacheType cache_type
Definition: CCacheManagement.h:466
polybori::CCacheManBase< ManagerType, CacheType, 0 >::manager_type
base::manager_type manager_type
Definition: CCacheManagement.h:258
polybori::CCommutativeCacheManagement::manager_type
ManagerType manager_type
Definition: CCacheManagement.h:494
polybori::CCacheManBase< ManagerType, CacheType, 1 >::insert
void insert(navigator node, navigator result) const
Store cached value wrt. given node.
Definition: CCacheManagement.h:313
insert
Accessing .insert()
polybori::CCacheTypes::has_factor_x_plus_one
Definition: CCacheManagement.h:62
polybori::CCacheTypes::multiply_recursive
Definition: CCacheManagement.h:47
polybori::CCacheManBase< ManagerType, CacheType, 3 >
Definition: CCacheManagement.h:385
polybori::CCacheTypes::no_cache
Definition: CCacheManagement.h:44
polybori::CCacheTypes::is_rewriteable
Definition: CCacheManagement.h:103
polybori::CCacheManBase< ManagerType, CacheType, 2 >::base
pbori_base< self >::type base
Set base type.
Definition: CCacheManagement.h:338
polybori::CCommutativeCacheManagement
Definition: CCacheManagement.h:488
polybori::CCacheManBase< ManagerType, CacheType, 2 >::CCacheManBase
CCacheManBase(const manager_type &mgr)
Constructor.
Definition: CCacheManagement.h:348
Cudd_Deref
#define Cudd_Deref
Definition: prefix_internal.h:160
polybori::CCacheManBase< ManagerType, CacheType, 0 >::base
pbori_base< self >::type base
Set base type.
Definition: CCacheManagement.h:252
polybori::CCommutativeCacheManagement::cache_type
CacheType cache_type
Definition: CCacheManagement.h:495
polybori::CCacheTypes::mapping
Definition: CCacheManagement.h:101
polybori::CCuddLikeMgrStorage::one
dd_type one() const
Get constant one.
Definition: CCacheManagement.h:185
polybori::CCacheTypes::divisorsof_fixedpath
Definition: CCacheManagement.h:88
polybori::pbori_base< CCacheManBase< BoolePolyRing, CacheType, ArgumentLength > >::type
CCuddLikeMgrStorage< BoolePolyRing > type
Definition: CCacheManagement.h:233
polybori::CAuxTypes::size_type
std::size_t size_type
Type for lengths, dimensions, etc.
Definition: pbori_defs.h:219
polybori::CCacheTypes::mod_mon_set
mod_varset mod_mon_set
Definition: CCacheManagement.h:74
polybori::CCuddNavigator
This class defines an iterator for navigating through then and else branches of ZDDs.
Definition: CCuddNavigator.h:36
polybori::CCacheTypes::include_divisors
Definition: CCacheManagement.h:70
polybori::CCuddLikeMgrStorage::internalManager
internal_manager_type internalManager() const
Accessing Cudd-internal decision diagram manager.
Definition: CCacheManagement.h:196
polybori::CCacheManBase< ManagerType, CacheType, 3 >::manager_type
base::manager_type manager_type
Definition: CCacheManagement.h:399
polybori::pbori_base< CCacheManBase< CCuddInterface, CacheType, ArgumentLength > >::type
CCuddLikeMgrStorage< CCuddInterface > type
Definition: CCacheManagement.h:225
polybori::CCacheTypes::divisorsof
Definition: CCacheManagement.h:54
polybori::CCacheTypes::mod_varset
Definition: CCacheManagement.h:65
polybori::CCacheTypes::divide
Definition: CCacheManagement.h:48
polybori::CCuddLikeMgrStorage::node_type
DdNode * node_type
Set type of Cudd's nodes.
Definition: CCacheManagement.h:154
polybori::CCacheTypes::left_equals_right_x_branch_and_r_has_fac_x
Definition: CCacheManagement.h:97
polybori::CCacheTypes::contained_deg2
Definition: CCacheManagement.h:76
cuddCacheLookup1Zdd
#define cuddCacheLookup1Zdd
Definition: prefix_internal.h:189
polybori::CCacheTypes::map_every_x_to_x_plus_one
Definition: CCacheManagement.h:79
polybori::CCacheTypes::binary_cache_tag
Definition: CCacheManagement.h:37
polybori::CCommutativeCacheManagement::insert
void insert(navigator first, navigator second, navigator result) const
Store cached value wrt. given node (for navigator type)
Definition: CCacheManagement.h:532
polybori::CCacheManBase< ManagerType, CacheType, 0 >
Definition: CCacheManagement.h:244
polybori::CCacheManBase< ManagerType, CacheType, 2 >::navigator
base::navigator navigator
Definition: CCacheManagement.h:343
polybori::CCacheManBase< ManagerType, CacheType, 2 >::manager_type
base::manager_type manager_type
Definition: CCacheManagement.h:344
polybori::CCommutativeCacheManagement::node_type
base::node_type node_type
Define node type.
Definition: CCacheManagement.h:502
polybori::CCacheManBase< ManagerType, CacheType, 0 >::node_type
base::node_type node_type
Definition: CCacheManagement.h:256
polybori::CCacheManBase< ManagerType, CacheType, 1 >::find
node_type find(node_type node) const
Find cached value wrt. given node.
Definition: CCacheManagement.h:296
polybori::CCacheManBase< ManagerType, CacheType, 1 >::insert
void insert(node_type node, node_type result) const
Store cached value wrt. given node.
Definition: CCacheManagement.h:306
polybori::CCacheTypes::lead_tag
Definition: CCacheManagement.h:41
polybori::CCuddLikeMgrStorage
Definition: CCacheManagement.h:145
polybori::CCacheManBase< ManagerType, CacheType, 1 >::manager_type
base::manager_type manager_type
Definition: CCacheManagement.h:289
polybori::CCacheTypes::multiplesof
Definition: CCacheManagement.h:53
polybori::count_tags
Definition: CCacheManagement.h:108
polybori::increment_count_tags
Definition: CCacheManagement.h:116
cuddCacheInsert1
#define cuddCacheInsert1
Definition: prefix_internal.h:184
polybori::CCuddLikeMgrStorage::ring
ring_type ring() const
Definition: CCacheManagement.h:193
polybori::CCacheTypes::dp_asc_lead
lead_tag< dp_asc_tag > dp_asc_lead
Definition: CCacheManagement.h:83
Cudd_Ref
#define Cudd_Ref
Definition: prefix_internal.h:157
polybori::CCacheTypes::degree
Definition: CCacheManagement.h:59