def refuted_goal(goal): from z3_utils import z3_implies axioms = _ivy_interp.background_theory() premise = (and_clauses(axioms, goal.node.clauses)).to_formula() f = Not(goal.formula.to_formula()) return z3_implies(premise, f)
def try_conjectures(s): axioms = _analysis_session.analysis_state.ivy_interp.background_theory() premise = (and_clauses(axioms, s.clauses)).to_formula() return [ ('conj: {}'.format(conj), try_conjecture, conj) for conj in _analysis_session.analysis_state.ivy_interp.conjs if not z3_implies(premise, conj.to_formula()) ]
def alpha(concept_domain, state, cache=None): """ Right now, state is just a plain formula This is a *very* unoptimized implementation """ if z3_implies(state, Or()): return [(tag, True) for tag, formula in concept_domain.get_facts()] if cache is None: cache = dict() facts = concept_domain.get_facts() result = [] for tag, formula in facts: if tag in cache: value = cache[tag] else: # assert len(cache) == 0, tag value = z3_implies(state, formula) result.append((tag, value)) return result
def is_witness(c): try: return z3_implies(f, Eq(x, c)) except SortError: return False
def try_conjectures(s): axioms = _analysis_session.analysis_state.ivy_interp.background_theory() premise = (and_clauses(axioms, s.clauses)).to_formula() return [('conj: {}'.format(conj), try_conjecture, conj) for conj in _analysis_session.analysis_state.ivy_interp.conjs if not z3_implies(premise, conj.to_formula())]