ostream &ASTNode::LispPrint(ostream &os, int indentation) const
{
- printer::Lisp_Print(os, *this, indentation);
+ return printer::Lisp_Print(os, *this, indentation);
}
ostream &ASTNode::LispPrint_indent(ostream &os, int indentation) const
{
- printer::Lisp_Print_indent(os, *this, indentation);
+ return printer::Lisp_Print_indent(os, *this, indentation);
}
ostream& ASTNode::PL_Print(ostream &os, int indentation) const
{
- printer::PL_Print(os, *this, indentation);
+ return printer::PL_Print(os, *this, indentation);
}
//This is the IO manipulator. It builds an object of class
//round of substitution, solving, and simplification. ensures that
//DAG is minimized as much as possibly, and ideally should
//garuntee that all liketerms in BVPLUSes have been combined.
- BVSolver bvsolver(this);
+ BVSolver* bvsolver = new BVSolver(this);
SimplifyWrites_InPlace_Flag = false;
Begin_RemoveWrites = false;
start_abstracting = false;
SimplifyFormula_TopLevel(simplified_solved_InputToSAT, false);
ASTNodeStats("after simplification: ", simplified_solved_InputToSAT);
simplified_solved_InputToSAT =
- bvsolver.TopLevelBVSolve(simplified_solved_InputToSAT);
+ bvsolver->TopLevelBVSolve(simplified_solved_InputToSAT);
ASTNodeStats("after solving: ", simplified_solved_InputToSAT);
} while (inputToSAT != simplified_solved_InputToSAT);
SimplifyFormula_TopLevel(simplified_solved_InputToSAT, false);
ASTNodeStats("after simplification: ", simplified_solved_InputToSAT);
simplified_solved_InputToSAT =
- bvsolver.TopLevelBVSolve(simplified_solved_InputToSAT);
+ bvsolver->TopLevelBVSolve(simplified_solved_InputToSAT);
ASTNodeStats("after solving: ", simplified_solved_InputToSAT);
} while (inputToSAT != simplified_solved_InputToSAT);
ASTNodeStats("After SimplifyWrites_Inplace: ", simplified_solved_InputToSAT);
+ delete bvsolver;
+ bvsolver = NULL;
+
start_abstracting = (arraywrite_refinement_flag) ? true : false;
SimplifyWrites_InPlace_Flag = false;
Begin_RemoveWrites = (start_abstracting) ? false : true;