def atom_to_z3(atom): if ivy_logic.is_equals(atom.rep) and ivy_logic.is_enumerated(atom.args[0]) and not use_z3_enums: return encode_equality(*atom.args) if atom.relname not in z3_predicates: rel = lookup_native(atom.relname,relations,"relation") # print "atom: {}, rep: {}, rep.sort: {}".format(atom,atom.rep,atom.rep.sort) if not rel: sig = atom.rep.sort.to_z3() rel = z3.Function(solver_name(atom.rep), *sig) z3_predicates[atom.relname] = rel # return z3_predicates[atom.relname]( # *[term_to_z3(t) for t in atom.args]) pred = z3_predicates[atom.relname] tup = [term_to_z3(t) for t in atom.args] return apply_z3_func(pred,tup)
def atom_to_z3(atom): if ivy_logic.is_equals(atom.rep) and ivy_logic.is_enumerated(atom.args[0]): return encode_equality(*atom.args) if atom.relname not in z3_predicates: rel = lookup_native(atom.relname, relations, "relation") # print "atom: {}, rep: {}, rep.sort: {}".format(atom,atom.rep,atom.rep.sort) if not rel: sig = atom.rep.sort.to_z3() rel = z3.Function(atom.rep.name, *sig) z3_predicates[atom.relname] = rel # return z3_predicates[atom.relname]( # *[term_to_z3(t) for t in atom.args]) pred = z3_predicates[atom.relname] tup = [term_to_z3(t) for t in atom.args] return apply_z3_func(pred, tup)
def atom_to_z3(atom): if ivy_logic.is_equals(atom.rep) and ivy_logic.is_enumerated(atom.args[0]) and not use_z3_enums: return encode_equality(*atom.args) if atom.relname not in z3_predicates: rel = lookup_native(atom.relname,relations,"relation") # print "atom: {}, rep: {}, rep.sort: {}".format(atom,atom.rep,atom.rep.sort) if not rel: if atom.rep.name in polymacs and iu.ivy_use_polymorphic_macros: rel = get_polymacs(atom.rep) else: sig = atom.rep.sort.to_z3() rel = z3.Function(solver_name(atom.rep), *sig) if isinstance(sig,list) else z3.Const(solver_name(atom.rep),sig) z3_predicates[atom.relname] = rel # return z3_predicates[atom.relname]( # *[term_to_z3(t) for t in atom.args]) pred = z3_predicates[atom.relname] tup = [term_to_z3(t) for t in atom.args] return apply_z3_func(pred,tup)
def atom_to_z3(atom): if ivy_logic.is_equals(atom.rep) and ivy_logic.is_enumerated(atom.args[0]) and not use_z3_enums: return encode_equality(*atom.args) if atom.relname not in z3_predicates: rel = lookup_native(atom.relname, relations, "relation") # print "atom: {}, rep: {}, rep.sort: {}".format(atom,atom.rep,atom.rep.sort) if not rel: if atom.rep.name in polymacs and iu.ivy_use_polymorphic_macros: rel = get_polymacs(atom.rep) else: sig = atom.rep.sort.to_z3() rel = ( z3.Function(solver_name(atom.rep), *sig) if isinstance(sig, list) else z3.Const(solver_name(atom.rep), sig) ) z3_predicates[atom.relname] = rel # return z3_predicates[atom.relname]( # *[term_to_z3(t) for t in atom.args]) pred = z3_predicates[atom.relname] tup = [term_to_z3(t) for t in atom.args] return apply_z3_func(pred, tup)