Пример #1
0
def set_pp_option(k, v):
    if k == 'html_mode':
        if v:
            set_html_mode(True)
        else:
            set_html_mode(False)
        return True
    if k == 'fpa_pretty':
        if v:
            set_fpa_pretty(True)
        else:
            set_fpa_pretty(False)
        return True
    val = getattr(_PP, k, None)
    if val != None:
        z3._z3_assert(
            type(v) == type(val), "Invalid pretty print option value")
        setattr(_PP, k, v)
        return True
    val = getattr(_Formatter, k, None)
    if val != None:
        z3._z3_assert(
            type(v) == type(val), "Invalid pretty print option value")
        setattr(_Formatter, k, v)
        return True
    return False
Пример #2
0
def print_matrix(m):
    z3._z3_assert(isinstance(m, list) or isinstance(m, tuple), "matrix expected")
    if not in_html_mode():
        print obj_to_string(m)
    else:
        print '<table cellpadding="2", cellspacing="0", border="1">'
        for r in m:
            z3._z3_assert(isinstance(r, list) or isinstance(r, tuple), "matrix expected")
            print '<tr>'
            for c in r:
                print '<td>%s</td>' % c
            print '</tr>'
        print '</table>'
Пример #3
0
def print_matrix(m):
    z3._z3_assert(isinstance(m, list) or isinstance(m, tuple), "matrix expected")
    if not in_html_mode():
        print(obj_to_string(m))
    else:
        print('<table cellpadding="2", cellspacing="0", border="1">')
        for r in m:
            z3._z3_assert(isinstance(r, list) or isinstance(r, tuple), "matrix expected")
            print('<tr>')
            for c in r:
                print('<td>%s</td>' % c)
            print('</tr>')
        print('</table>')
Пример #4
0
    def pp_fp(self, a, d, xs):
        z3._z3_assert(isinstance(a, z3.FPRef), "type mismatch")
        k = a.decl().kind()
        op = '?'
        if (self.fpa_pretty and k in _z3_op_to_fpa_pretty_str):
            op = _z3_op_to_fpa_pretty_str[k]
        elif k in _z3_op_to_fpa_normal_str:
            op = _z3_op_to_fpa_normal_str[k]
        elif k in _z3_op_to_str:
            op = _z3_op_to_str[k]

        n = a.num_args()

        if self.fpa_pretty:
            if self.is_infix(k) and n >= 3:
                rm = a.arg(0)
                if z3.is_fprm_value(rm) and z3._dflt_rm(a.ctx).eq(rm):
                    arg1 = to_format(self.pp_expr(a.arg(1), d + 1, xs))
                    arg2 = to_format(self.pp_expr(a.arg(2), d + 1, xs))
                    r = []
                    r.append(arg1)
                    r.append(to_format(' '))
                    r.append(to_format(op))
                    r.append(to_format(' '))
                    r.append(arg2)
                    return compose(r)
            elif k == Z3_OP_FPA_NEG:
                return compose([
                    to_format('-'),
                    to_format(self.pp_expr(a.arg(0), d + 1, xs))
                ])

        if k in _z3_op_to_fpa_normal_str:
            op = _z3_op_to_fpa_normal_str[k]

        r = []
        r.append(to_format(op))
        if not z3.is_const(a):
            r.append(to_format('('))
            first = True
            for c in a.children():
                if first:
                    first = False
                else:
                    r.append(to_format(', '))
                r.append(self.pp_expr(c, d + 1, xs))
            r.append(to_format(')'))
            return compose(r)
        else:
            return to_format(a.as_string())
Пример #5
0
    def pp_fp(self, a, d, xs):
        z3._z3_assert(isinstance(a, z3.FPRef), "type mismatch")
        k = a.decl().kind()
        op = '?'
        if (self.fpa_pretty and k in _z3_op_to_fpa_pretty_str):
            op = _z3_op_to_fpa_pretty_str[k]
        elif k in _z3_op_to_fpa_normal_str:
            op = _z3_op_to_fpa_normal_str[k]
        elif k in _z3_op_to_str:
            op = _z3_op_to_str[k]        

        n = a.num_args()

        if self.fpa_pretty:
            if self.is_infix(k) and n >= 3:            
                rm = a.arg(0)
                if z3.is_fprm_value(rm) and z3._dflt_rm(a.ctx).eq(rm):
                    arg1 = to_format(self.pp_expr(a.arg(1), d+1, xs))
                    arg2 = to_format(self.pp_expr(a.arg(2), d+1, xs))
                    r = []
                    r.append(arg1)
                    r.append(to_format(' '))
                    r.append(to_format(op))
                    r.append(to_format(' '))
                    r.append(arg2)
                    return compose(r)
            elif k == Z3_OP_FPA_NEG:
                return compose([to_format('-') , to_format(self.pp_expr(a.arg(0), d+1, xs))])

        if k in _z3_op_to_fpa_normal_str:
            op = _z3_op_to_fpa_normal_str[k]
        
        r = []        
        r.append(to_format(op))
        if not z3.is_const(a):
            r.append(to_format('('))                        
            first = True
            for c in a.children():                
                if first:
                    first = False
                else:
                    r.append(to_format(', '))
                r.append(self.pp_expr(c, d+1, xs))
            r.append(to_format(')'))
            return compose(r)
        else:
            return to_format(a.as_string())
