bm->ASTNodeStats("After AIG Core: ", simplified_solved_InputToSAT);
}
+#if 0
bm->ASTNodeStats("Before SimplifyWrites_Inplace begins: ", simplified_solved_InputToSAT);
bm->SimplifyWrites_InPlace_Flag = true;
while (inputToSAT != simplified_solved_InputToSAT);
bm->ASTNodeStats("After SimplifyWrites_Inplace: ", simplified_solved_InputToSAT);
+#endif
if (bm->UserFlags.isSet("enable-unconstrained", "1"))
{
return res;
}
+ #if 0
res = Ctr_Example->SATBased_ArrayWriteRefinement(NewSolver, original_input, satBase);
if (SOLVER_UNDECIDED != res)
{
CountersAndStats("print_func_stats", bm);
return res;
}
+ #endif
+
+ FatalError("TopLevelSTPAux: reached the end without proper conclusion:"
+ "either a divide by zero in the input or a bug in STP");
+ //bogus return to make the compiler shut up
+ return SOLVER_ERROR;
+
-// if (!bm->UserFlags.num_absrefine_flag)
- {
- FatalError("TopLevelSTPAux: reached the end without proper conclusion:"
- "either a divide by zero in the input or a bug in STP");
- //bogus return to make the compiler shut up
- return SOLVER_ERROR;
- }
- // else
- {
- // return res;
- }
} //End of TopLevelSTPAux
#if 0
ToSATBase* tosat,
bool refinement);
- //creates array write axiom only for the input term or formula, if
- //necessary. If there are no axioms to produce then it simply
- //generates TRUE
- ASTNode
- Create_ArrayWriteAxioms(const ASTNode& array_readoverwrite_term,
- const ASTNode& array_newname);
SOLVER_RETURN_TYPE
SATBased_ArrayReadRefinement(SATSolver& newS,
const ASTNode& original_input,
ToSATBase* tosat);
+#if 0
SOLVER_RETURN_TYPE
SATBased_ArrayWriteRefinement(SATSolver& newS,
const ASTNode& orig_input,
ToSATBase *tosat);
+ //creates array write axiom only for the input term or formula, if
+ //necessary. If there are no axioms to produce then it simply
+ //generates TRUE
+ ASTNode
+ Create_ArrayWriteAxioms(const ASTNode& array_readoverwrite_term,
+ const ASTNode& array_newname);
+
+#endif
+
void ClearAllTables(void)
{
CounterExampleMap.clear();
} //end of SATBased_ArrayReadRefinement
+#if 0
+ // This isn't currently wired up.
+
/******************************************************************
* ARRAY WRITE ABSTRACTION REFINEMENT
*
ASTNode arraywrite_axiom = simp->CreateSimplifiedEQ(lhs, rhs);
return arraywrite_axiom;
}//end of Create_ArrayWriteAxioms()
-
+#endif
};// end of namespace BEEV
//process only if not in the substitution map. simplifymap
//has been checked already
+#if 0
if (!CheckSubstitutionMap(out1, out1) && out1.GetKind() == READ && WRITE == out1[0].GetKind())
out1 = RemoveWrites_TopLevel(out1);
+#endif
//it is possible that after all the procesing the READ term
//reduces to READ(Symbol,const) and hence we should check the
return output;
} //end of distributemultoverplus()
+#if 0
//converts the BVSX(len, a0) operator into ITE( check top bit,
//extend a0 by 1, extend a0 by 0)
ASTNode
UpdateSimplifyMap(a, output, false);
return output;
} //end of ConvertBVSXToITE()
+#endif
+#if 0
ASTNode
Simplifier::RemoveWrites_TopLevel(const ASTNode& term)
{
return RemoveWrites(term);
}
} //end of RemoveWrites_TopLevel()
+#endif
// recursively simplify things that are of type array.
return output;
}
+#if 0
ASTNode
Simplifier::SimplifyWrites_InPlace(const ASTNode& term, ASTNodeMap* VarConstMap)
{
return output;
} //end of RemoveWrites()
+
ASTNode
Simplifier::ReadOverWrite_To_ITE(const ASTNode& term, ASTNodeMap* VarConstMap)
{
//UpdateSimplifyMap(term,output,false);
return output;
} //ReadOverWrite_To_ITE()
+#endif
//compute the multiplicative inverse of the input
ASTNode
cerr << "SimplifyNegMap:" << SimplifyNegMap->size() << ":" << SimplifyNegMap->bucket_count() << endl;
cerr << "AlwaysTrueFormSet" << AlwaysTrueHashSet.size() << ":" << AlwaysTrueHashSet.bucket_count() << endl;
cerr << "MultInverseMap" << MultInverseMap.size() << ":" << MultInverseMap.bucket_count() << endl;
+
+#if 0
cerr << "ReadOverWrite_NewName_Map" << ReadOverWrite_NewName_Map->size() << ":"
<< ReadOverWrite_NewName_Map->bucket_count() << endl;
cerr << "NewName_ReadOverWrite_Map" << NewName_ReadOverWrite_Map.size() << ":"
<< NewName_ReadOverWrite_Map.bucket_count() << endl;
+#endif
cerr << "substn_map" << substitutionMap.Return_SolverMap()->size() << ":"
<< substitutionMap.Return_SolverMap()->bucket_count() << endl;
// For ArrayWrite Abstraction: map from read-over-write term to
// newname.
- ASTNodeMap * ReadOverWrite_NewName_Map;
+ //ASTNodeMap * ReadOverWrite_NewName_Map;
// For ArrayWrite Refinement: Map new arraynames to
// Read-Over-Write terms
- ASTNodeMap NewName_ReadOverWrite_Map;
+ //ASTNodeMap NewName_ReadOverWrite_Map;
//Ptr to STP Manager
STPMgr * _bm;
{
SimplifyMap = new ASTNodeMap(INITIAL_TABLE_SIZE);
SimplifyNegMap = new ASTNodeMap(INITIAL_TABLE_SIZE);
- ReadOverWrite_NewName_Map = new ASTNodeMap();
+ //ReadOverWrite_NewName_Map = new ASTNodeMap();
ASTTrue = bm->CreateNode(TRUE);
ASTFalse = bm->CreateNode(FALSE);
{
delete SimplifyMap;
delete SimplifyNegMap;
- delete ReadOverWrite_NewName_Map;
+ //delete ReadOverWrite_NewName_Map;
delete nf;
}
ASTNode DistributeMultOverPlus(const ASTNode& a,
bool startdistribution = false);
- ASTNode ConvertBVSXToITE(const ASTNode& a);
+ //ASTNode ConvertBVSXToITE(const ASTNode& a);
ASTNode BVConstEvaluator(const ASTNode& t);
ASTNode SimplifyArrayTerm(const ASTNode& term,ASTNodeMap* VarConstMap);
- ASTNode ReadOverWrite_To_ITE(const ASTNode& term,
- ASTNodeMap* VarConstMap=NULL);
+ //ASTNode ReadOverWrite_To_ITE(const ASTNode& term,
+ // ASTNodeMap* VarConstMap=NULL);
void printCacheStatus();
+#if 0
//FIXME: Get rid of this horrible function
const ASTNodeMap * ReadOverWriteMap()
{
return ReadOverWrite_NewName_Map;
} // End of ReadOverWriteMap()
-
+#endif
+
bool hasUnappliedSubstitutions()
{
return substitutionMap.hasUnappliedSubstitutions();
{
SimplifyMap->clear();
SimplifyNegMap->clear();
- ReadOverWrite_NewName_Map->clear();
- NewName_ReadOverWrite_Map.clear();
+ //ReadOverWrite_NewName_Map->clear();
+ //NewName_ReadOverWrite_Map.clear();
AlwaysTrueHashSet.clear();
MultInverseMap.clear();
substitutionMap.clear();