84 std::map<varID, std::map<varID, affineInequality> >
vars2Value;
136 n(n), state(state), annotName(annotName), annotVal(annotVal), varsToInclude(varsToInclude) {}
138 n(n), state(state), annotName(annotName), annotVal(annotVal) {}
182 std::string indent=
"");
187 std::string indent=
"");
224 bool addVar(
const varID& scalar, std::string indent=
"");
288 bool eraseVarConstr(
const varID& eraseVar,
bool noConsistencyCheck=
false, std::string indent=
"");
312 bool replaceVar(
const varID& origVar,
const varID& newVar,
bool noConsistencyCheck=
false, std::string indent=
"");
317 bool annotInterestingVar(
const varID& var,
const std::set<std::pair<std::string, void*> >& noCopyAnnots,
const std::set<varID>& noCopyVars,
318 const std::string& annotName,
void* annotVal, std::string indent=
"");
332 bool copyAnnotVars(std::string srcAnnotName,
void* srcAnnotVal,
333 std::string tgtAnnotName,
void* tgtAnnotVal,
334 const std::set<std::pair<std::string, void*> >& noCopyAnnots,
335 const std::set<varID>& noCopyVars, std::string indent=
"");
348 bool mergeAnnotVars(
const std::string& finalAnnotName,
void* finalAnnotVal,
349 const std::string& remAnnotName,
void* remAnnotVal,
350 const std::set<std::pair<std::string, void*> >& noCopyAnnots,
351 const std::set<varID>& noCopyVars, std::string indent=
"");
369 std::string finalAnnotName,
void* finalAnnotVal,
370 std::string remAnnotName,
void* remAnnotVal,
371 const std::set<std::pair<std::string, void*> >& noCopyAnnots,
372 const std::set<varID>& noCopyVars, std::string indent=
"");
378 std::string finalAnnotName,
void* finalAnnotVal,
379 std::string remAnnotName,
void* remAnnotVal,
380 const std::set<std::pair<std::string, void*> >& noCopyAnnots,
381 const std::set<varID>& noCopyVars, std::string indent=
"");
388 static bool varHasAnnot(
const varID& var,
const std::set<std::pair<std::string, void*> >& annots, std::string indent=
"");
393 static bool varHasAnnot(
const varID& var, std::string annotName,
void* annotVal, std::string indent=
"");
440 std::string annotName,
const varIDSet& noAnnot, std::string indent=
"");
447 std::string annotName,
const varIDSet& noAnnot, std::string indent=
"");
453 bool removeVarAnnot(std::string annotName,
void* annot, std::string indent=
"");
459 std::string newAnnotName,
void* newAnnot, std::string indent=
"");
465 bool addVarAnnot(std::string tgtAnnotName,
void* tgtAnnotVal, std::string newAnnotName,
void* newAnnotVal, std::string indent=
"");
474 bool negate(std::string indent=
"");
515 bool assertEq(
const varID& x,
const varID& y,
int a=1,
int b=1,
int c=0, std::string indent=
"");
526 bool eqVars(
const varID& v1,
const varID& v2,
int a=1,
int b=1,
int c=0, std::string indent=
"");
528 {
return eqVars(v1, v2, 1, 1, 0, indent); }
532 bool isEqVars(
const varID& v1,
const varID& v2,
int& a,
int& b,
int& c, std::string indent=
"");
536 std::map<varID, affineInequality>
getEqVars(
varID var, std::string indent=
"");
539 bool lteVars(
const varID& v1,
const varID& v2,
int a=1,
int b=1,
int c=0, std::string indent=
"");
542 bool ltVars(
const varID& v1,
const varID& v2,
int a=1,
int b=1,
int c=0, std::string indent=
"");
549 std::map<varID, std::map<varID, affineInequality> >::const_iterator
curX;
550 std::map<varID, affineInequality>::const_iterator
curY;
578 std::map<varID, std::map<varID, affineInequality> >::const_iterator
curX;
579 std::map<varID, affineInequality>::const_iterator
curY;
590 const std::map<varID, affineInequality>::iterator&
curY);
649 {
return orUpd(that,
""); }
654 {
return andUpd(that,
""); }
658 {
return andUpd(that,
""); }
671 bool OR,
bool limitToThat,
672 std::map<
varID, std::map<varID, affineInequality> >::
iterator& itThisX,
bool& modified,
673 std::string indent=
"");
682 bool OR,
bool limitToThat,
684 std::map<
varID, std::map<varID, affineInequality> >::
iterator& itThatX,
685 std::map<
varID, std::map<varID, affineInequality> >& additionsToThis,
686 bool& modified, std::string indent=
"");
692 bool OR,
bool limitToThat,
693 std::map<
varID, std::map<varID, affineInequality> >::
iterator& itThisX,
694 std::map<varID, affineInequality>::iterator& itThisY,
695 bool& modified, std::string indent=
"");
704 bool OR,
bool limitToThat,
705 std::map<
varID, std::map<varID, affineInequality> >::
iterator& itThatX,
706 std::map<varID, affineInequality>::iterator& itThatY,
707 std::map<varID, affineInequality>& additionsToThis,
708 bool& modified, std::string indent=
"");
715 void transitiveClosureY(
const varID& x,
const varID& y,
bool& modified,
int& numSteps,
int& numInfers,
bool& iterModified, std::string indent=
"");
716 void transitiveClosureZ(
const varID& x,
const varID& y,
const varID& z,
bool& modified,
int& numSteps,
int& numInfers,
bool& iterModified, std::string indent=
"");
792 std::string indent=
"");
822 bool setToTop(
bool onlyIfNotInit=
false, std::string indent=
"");
828 std::pair<levels, constrTypes>
getLevel(
bool noConsistencyCheck=
false, std::string indent=
"");
833 bool isSelfConsistent(
bool noConsistencyCheck=
false, std::string indent=
"");
844 bool isMaximalState(
bool noConsistencyCheck=
false, std::string indent=
"");
852 std::string
str(std::string indent=
"");
853 void varSetStatusToStream(
const std::set<varID>&
vars, std::ostringstream& outs,
bool &needEndl, std::string indent=
"");
864 std::string
str(std::string indent,
bool useIsBottom);
868 std::string
toDOT(std::string graphName);
872 std::string
toDOT(std::string graphName, std::set<varID>& focusVars);
889 bool mayTrue(std::string indent=
"");