Пример #6
0
def set_pp_option(k, v):
    if k == 'html_mode':
        if v:
            set_html_mode(True)
        else:
            set_html_mode(False)
        return True
    val = getattr(_PP, k, None)
    if val != None:
        z3._z3_assert(type(v) == type(val), "Invalid pretty print option value")
        setattr(_PP, k, v)
        return True
    val = getattr(_Formatter, k, None)
    if val != None:
        z3._z3_assert(type(v) == type(val), "Invalid pretty print option value")
        setattr(_Formatter, k, v)
        return True
    return False
Пример #7
0
 def pp_fp_value(self, a):
     z3._z3_assert(isinstance(a, z3.FPNumRef), 'type mismatch')
     if not self.fpa_pretty:            
         if (a.isNaN()):
             return to_format('NaN')
         elif (a.isInf()):
             if (a.isNegative()):
                 return to_format('-oo')
             else:
                 return to_format('+oo')
         elif (a.isZero()):
             if (a.isNegative()):
                 return to_format('-zero')
             else:
                 return to_format('+zero')
         else:
             z3._z3_assert(z3.is_fp_value(a), 'expecting FP num ast')
             r = []
             sgn = c_int(0)
             sgnb = Z3_fpa_get_numeral_sign(a.ctx_ref(), a.ast, byref(sgn))
             sig = Z3_fpa_get_numeral_significand_string(a.ctx_ref(), a.ast)
             exp = Z3_fpa_get_numeral_exponent_string(a.ctx_ref(), a.ast)
             r.append(to_format('FPVal('))
             if sgnb and sgn.value != 0:
                 r.append(to_format('-'))
             r.append(to_format(sig))
             r.append(to_format('*(2**'))
             r.append(to_format(exp))
             r.append(to_format(', '))
             r.append(to_format(a.sort()))
             r.append(to_format('))'))
             return compose(r)
     else:
         if (a.isNaN()):
             return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_NAN])
         elif (a.isInf()):
             if (a.isNegative()):
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_MINUS_INF])
             else:
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_PLUS_INF])
         elif (a.isZero()):
             if (a.isNegative()):
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_MINUS_ZERO])
             else:
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_PLUS_ZERO])
         else:
             z3._z3_assert(z3.is_fp_value(a), 'expecting FP num ast')
             r = []
             sgn = (ctypes.c_int)(0)
             sgnb = Z3_fpa_get_numeral_sign(a.ctx_ref(), a.ast, byref(sgn))
             sig = Z3_fpa_get_numeral_significand_string(a.ctx_ref(), a.ast)
             exp = Z3_fpa_get_numeral_exponent_string(a.ctx_ref(), a.ast)
             if sgnb and sgn.value != 0:
                 r.append(to_format('-'))
             r.append(to_format(sig))
             if (exp != '0'):
                 r.append(to_format('*(2**'))
                 r.append(to_format(exp))
                 r.append(to_format(')'))                
             return compose(r)
