default = "false"
help = "Synthesize conditions indepedently from return values (may generate bigger solutions)"
+[[option]]
+ name = "sygusUnifShuffleCond"
+ category = "regular"
+ long = "sygus-unif-shuffle-cond"
+ type = "bool"
+ default = "false"
+ help = "Shuffle condition pool when building solutions (may change solutions sizes)"
+
[[option]]
name = "sygusUnifBooleanHeuristicDt"
category = "regular"
#include "theory/datatypes/datatypes_rewriter.h"
#include "theory/quantifiers/sygus/synth_conjecture.h"
#include "theory/quantifiers/sygus/term_database_sygus.h"
+#include "util/random.h"
#include <math.h>
// add conditions
d_conds.clear();
d_conds.insert(d_conds.end(), d_cond_mvs.begin(), d_cond_mvs.end());
+ // shuffle conditions before bulding DT
+ //
+ // this does not impact whether it's possible to build a solution, but it does
+ // impact the potential size of the resulting solution (can make it smaller,
+ // bigger, or have no impact) and which conditions will be present in the DT,
+ // which influences the "quality" of the solution for cases not covered in the
+ // current data points
+ if (options::sygusUnifShuffleCond())
+ {
+ std::shuffle(d_conds.begin(), d_conds.end(), Random::getRandom());
+ }
unsigned num_conds = d_conds.size();
for (unsigned i = 0; i < num_conds; ++i)
{
#define __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_RL_H
#include <map>
+#include "options/main_options.h"
#include "theory/quantifiers/sygus/sygus_unif.h"
#include "theory/quantifiers/lazy_trie.h"