コード例 #1
0
ファイル: logic.py プロジェクト: sllam/chrcp
def Or(*args):
	size = len(args)
	clause  = args[size-1].cons
	justify = args[size-1].justify
	curr = size-2
	while curr >= 0:
		clause  = z3.Or(args[curr].cons,clause)
		justify += args[curr].justify
		curr -= 1
	a = SMTConstraint(clause)
	a.justify = justify
	return a
コード例 #2
0
ファイル: logic.py プロジェクト: sllam/chrcp
def And(*args):
    size = len(args)
    clause = args[size - 1].cons
    justify = args[size - 1].justify
    curr = size - 2
    while curr >= 0:
        clause = z3.And(args[curr].cons, clause)
        justify += args[curr].justify
        curr -= 1
    a = SMTConstraint(clause)
    a.justify = justify
    return a
コード例 #3
0
ファイル: logic.py プロジェクト: sllam/chrcp
def implies(ps, cs):
    i = SMTConstraint(z3.Implies(ps.cons, cs.cons))
    i.justify += ps.justify + cs.justify
    return i
コード例 #4
0
ファイル: logic.py プロジェクト: sllam/chrcp
def empty(xs):
    return SMTConstraint(empty_f(xs))
コード例 #5
0
ファイル: logic.py プロジェクト: sllam/chrcp
def mem(x, xs):
    return SMTConstraint(mem_f(x, xs))
コード例 #6
0
ファイル: logic.py プロジェクト: sllam/chrcp
def exists(vs, cs):
    f = SMTConstraint(z3.Exists(vs, cs.cons))
    f.justify = cs.justify
    return f
コード例 #7
0
ファイル: logic.py プロジェクト: sllam/chrcp
def forall(vs, cs):
    f = SMTConstraint(z3.ForAll(vs, cs.cons))
    f.justify = cs.justify
    return f
コード例 #8
0
ファイル: logic.py プロジェクト: sllam/chrcp
def Not(cs):
    n = SMTConstraint(z3.Not(cs.cons))
    n.justify = cs.justify
    return n
コード例 #9
0
ファイル: logic.py プロジェクト: sllam/chrcp
def exists(vs, cs):
	f = SMTConstraint( z3.Exists(vs, cs.cons) )
	f.justify = cs.justify
	return f
コード例 #10
0
ファイル: logic.py プロジェクト: sllam/chrcp
def forall(vs, cs):
	f = SMTConstraint( z3.ForAll(vs, cs.cons) )
	f.justify = cs.justify
	return f
コード例 #11
0
ファイル: logic.py プロジェクト: sllam/chrcp
def Not(cs):
	n = SMTConstraint( z3.Not(cs.cons) )
	n.justify = cs.justify
	return n