Ejemplo n.º 1
0
        public EventBAPairSafety[] Next(BuchiAutomata BA, ConfigurationBase[] steps)
        {
            EventBAPairSafety[] product = new EventBAPairSafety[steps.Length]; // * BA.States.Length);

            for (int i = 0; i < steps.Length; i++)
            {
                List <string> targetStates = new List <string>();

                foreach (string state in States)
                {
                    List <string> states = BA.MakeOneMove(state, steps[i]);
                    Ultility.Ultility.Union(targetStates, states);
                }

                product[i] = new EventBAPairSafety(steps[i], targetStates);
            }

            return(product);
        }
Ejemplo n.º 2
0
        public static EventBAPairSafety GetInitialPairs(BuchiAutomata BA, ConfigurationBase initialStep)
        {
            List <string> intialBAStates = new List <string>();

            //List<string> existed = new List<string>();

            foreach (string s in BA.InitialStates)
            {
                List <string> next = BA.MakeOneMove(s, initialStep);

                foreach (string var in next)
                {
                    if (!intialBAStates.Contains(var))
                    {
                        //existed.Add(var);
                        intialBAStates.Add(var);
                    }
                }
            }

            return(new EventBAPairSafety(initialStep, intialBAStates));
        }
Ejemplo n.º 3
0
        public static List<EventBAPairSafetyPCSP> Next(BuchiAutomata BA, MDPConfiguration[] steps, List<string> BAStates)
        {
            List<EventBAPairSafetyPCSP> product = new List<EventBAPairSafetyPCSP>(steps.Length * BA.States.Length);

            for (int i = 0; i < steps.Length; i++)
            {
                List<string> targetStates = new List<string>();

                foreach (string state in BAStates)
                {
                    List<string> states = BA.MakeOneMove(state, steps[i]);
                    Common.Classes.Ultility.Ultility.Union(targetStates, states);
                }

                product.Add(new EventBAPairSafetyPCSP(steps[i], targetStates));
            }

            return product;
        }
Ejemplo n.º 4
0
        public static EventBAPairSafetyPCSP GetInitialPairs(BuchiAutomata BA, MDPConfiguration initialStep)
        {
            List<string> intialBAStates = new List<string>();
            //HashSet<string> existed = new HashSet<string>();

            foreach (string s in BA.InitialStates)
            {
                List<string> next = BA.MakeOneMove(s, initialStep);

                foreach (string var in next)
                {
                    //if (!existed.Contains(var))
                    //{
                    //    existed.Add(var);
                    //    intialBAStates.Add(var);
                    //}
                    if (!intialBAStates.Contains(var))
                    {
                        intialBAStates.Add(var);
                    }
                }
            }

            return new EventBAPairSafetyPCSP(initialStep, intialBAStates);
        }
Ejemplo n.º 5
0
        public static List<LocalPair> NextLocal(BuchiAutomata BA, IEnumerable<ConfigurationBase> steps, string BAState)
        {
            List<LocalPair> product = new List<LocalPair>(steps.Count() * BA.States.Length);

            //for (int i = 0; i < steps.Length; i++)
            foreach (var step in steps)
            {
                //ConfigurationBase step = steps[i];
                List<string> states = BA.MakeOneMove(BAState, step);

                for (int j = 0; j < states.Count; j++)
                {
                    product.Add(new LocalPair(step, states[j]));
                }
            }

            return product;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Given one environment, get the initial states of the product of the system and the automata. Notice that the automata 
        /// is allowed to make one move first. This is necessary to check the very first state of the system. 
        /// </summary>
        /// <param name="initialStep"></param>
        /// <returns></returns>
        public static List<LocalPair> GetInitialPairsLocal(BuchiAutomata BA, ConfigurationBase initialStep)
        {
            List<LocalPair> toReturn = new List<LocalPair>();
            HashSet<string> existed = new HashSet<string>();

            foreach (string s in BA.InitialStates)
            {
                List<string> next = BA.MakeOneMove(s, initialStep);

                foreach (string var in next)
                {
                    if (existed.Add(var))
                    {
                        toReturn.Add(new LocalPair(initialStep, var));
                    }
                }
            }

            return toReturn;
        }
Ejemplo n.º 7
0
        public EventBAPairSafety[] Next(BuchiAutomata BA, ConfigurationBase[] steps)
        {
            EventBAPairSafety[] product = new EventBAPairSafety[steps.Length]; // * BA.States.Length);

            for (int i = 0; i < steps.Length; i++)
            {
                List<string> targetStates = new List<string>();

                foreach (string state in States)
                {
                    List<string> states = BA.MakeOneMove(state, steps[i]);
                    Ultility.Ultility.Union(targetStates, states);
                }

                product[i] = new EventBAPairSafety(steps[i], targetStates);
            }

            return product;
        }
Ejemplo n.º 8
0
        public static EventBAPairSafety GetInitialPairs(BuchiAutomata BA, ConfigurationBase initialStep)
        {
            List<string> intialBAStates = new List<string>();
            //List<string> existed = new List<string>();

            foreach (string s in BA.InitialStates)
            {
                List<string> next = BA.MakeOneMove(s, initialStep);

                foreach (string var in next)
                {
                    if (!intialBAStates.Contains(var))
                    {
                        //existed.Add(var);
                        intialBAStates.Add(var);
                    }
                }
            }

            return new EventBAPairSafety(initialStep, intialBAStates);
        }