110 {
111 outs() <<
sucMsg(
"\t SUCCESS :") <<
"test1_1 start\n";
112 AbstractState itv;
113 RelExeState relation;
114
115 itv[0] = IntervalValue(0, 1);
117
118 relation[1] =
120 itv[1] = itv[0].getInterval() + IntervalValue(1);
121
124 assert(res ==
Set<u32_t>({0, 1}) &&
"inconsistency occurs");
126 RelationSolver rs;
127 const Z3Expr& relExpr = relation[1];
128 const Z3Expr& initExpr = rs.
gamma_hat(inv);
129 const Z3Expr& phi = (relExpr && initExpr).simplify();
130 AbstractState resRSY = rs.
RSY(inv, phi);
131 AbstractState resBilateral = rs.
bilateral(inv, phi);
132 AbstractState resBS = rs.
BS(inv, phi);
133
134 assert(resRSY == resBS && resBS == resBilateral && "inconsistency occurs");
136 {
137 outs() << r.first <<
" " << r.second.getInterval() <<
"\n";
138 }
141 }
const VarToAbsValMap & getVarToVal() const
get var2val map
bool eqVarToValMap(const VarToAbsValMap &lhs, const VarToAbsValMap &rhs) const
Map< u32_t, AbstractValue > VarToAbsValMap
AbstractState sliceState(Set< u32_t > &sl)
Copy some values and return a new IntervalExeState.
void extractSubVars(const Z3Expr &expr, Set< u32_t > &res)
Extract sub SVFVar IDs of a Z3Expr.
Z3Expr gamma_hat(const AbstractState &exeState) const
Return Z3Expr according to valToValMap.
static z3::context & getContext()
std::string sucMsg(const std::string &msg)
Returns successful message by converting a string into green string output.
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set