14 using Symmetry = std::vector<std::pair<Variable,Variable>>;
36 template<
typename Poly>
38 symmetry::GraphBuilder<Poly> g(f);
39 return g.symmetries();
43 template<
typename Poly>
46 for (
const auto& s: symmetries) {
47 res.emplace_back(symmetry::lexLeaderConstraint<Poly>(s));
48 if (onlyFirst)
return res.
back();
54 template<
typename Poly>
55 Formula<Poly>
breakSymmetries(
const Formula<Poly>& f,
bool onlyFirst =
true) {
67 template<
typename Poly>
72 template<
typename Poly>
77 template<
typename Poly>
carl is the main namespace for the library.
std::vector< std::pair< Variable, Variable > > Symmetry
A symmetry represents a bijection on a set of variables.
Symmetries findSymmetries(const Formula< Poly > &f)
std::vector< Symmetry > Symmetries
Represents a list of symmetries.
Formula< Poly > breakSymmetries(const Symmetries &symmetries, bool onlyFirst=true)
const Formula & back() const