Beispiel #1
0
 def walk_bv_not(self, formula, args, **kwargs):
     z3term = z3.Z3_mk_bvnot(self.ctx.ref(), args[0])
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #2
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
Beispiel #3
0
 def walk_bv_extract(self, formula, args, **kwargs):
     z3term = z3.Z3_mk_extract(self.ctx.ref(), formula.bv_extract_end(),
                               formula.bv_extract_start(), args[0])
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #4
0
 def walk_toreal(self, formula, args, **kwargs):
     z3term = z3.Z3_mk_int2real(self.ctx.ref(), args[0])
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #5
0
 def walk_function(self, formula, args, **kwargs):
     z3func = self._z3_func_decl(formula.function_name())
     _args, sz = self._to_ast_array(args)
     z3term = z3.Z3_mk_app(self.ctx.ref(), z3func, sz, _args)
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #6
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
Beispiel #7
0
 def walk_bool_constant(self, formula, **kwargs):
     _t = z3.BoolVal(formula.constant_value(), ctx=self.ctx)
     z3term = _t.as_ast()
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #8
0
 def walk_nary(self, formula, args, **kwargs):
     _args, sz = self._to_ast_array(args)
     z3term = func(self.ctx.ref(), sz, _args)
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #9
0
 def walk_binary(self, formula, args, **kwargs):
     z3term = func(self.ctx.ref(), args[0], args[1])
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #10
0
 def walk_bv_tonatural(self, formula, args, **kwargs):
     z3term = z3.Z3_mk_bv2int(self.ctx.ref(), args[0], False)
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #11
0
 def walk_array_store(self, formula, args, **kwargs):
     z3term = z3.Z3_mk_store(self.ctx.ref(), args[0], args[1], args[2])
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #12
0
 def walk_bv_sext(self, formula, args, **kwargs):
     z3term = z3.Z3_mk_sign_ext(self.ctx.ref(), formula.bv_extend_step(),
                                args[0])
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #13
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
Beispiel #14
0
 def walk_str_indexof(self, formula, args, **kwargs):
     z3term = z3.Z3_mk_seq_index(self.ctx.ref(), args[0], args[1], args[2])
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #15
0
 def walk_str_substr(self, formula, args, **kwargs):
     z3term = z3.Z3_mk_seq_extract(self.ctx.ref(), args[0], args[1], args[2])
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term
Beispiel #16
0
 def walk_str_length(self, formula, args, **kwargs):
     z3term = z3.Z3_mk_seq_length(self.ctx.ref(), args[0])
     z3.Z3_inc_ref(self.ctx.ref(), z3term)
     return z3term