Пример #8
0
 def pp_fp_value(self, a):
     z3._z3_assert(isinstance(a, z3.FPNumRef), 'type mismatch')
     if not self.fpa_pretty:            
         if (a.isNaN()):
             return to_format('NaN')
         elif (a.isInf()):
             if (a.isNegative()):
                 return to_format('-oo')
             else:
                 return to_format('+oo')
         elif (a.isZero()):
             if (a.isNegative()):
                 return to_format('-zero')
             else:
                 return to_format('+zero')
         else:
             z3._z3_assert(z3.is_fp_value(a), 'expecting FP num ast')
             r = []
             sgn = c_int(0)
             sgnb = Z3_fpa_get_numeral_sign(a.ctx_ref(), a.ast, byref(sgn))
             sig = Z3_fpa_get_numeral_significand_string(a.ctx_ref(), a.ast)
             exp = Z3_fpa_get_numeral_exponent_string(a.ctx_ref(), a.ast)
             r.append(to_format('FPVal('))
             if sgnb and sgn.value != 0:
                 r.append(to_format('-'))
             r.append(to_format(sig))
             r.append(to_format('*(2**'))
             r.append(to_format(exp))
             r.append(to_format(', '))
             r.append(to_format(a.sort()))
             r.append(to_format('))'))
             return compose(r)
     else:
         if (a.isNaN()):
             return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_NAN])
         elif (a.isInf()):
             if (a.isNegative()):
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_MINUS_INF])
             else:
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_PLUS_INF])
         elif (a.isZero()):
             if (a.isNegative()):
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_MINUS_ZERO])
             else:
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_PLUS_ZERO])
         else:
             z3._z3_assert(z3.is_fp_value(a), 'expecting FP num ast')
             r = []
             sgn = (ctypes.c_int)(0)
             sgnb = Z3_fpa_get_numeral_sign(a.ctx_ref(), a.ast, byref(sgn))
             sig = Z3_fpa_get_numeral_significand_string(a.ctx_ref(), a.ast)
             exp = Z3_fpa_get_numeral_exponent_string(a.ctx_ref(), a.ast)
             if sgnb and sgn.value != 0:
                 r.append(to_format('-'))
             r.append(to_format(sig))
             if (exp != '0'):
                 r.append(to_format('*(2**'))
                 r.append(to_format(exp))
                 r.append(to_format(')'))                
             return compose(r)
Пример #9
0
 def pp_fp_value(self, a):
     z3._z3_assert(isinstance(a, z3.FPNumRef), "type mismatch")
     if not self.fpa_pretty:
         if a.isNaN():
             return to_format("NaN")
         elif a.isInf():
             if a.isNegative():
                 return to_format("-oo")
             else:
                 return to_format("+oo")
         elif a.isZero():
             if a.isNegative():
                 return to_format("-zero")
             else:
                 return to_format("+zero")
         else:
             z3._z3_assert(z3.is_fp_value(a), "expecting FP num ast")
             r = []
             sgn = c_int(0)
             sgnb = Z3_fpa_get_numeral_sign(a.ctx_ref(), a.ast, byref(sgn))
             sig = Z3_fpa_get_numeral_significand_string(a.ctx_ref(), a.ast)
             exp = Z3_fpa_get_numeral_exponent_string(a.ctx_ref(), a.ast)
             r.append(to_format("FPVal("))
             if sgnb and sgn.value != 0:
                 r.append(to_format("-"))
             r.append(to_format(sig))
             r.append(to_format("*(2**"))
             r.append(to_format(exp))
             r.append(to_format(", "))
             r.append(to_format(a.sort()))
             r.append(to_format("))"))
             return compose(r)
     else:
         if a.isNaN():
             return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_NAN])
         elif a.isInf():
             if a.isNegative():
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_MINUS_INF])
             else:
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_PLUS_INF])
         elif a.isZero():
             if a.isNegative():
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_MINUS_ZERO])
             else:
                 return to_format(_z3_op_to_fpa_pretty_str[Z3_OP_FPA_PLUS_ZERO])
         else:
             z3._z3_assert(z3.is_fp_value(a), "expecting FP num ast")
             r = []
             sgn = (ctypes.c_int)(0)
             sgnb = Z3_fpa_get_numeral_sign(a.ctx_ref(), a.ast, byref(sgn))
             sig = Z3_fpa_get_numeral_significand_string(a.ctx_ref(), a.ast)
             exp = Z3_fpa_get_numeral_exponent_string(a.ctx_ref(), a.ast)
             if sgnb and sgn.value != 0:
                 r.append(to_format("-"))
             r.append(to_format(sig))
             if exp != "0":
                 r.append(to_format("*(2**"))
                 r.append(to_format(exp))
                 r.append(to_format(")"))
             return compose(r)
Пример #10
0
 def pp_fprm_value(self, a):
     z3._z3_assert(z3.is_fprm_value(a), 'expected FPRMNumRef')
     if self.fpa_pretty and (a.decl().kind() in _z3_op_to_fpa_pretty_str):
         return to_format(_z3_op_to_fpa_pretty_str.get(a.decl().kind()))
     else:
         return to_format(_z3_op_to_fpa_normal_str.get(a.decl().kind()))
Пример #11
0
 def pp_fprm_value(self, a):
     z3._z3_assert(z3.is_fprm_value(a), 'expected FPRMNumRef')
     if self.fpa_pretty and (a.decl().kind() in _z3_op_to_fpa_pretty_str):
         return to_format(_z3_op_to_fpa_pretty_str.get(a.decl().kind()))
     else:
         return to_format(_z3_op_to_fpa_normal_str.get(a.decl().kind()))