simplified_solved_InputToSAT);
}
- int initialSize = simp->Return_SolverMap()->size();
- simplified_solved_InputToSAT = simp->CreateSubstitutionMap(simplified_solved_InputToSAT, arrayTransformer);
- if (initialSize != simp->Return_SolverMap()->size())
+ simplified_solved_InputToSAT = simp->CreateSubstitutionMap(simplified_solved_InputToSAT, arrayTransformer);
+ if (simp->hasUnappliedSubstitutions())
{
- simplified_solved_InputToSAT = simp->applySubstitutionMap(simplified_solved_InputToSAT);
- simp->haveAppliedSubstitutionMap();
- bm->ASTNodeStats("After Propagating Equalities: ", simplified_solved_InputToSAT);
- }
+ simplified_solved_InputToSAT = simp->applySubstitutionMap(simplified_solved_InputToSAT);
+ simp->haveAppliedSubstitutionMap();
+ bm->ASTNodeStats("After Propagating Equalities: ", simplified_solved_InputToSAT);
+ }
// Find pure literals.
if (bm->UserFlags.isSet("pure-literals","1"))
const bool arrayops = containsArrayOps(original_input);
DifficultyScore difficulty;
- long initial_difficulty_score = difficulty.score(original_input);
if (bm->UserFlags.stats_flag)
- cerr << "Difficulty Initially:" << initial_difficulty_score << endl;
+ cerr << "Difficulty Initially:" << difficulty.score(original_input) << endl;
// A heap object so I can easily control its lifetime.
BVSolver* bvSolver = new BVSolver(bm,simp);
simplified_solved_InputToSAT = sizeReducing(inputToSAT,bvSolver);
//simplified_solved_InputToSAT = sizeReducing(simplified_solved_InputToSAT,bvSolver);
- initial_difficulty_score = difficulty.score(simplified_solved_InputToSAT);
+ unsigned initial_difficulty_score = difficulty.score(simplified_solved_InputToSAT);
if (bm->UserFlags.stats_flag)
cout << "Difficulty After Size reducing:" << initial_difficulty_score << endl;
if(bm->UserFlags.optimize_flag)
{
- int initialSize = simp->Return_SolverMap()->size();
-
simplified_solved_InputToSAT =
simp->CreateSubstitutionMap(simplified_solved_InputToSAT, arrayTransformer);
// But it shouldn't be T, it should be a constant.
// Applying the substitution map fixes this case.
//
- if (initialSize != simp->Return_SolverMap()->size())
+ if (simp->hasUnappliedSubstitutions())
{
simplified_solved_InputToSAT = simp->applySubstitutionMap(simplified_solved_InputToSAT);
simp->haveAppliedSubstitutionMap();
if(bm->UserFlags.optimize_flag)
{
- int initialSize = simp->Return_SolverMap()->size();
-
simplified_solved_InputToSAT =
simp->CreateSubstitutionMap(simplified_solved_InputToSAT, arrayTransformer);
- if (initialSize != simp->Return_SolverMap()->size())
+ if (simp->hasUnappliedSubstitutions())
{
simplified_solved_InputToSAT = simp->applySubstitutionMap(simplified_solved_InputToSAT);
simp->haveAppliedSubstitutionMap();
void loops_helper(const set<ASTNode>& varsToCheck, set<ASTNode>& visited);
bool loops(const ASTNode& n0, const ASTNode& n1);
+ int substitutionsLastApplied;
public:
+ bool hasUnappliedSubstitutions()
+ {
+ return (substitutionsLastApplied != SolverMap->size());
+ }
+
// When the substitutionMap has been applied globally, then,
// these are no longer needed.
void haveAppliedSubstitutionMap()
rhs.clear();
rhs_visited.clear();
rhsAlreadyAdded.clear();
+ substitutionsLastApplied = SolverMap->size();
}
VariablesInExpression vars;
SolverMap = new ASTNodeMap(INITIAL_TABLE_SIZE);
loopCount = 0;
+ substitutionsLastApplied =0;
}
void clear()