SMT-RAT  24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
ProjectionOperator.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "../common.h"
4 
5 #include "Brown.h"
6 #include "Collins.h"
7 #include "Hong.h"
8 #include "Lazard.h"
9 #include "McCallum.h"
10 #include "McCallum_partial.h"
11 #include "utils.h"
12 
13 namespace smtrat {
14 namespace cad {
15 
17  template<typename Callback>
18  void operator()(ProjectionType pt, const UPoly& p, carl::Variable variable, Callback&& cb) const {
19  switch (pt) {
21  return projection::collins::single(p, variable, cb);
23  return projection::hong::single(p, variable, cb);
25  return projection::mccallum::single(p, variable, cb);
27  return projection::mccallum_partial::single(p, variable, cb);
29  return projection::lazard::single(p, variable, cb);
31  return projection::brown::single(p, variable, cb);
32  default:
33  SMTRAT_LOG_ERROR("smtrat.cad", "Selected a projection operator that is not implemented.");
34  return;
35  }
36  }
37  template<typename Callback>
38  void operator()(ProjectionType pt, const UPoly& p, const UPoly& q, carl::Variable variable, Callback&& i) const {
39  switch (pt) {
41  return projection::collins::paired(p, q, variable, i);
43  return projection::hong::paired(p, q, variable, i);
45  return projection::mccallum::paired(p, q, variable, i);
47  return projection::mccallum_partial::paired(p, q, variable, i);
49  return projection::lazard::paired(p, q, variable, i);
51  return projection::brown::paired(p, q, variable, i);
52  default:
53  SMTRAT_LOG_ERROR("smtrat.cad", "Selected a projection operator that is not implemented.");
54  return;
55  }
56  }
57 };
58 
59 } // namespace cad
60 } // namespace smtrat
void single(const Poly &p, carl::Variable variable, Callback &&cb)
Implements the part of Browns projection operator from that deals with a single polynomial p: .
Definition: Brown.h:20
void paired(const Poly &p, const UPoly &q, carl::Variable variable, Callback &&cb)
Implements the part of Browns projection operator from that deals with two polynomials p and q which...
Definition: Brown.h:30
void paired(const Poly &p, const UPoly &q, carl::Variable variable, Callback &&cb)
Implements the part of Collins projection operator from that deals with two polynomials p and q: .
Definition: Collins.h:49
void single(const Poly &p, carl::Variable variable, Callback &&cb)
Implements the part of Collins projection operator from that deals with a single polynomial p: .
Definition: Collins.h:21
void single(const Poly &p, carl::Variable variable, Callback &&cb)
Implements the part of Hongs projection operator from that deals with a single polynomial p which is...
Definition: Hong.h:19
void paired(const Poly &p, const UPoly &q, carl::Variable variable, Callback &&cb)
Implements the part of Hongs projection operator from that deals with two polynomials p and q: .
Definition: Hong.h:29
void paired(const Poly &p, const UPoly &q, carl::Variable variable, Callback &&cb)
Implements the part of Lazard projection operator from that deals with two polynomials p and q which...
Definition: Lazard.h:31
void single(const Poly &p, carl::Variable variable, Callback &&cb)
Implements the part of Lazards projection operator from that deals with a single polynomial p: .
Definition: Lazard.h:20
void single(const Poly &p, carl::Variable variable, Callback &&cb)
void paired(const Poly &p, const UPoly &q, carl::Variable variable, Callback &&cb)
void paired(const Poly &p, const UPoly &q, carl::Variable variable, Callback &&cb)
Implements the part of McCallums projection operator from that deals with two polynomials p and q: .
Definition: McCallum.h:35
void single(const Poly &p, carl::Variable variable, Callback &&cb)
Implements the part of McCallums projection operator from that deals with a single polynomial p: .
Definition: McCallum.h:19
carl::UnivariatePolynomial< Poly > UPoly
Definition: common.h:17
ProjectionType
Definition: Settings.h:9
Class to create the formulas for axioms.
#define SMTRAT_LOG_ERROR(channel, msg)
Definition: logging.h:32
void operator()(ProjectionType pt, const UPoly &p, carl::Variable variable, Callback &&cb) const
void operator()(ProjectionType pt, const UPoly &p, const UPoly &q, carl::Variable variable, Callback &&i) const