kdrag.theories.logic.axioms.unfold

kdrag.theories.logic.axioms.unfold(e: ExprRef, defn_eqs: Sequence[Proof])

Unfold a definitional equation. The order of variables is off from what kd.define returns.

>>> x = smt.Int("x")
>>> y = smt.Real("y")
>>> f = smt.Function("test_f", smt.IntSort(), smt.RealSort(), smt.RealSort())
>>> defn = kd.axiom(smt.ForAll([y,x], f(x,y) == (x + 2*y)))
>>> unfold(f(7,8), [defn])
|= test_f(7, 8) == ToReal(7) + 2*8
Parameters:
  • e (ExprRef)

  • defn_eqs (Sequence[Proof])