Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 2
0
        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);
        }