@Override public BooleanFormula translate(FormulaManagerView fmgr) { BooleanFormula form = null; Formula lhs = LHS.translate(fmgr); Formula rhs = RHS.translate(fmgr); switch (reln) { case EQUAL: form = fmgr.makeEqual(lhs, rhs); break; case LEQ: form = fmgr.makeLessOrEqual(lhs, rhs, true); break; case LT: form = fmgr.makeLessThan(lhs, rhs, true); break; } return form; }
@Before public void setUp() throws Exception { requireArrays(); requireQuantifiers(); this.mgrv = new FormulaManagerView(factory, config, TestLogManager.getInstance()); this.solver = new Solver(mgrv, factory, config, TestLogManager.getInstance()); this.afm = mgrv.getArrayFormulaManager(); this.bfm = mgrv.getBooleanFormulaManager(); this.ifm = mgrv.getIntegerFormulaManager(); this.qfm = mgrv.getQuantifiedFormulaManager(); _x = ifm.makeVariable("x"); _b = afm.makeArray("b", FormulaType.IntegerType, FormulaType.IntegerType); _b_at_x_eq_1 = ifm.equal(afm.select(_b, _x), ifm.makeNumber(1)); _b_at_x_eq_0 = ifm.equal(afm.select(_b, _x), ifm.makeNumber(0)); _forall_x_bx_1 = qfm.forall(_x, _b_at_x_eq_1); _forall_x_bx_0 = qfm.forall(_x, _b_at_x_eq_0); }
@Override public BooleanFormula getInvariantFor( CFANode pNode, FormulaManagerView pFmgr, PathFormulaManager pfmgr) { return pFmgr.getBooleanFormulaManager().makeBoolean(true); }