public override IEnumerable <Move <Rule <TERM> > > EnumerateMoves(IContextCore <TERM> solver, int source, TERM guard) { foreach (var move in trueCase.EnumerateMoves(solver, source, And(solver, guard, condition))) { yield return(move); } foreach (var move in falseCase.EnumerateMoves(solver, source, And(solver, guard, solver.MkNot(condition)))) { yield return(move); } }
public override IEnumerable <Move <Rule <TERM> > > EnumerateMoves(IContextCore <TERM> solver, int source, TERM guard) { TERM defaultcond = solver.True; foreach (var c in cases) { var set = solver.MkEq(input, c.Key); defaultcond = And(solver, defaultcond, solver.MkNot(set)); foreach (var m in c.Value.EnumerateMoves(solver, source, And(solver, guard, set))) { yield return(m); } } foreach (var m in defaultcase.EnumerateMoves(solver, source, And(solver, guard, defaultcond))) { yield return(m); } }