Example #1
0
 def walk_bv_comp(self, formula, args, **kwargs):
     cond = z3.Z3_mk_eq(self.ctx.ref(), args[0], args[1])
     z3.Z3_inc_ref(self.ctx.ref(), cond)
     then_ = z3.Z3_mk_numeral(self.ctx.ref(), "1", self.z3BitVecSort(1).ast)
     z3.Z3_inc_ref(self.ctx.ref(), then_)
     else_ = z3.Z3_mk_numeral(self.ctx.ref(), "0", self.z3BitVecSort(1).ast)
     z3.Z3_inc_ref(self.ctx.ref(), else_)
     z3term = z3.Z3_mk_ite(self.ctx.ref(), cond, then_, else_)
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     # De-Ref since this is handled internally by Z3
     z3.Z3_dec_ref(self.ctx.ref(), cond)
     z3.Z3_dec_ref(self.ctx.ref(), then_)
     z3.Z3_dec_ref(self.ctx.ref(), else_)
     return z3term
Example #2
0
 def walk_bv_ror(self, formula, args, **kwargs):
     bvsort = self.z3BitVecSort(formula.bv_width())
     step = z3.Z3_mk_numeral(self.ctx.ref(),
                             str(formula.bv_rotation_step()), bvsort.ast)
     z3term = z3.Z3_mk_ext_rotate_right(self.ctx.ref(), args[0], step)
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Example #3
0
 def walk_real_constant(self, formula, **kwargs):
     frac = formula.constant_value()
     n, d = frac.numerator, frac.denominator
     rep = str(n) + "/" + str(d)
     z3term = z3.Z3_mk_numeral(self.ctx.ref(), rep, self.z3RealSort.ast)
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Example #4
0
 def walk_bv_constant(self, formula, **kwargs):
     value = formula.constant_value()
     z3term = z3.Z3_mk_numeral(self.ctx.ref(),
                               str(value),
                               self.z3BitVecSort(formula.bv_width()).ast)
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Example #5
0
 def walk_int_constant(self, formula, **kwargs):
     assert is_pysmt_integer(formula.constant_value())
     const = str(formula.constant_value())
     z3term = z3.Z3_mk_numeral(self.ctx.ref(),
                               const,
                               self.z3IntSort.ast)
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Example #6
0
 def walk_algebraic_constant(self, formula, **kwargs):
     rep = str(formula.constant_value())
     z3term = z3.Z3_mk_numeral(self.ctx.ref(), rep, self.z3RealSort.ast)
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term