public void MakeOneStep(Transduction move) { char c = TransductionUtil.ToChar(move); IEnumerable <Move <BvSet> > movesFromCurrent = moveAutomaton.GetMovesFrom(currentState); foreach (Move <BvSet> m in movesFromCurrent) { if (!solver.MkAnd(m.Condition, solver.MkCharConstraint(true, c)).IsEmpty) { currentState = m.TargetState; return; } } throw new Exception("Move not available"); }
public List <Transduction> AvailableMoves() { IEnumerable <Move <BvSet> > movesFromCurrent = moveAutomaton.GetMovesFrom(currentState); BvSet availableMoves = solver.MkAnd(solver.MkCharConstraint(true, '2'), solver.MkCharConstraint(true, '3')); List <char> charl; foreach (Move <BvSet> m in movesFromCurrent) { charl = solver.GenerateAllCharacters(m.Condition, false).ToList(); availableMoves = solver.MkOr(m.Condition, availableMoves); } List <Transduction> movel = new List <Transduction>(); IEnumerable <char> chare = solver.GenerateAllCharacters(availableMoves, false); //charl = chare.ToList(); foreach (Char c in chare) { movel.Add(TransductionUtil.ToMove(c)); } return(movel); }