SMT-RAT  24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
ExactlyOneCommanderEncoder.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "PseudoBoolEncoder.h"
4 #include "CardinalityEncoder.h"
5 
6 namespace smtrat {
7 
9  private:
11 
12  public:
14 
15  Rational encodingSize(const ConstraintT& constraint);
16 
17  bool canEncode(const ConstraintT& constraint);
18 
19  std::string name() { return "ExactlyOneCommanderEncoder"; }
20 
21  protected:
22  std::optional<FormulaT> doEncode(const ConstraintT& constraint);
23 
24  private:
25  std::map<carl::Variable, std::vector<carl::Variable>> partition(carl::Variables);
26 
27  };
28 
29 }
30 
std::optional< FormulaT > doEncode(const ConstraintT &constraint)
std::map< carl::Variable, std::vector< carl::Variable > > partition(carl::Variables)
bool canEncode(const ConstraintT &constraint)
Rational encodingSize(const ConstraintT &constraint)
Base class for a PseudoBoolean Encoder.
Class to create the formulas for axioms.
carl::Constraint< Poly > ConstraintT
Definition: types.h:29
mpq_class Rational
Definition: types.h:19