use of dartagnan.utils.MapSSA in project Dat3M by hernanponcedeleon.
the class If method encodeDF.
public Pair<BoolExpr, MapSSA> encodeDF(MapSSA map, Context ctx) throws Z3Exception {
myGuard = pred.toZ3(map, ctx);
if (mainThread == null) {
System.out.println(String.format("Check encodeDF for %s", this));
return null;
} else {
MapSSA map1 = map.clone();
MapSSA map2 = map.clone();
BoolExpr enc = ctx.mkAnd(ctx.mkImplies(ctx.mkBoolConst(t1.cfVar()), pred.toZ3(map, ctx)), ctx.mkImplies(ctx.mkBoolConst(t2.cfVar()), ctx.mkNot(pred.toZ3(map, ctx))));
Pair<BoolExpr, MapSSA> p1 = t1.encodeDF(map1, ctx);
enc = ctx.mkAnd(enc, p1.getFirst());
Pair<BoolExpr, MapSSA> p2 = t2.encodeDF(map2, ctx);
enc = ctx.mkAnd(enc, p2.getFirst());
enc = ctx.mkAnd(enc, encodeMissingIndexes(this, map1, map2, ctx));
map = mergeMaps(map1, map2);
return new Pair<BoolExpr, MapSSA>(enc, map);
}
}