16 #ifndef polybori_groebner_fixed_path_divisors_h_
17 #define polybori_groebner_fixed_path_divisors_h_
24 #ifndef DANGEROUS_FIXED_PATH
25 typedef PBORI::CacheManager<CCacheTypes::divisorsof_fixedpath>
27 typedef PBORI::CacheManager<CCacheTypes::divisorsof>
39 MonomialSet(cache_mgr.generate(a_nav)).firstDivisorsOf(cache_mgr.generate(m_nav));
42 if (a_nav.
isConstant())
return cache_mgr.generate(a_nav);
54 while((a_index=*a_nav)!=(m_index=*m_nav)){
59 if (m_index==n_index){
71 return cache_mgr.generate(a_nav);
76 #ifndef DANGEROUS_FIXED_PATH
78 cache_mgr.find(a_nav, m_nav,n_nav);
80 return cache_mgr.generate(cached);
91 typedef PBORI::CacheManager<CCacheTypes::divisorsof>
94 cache_mgr_type2 cache_mgr2(cache_mgr.manager());
97 cache_mgr2.find(a_nav, m_nav);
99 if (cached.isValid()){
100 return cache_mgr2.generate(cached);
106 if (m_index==n_index){
109 if (!(result.isZero()))
110 result =
MonomialSet(index, result, cache_mgr.zero());
124 #ifndef DANGEROUS_FIXED_PATH
125 cache_mgr.insert(a_nav,m_nav,n_nav,result.navigation());
127 cache_mgr2.insert(a_nav,m_nav,result.navigation());
145 cache_mgr_type cache_mgr(a.
ring());
bool_type reducibleBy(const self &rhs) const
Test for reducibility.
Definition: BooleMonomial.h:190
#define END_NAMESPACE_PBORIGB
Definition: groebner_defs.h:16
Definition: CacheManager.h:31
navigator navigation() const
Navigate through ZDD by incrementThen(), incrementElse(), and terminated()
Definition: CCuddDDFacade.h:455
#define BEGIN_NAMESPACE_PBORIGB
Definition: groebner_defs.h:15
self elseBranch() const
Increment in else direction.
Definition: CCuddNavigator.h:98
MonomialSet fixed_path_divisors(MonomialSet a, Monomial m, Monomial n)
Definition: fixed_path_divisors.h:152
const ring_type & ring() const
Get reference to ring.
Definition: CCuddDDFacade.h:250
polybori::BooleSet MonomialSet
Definition: groebner_defs.h:45
bool isZero() const
Test whether diagram represents the empty set.
Definition: CCuddDDFacade.h:244
bool_type isTerminated() const
Check whether end of path was reached.
Definition: CCuddNavigator.h:128
polybori::CacheManager< CCacheTypes::divisorsof_fixedpath > fixed_divisors_cache_type
Definition: fixed_path_divisors.h:29
self thenBranch() const
Increment in then direction.
Definition: CCuddNavigator.h:92
#define PBORI_ASSERT(arg)
Definition: pbori_defs.h:118
const dd_type & diagram() const
Read-only access to internal decision diagramm structure.
Definition: BooleMonomial.h:213
self & incrementThen()
Increment in then direction.
Definition: CCuddNavigator.h:191
bool_type isValid() const
Check whether *this is not the default iterator self() (NULL pointer)
Definition: CCuddNavigator.h:125
bool_type isConstant() const
Check whether constant node was reached.
Definition: CCuddNavigator.h:172
This class defines an iterator for navigating through then and else branches of ZDDs.
Definition: CCuddNavigator.h:36
self & incrementElse()
Increment in else direction.
Definition: CCuddNavigator.h:203
Definition: BooleSet.h:57
bool_type terminalValue() const
Check whether terminal node marks end of path.
Definition: CCuddNavigator.h:181
This class is just a wrapper for using variables from cudd's decicion diagram.
Definition: BooleMonomial.h:50
MonomialSet do_fixed_path_divisors(MonomialSet a, MonomialSet m, MonomialSet n)
Definition: fixed_path_divisors.h:135