public override TERM ExctractRaiseCondition(IContextCore <TERM> solver, TERM guard) { TERM tcond = trueCase.ExctractRaiseCondition(solver, And(solver, guard, condition)); TERM fcond = falseCase.ExctractRaiseCondition(solver, And(solver, guard, solver.MkNot(condition))); return(Or(solver, tcond, fcond)); }
public override TERM ExctractRaiseCondition(IContextCore <TERM> solver, TERM guard) { TERM cond = solver.False; TERM defaultcond = solver.True; foreach (var c in cases) { var set = solver.MkEq(input, c.Key); TERM guard1 = And(solver, guard, set); TERM cond1 = c.Value.ExctractRaiseCondition(solver, guard1); cond = Or(solver, cond, cond1); defaultcond = And(solver, defaultcond, solver.MkNot(set)); } cond = Or(solver, cond, defaultcase.ExctractRaiseCondition(solver, And(solver, guard, defaultcond))); return(cond); }