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
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
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')
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.')
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))