コード例 #1
0
def apply_match_func(match, func):
    sorts = func_sorts(func)
    sorts = [match.get(s, s) for s in sorts]
    return il.Symbol(func.name,
                     sorts[0] if len(sorts) == 1 else il.FunctionSort(*sorts))
コード例 #2
0
ファイル: ivy_solver.py プロジェクト: simudream/ivy
    #    # print clauses
    # print
    # z3_formula = clauses_to_z3(clauses)
    # print z3_formula
    # print
    # print

    # f = clauses_to_z3(ivy_logic.to_clauses("[[p()],[~p()]]"))
    # s = z3.Solver()
    # s.add(f)
    # print s.check() # should be unsat

    # f1 = clauses_to_z3(ivy_logic.to_clauses("[[p()]]"))
    # f2 = clauses_to_z3(ivy_logic.to_clauses("[[~p()]]"))
    # s = z3.Solver()
    # s.add(f1)
    # s.add(f2)
    # print s.check() # this is also unsat

    # ivy_logic.add_symbol('p',ivy_logic.RelationSort([ivy_logic.universe]))
    # cls = to_clauses("p(x) & ~p(y)")
    # print clauses_model_to_clauses(cls)

    s = ivy_logic.EnumeratedSort(["a", "b", "c"])
    for c in s.defines():
        t = add_symbol(c, s)
        ivy_logic.sig.constructors.add(t)
    add_symbol('f', ivy_logic.FunctionSort([ivy_logic.universe], s))
    cls = to_clauses("f(x) = a & f(y) = b")
    print clauses_model_to_clauses(cls)
コード例 #3
0
def get_function_sort(sig, args, rng, term=None):
    return ivy_logic.FunctionSort(*(get_arg_sorts(sig, args, term) +
                                    [rng])) if args else rng
コード例 #4
0
ファイル: ivy_isolate.py プロジェクト: kleopatra999/ivy
def strip_sort(sort, strip_params):
    dom = list(sort.dom[len(strip_params):])
    if dom or sort.is_relational():
        return ivy_logic.FunctionSort(*(dom + [sort.rng]))
    return sort.rng