PolyBoRi
LiteralFactorizationIterator.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
14 //*****************************************************************************
15 
16 #ifndef polybori_groebner_LiteralFactorizationIterator_h_
17 #define polybori_groebner_LiteralFactorizationIterator_h_
18 
19 // include basic definitions
20 #include "groebner_defs.h"
21 #include "LiteralFactorization.h"
22 
23 #include <algorithm>
24 #include <vector>
25 #include <map>
26 #include <set>
27 #include <utility>
28 
30 
31 
37  typedef LiteralFactorizationIterator self;
38 
39 public:
43 
45  map_type::const_iterator var2const_iter_,
46  var2var_map_type::const_iterator
47  var2var_iter_
48  ):
49  var2var_iter(var2var_iter_), var2const_iter(var2const_iter_),
50  literal_factorization(literal_factorization_),
51  m_ring(literal_factorization_->rest.ring()) { }
52 
53 
54  self & operator++();
55  Polynomial operator*() const;
56 
57  bool operator==(const self& other){
58  return ((literal_factorization==other.literal_factorization)
59  && (var2const_iter==other.var2const_iter) &&
60  (var2var_iter==other.var2var_iter)
61  );
62  }
63  bool operator!=(const self& other){
64  return !(*this==other);
65  }
66 
67 private:
68  var2var_map_type::const_iterator var2var_iter;
69  map_type::const_iterator var2const_iter;
70 
71  const LiteralFactorization* literal_factorization;
72  BoolePolyRing m_ring;
73 };
74 
76 
77 #endif /* polybori_groebner_LiteralFactorizationIterator_h_ */
This class defines LiteralFactorizationIterator.
Definition: LiteralFactorizationIterator.h:36
#define END_NAMESPACE_PBORIGB
Definition: groebner_defs.h:16
Definition: LiteralFactorization.h:24
fac_type::var2var_map_type var2var_map_type
Definition: LiteralFactorizationIterator.h:41
LiteralFactorizationIterator(LiteralFactorization *literal_factorization_, map_type::const_iterator var2const_iter_, var2var_map_type::const_iterator var2var_iter_)
Definition: LiteralFactorizationIterator.h:44
This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and v...
Definition: BoolePolyRing.h:40
#define BEGIN_NAMESPACE_PBORIGB
Definition: groebner_defs.h:15
LiteralFactorization fac_type
Definition: LiteralFactorizationIterator.h:40
std::map< idx_type, int > map_type
Definition: LiteralFactorization.h:30
This class wraps the underlying decicion diagram type and defines the necessary operations.
Definition: BoolePolynomial.h:85
bool operator==(const self &other)
Definition: LiteralFactorizationIterator.h:57
bool operator!=(const self &other)
Definition: LiteralFactorizationIterator.h:63
fac_type::map_type map_type
Definition: LiteralFactorizationIterator.h:42
BooleConstant operator*(const BooleConstant &lhs, const BooleConstant &rhs)
Definition: BooleConstant.h:124
std::map< idx_type, idx_type > var2var_map_type
Definition: LiteralFactorization.h:42