示例#1
0
文件: ivy_solver.py 项目: odedp/ivy
def sort_card(sort):
    sig = lookup_native(sort, sorts, "sort") or sort.to_z3()
    if z3.is_bv_sort(sig):
        return 2 ** sig.size()
    if isinstance(sig, z3.DatatypeSortRef):
        return sig.num_constructors()
    return None
示例#2
0
文件: ivy_solver.py 项目: xornand/ivy
def sort_card(sort):
    sig = lookup_native(sort, sorts, "sort") or sort.to_z3()
    if z3.is_bv_sort(sig):
        return 2**sig.size()
    if isinstance(sig, z3.DatatypeSortRef):
        return sig.num_constructors()
    return None
示例#3
0
def GetValFromType(typ, raw_val):
    srt = GetSortFromType(typ)
    if srt == IntSort():
        return IntVal(raw_val)
    elif srt == BoolSort():
        return BoolVal(raw_val)
    elif is_bv_sort(srt):
        sz = srt.size()
        return BitVecVal(raw_val, sz)
    else:
        raise SynthException('Unknown sort')
示例#4
0
def GetStringFromType(typ):
    srt = GetSortFromType(typ)
    if srt == IntSort():
        return 'Int'
    elif srt == BoolSort():
        return 'Bool'
    elif is_bv_sort(srt):
        sz = srt.size()
        return '(BitVec ' + str(sz) + ')'
    else:
        raise SynthException('Unknonw sort for string conversion.')
示例#5
0
def GetValFromType(typ, raw_val):
    srt = GetSortFromType(typ)
    if srt == IntSort():
        return IntVal(raw_val)
    elif srt == BoolSort():
        return BoolVal(raw_val)
    elif is_bv_sort(srt):
        sz = srt.size()
        return BitVecVal(raw_val, sz)
    else:
        raise SynthException('Unknown sort')
示例#6
0
def GetStringFromType(typ):
    srt = GetSortFromType(typ)
    if srt == IntSort():
        return 'Int'
    elif srt == BoolSort():
        return 'Bool'
    elif is_bv_sort(srt):
        sz = srt.size()
        return '(BitVec ' + str(sz) + ')'
    else:
        raise SynthException('Unknonw sort for string conversion.')
示例#7
0
def recreate_vars(new_vars, formula):
    """Add quantified variables from formula to the new_vars list.
    """
    for i in range(formula.num_vars()):
        name = formula.var_name(i)

        # Type BV
        if z3.is_bv_sort(formula.var_sort(i)):
            size = formula.var_sort(i).size()
            new_vars.append(z3.BitVec(name, size))

        # Type Bool
        elif formula.var_sort(i).is_bool():
            new_vars.append(z3.Bool(name))

        else:
            raise ValueError("Unknown type of the variable:",
                             formula.var_sort(i))