LiteralFactorization.h
Go to the documentation of this file.
/*
* LiteralFactorization.h
* PolyBoRi
*
* Created by Michael Brickenstein on 29.05.06.
* Copyright 2006 The PolyBoRi Team. See LICENSE file.
*
*/
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <utility>
#include "groebner_defs.h"
#ifndef PBORI_GB_LF_H
#define PBORI_GB_LF_H
BEGIN_NAMESPACE_PBORIGB
std::vector<Polynomial> easy_linear_factors(const Polynomial &p);
class LiteralFactorizationIterator; // forward declaration
class LiteralFactorization{
public:
typedef LiteralFactorizationIterator const_iterator;
LiteralFactorization(const Polynomial&);
typedef std::map<idx_type, int> map_type;
map_type factors;
Polynomial rest;
deg_type lmDeg;
bool occursAsLeadOfFactor(idx_type v) const;
bool trivial() const;
bool is11Factorization() const;
bool is00Factorization() const;
//Theorem: f BoolePolynomial with factor (x+b), b in 0, 1 (considered in the usual Polynomial Ring)
//then f/(x+b) does not involve the variable x
//typedef std::pair<idx_type,idx_type> var_pair_type;
//typedef std::set<var_pair_type> two_var_factors;
typedef std::map<idx_type, idx_type> var2var_map_type;
var2var_map_type var2var_map;
const_iterator begin();
const_iterator end();
};
deg_type common_literal_factors_deg(const LiteralFactorization& a, const LiteralFactorization& b);
Polynomial
multiply_with_literal_factors(const LiteralFactorization& lf, Polynomial p);
END_NAMESPACE_PBORIGB
#endif
polybori::groebner::common_literal_factors_deg
deg_type common_literal_factors_deg(const LiteralFactorization &a, const LiteralFactorization &b)
Definition: LiteralFactorization.cc:319
polybori::groebner::LiteralFactorizationIterator
This class defines LiteralFactorizationIterator.
Definition: LiteralFactorizationIterator.h:36
polybori::groebner::LiteralFactorization::lmDeg
deg_type lmDeg
Definition: LiteralFactorization.h:33
END_NAMESPACE_PBORIGB
#define END_NAMESPACE_PBORIGB
Definition: groebner_defs.h:16
polybori::groebner::LiteralFactorization::rest
Polynomial rest
Definition: LiteralFactorization.h:32
polybori::groebner::LiteralFactorization
Definition: LiteralFactorization.h:24
polybori::groebner::deg_type
int deg_type
Definition: groebner_defs.h:42
polybori::groebner::LiteralFactorization::var2var_map
var2var_map_type var2var_map
Definition: LiteralFactorization.h:43
polybori::Polynomial
BoolePolynomial Polynomial
Definition: embed.h:51
BEGIN_NAMESPACE_PBORIGB
#define BEGIN_NAMESPACE_PBORIGB
Definition: groebner_defs.h:15
polybori::groebner::LiteralFactorization::map_type
std::map< idx_type, int > map_type
Definition: LiteralFactorization.h:30
polybori::BoolePolynomial
This class wraps the underlying decicion diagram type and defines the necessary operations.
Definition: BoolePolynomial.h:85
polybori::groebner::multiply_with_literal_factors
Polynomial multiply_with_literal_factors(const LiteralFactorization &lf, Polynomial p)
Definition: LiteralFactorization.cc:423
groebner_defs.h
polybori::groebner::LiteralFactorization::factors
map_type factors
Definition: LiteralFactorization.h:31
polybori::groebner::idx_type
polybori::CTypes::idx_type idx_type
Definition: groebner_defs.h:44
polybori::groebner::easy_linear_factors
std::vector< Polynomial > easy_linear_factors(const Polynomial &p)
Definition: LiteralFactorization.cc:19
polybori::groebner::LiteralFactorization::const_iterator
LiteralFactorizationIterator const_iterator
Definition: LiteralFactorization.h:27
polybori::groebner::LiteralFactorization::var2var_map_type
std::map< idx_type, idx_type > var2var_map_type
Definition: LiteralFactorization.h:42