Пример #1
0
        /// <summary>
        /// Add <paramref name="this"/> to abstract successors if <paramref name="this"/> satisfies the invariants.
        /// </summary>
        /// <param name="currIndex"></param>
        /// <param name="pred"></param>
        /// <param name="abstract_succs"></param>
        /// <param name="abstract_succs_SW"></param>
        void AddToAbstractSuccessorsIfInvSat(int currIndex, StateImpl pred, HashSet <int> abstract_succs, StreamWriter abstract_succs_SW)
        {
            int p_hash = symmetryReduction ? pred.GetHashCode(true) : pred.GetHashCode();
            int hash   = symmetryReduction ?      GetHashCode(true) :      GetHashCode();

            // Console.WriteLine(this.ToPrettyString());

            if (mode == ExploreMode.Find_A_AP) // if we are locating a and ap
            {
                if (succHash == hash)
                {
                    predHash = p_hash;
                    throw new SuccessorFound(pred, this);
                }
            }

            if (invariant ? CheckAbstractStateInvariant(currIndex) && CheckTransInvariant(currIndex, pred) : true)
            {
                if (abstract_succs.Add(hash))
                {
                    if (FileDump)
                    {
                        abstract_succs_SW.Write(ToPrettyString());
                        abstract_succs_SW.WriteLine("==================================================");
                    }
                }
            }
        }
Пример #2
0
        public void DbgCompare(StateImpl state)
        {
            Debug.Assert(implMachines.Count == state.implMachines.Count);
            for (int i = 0; i < implMachines.Count; i++)
            {
                implMachines[i].DbgCompare(state.implMachines[i]);
            }

            Debug.Assert(specMachinesMap.Count == state.specMachinesMap.Count);
            foreach (var tup in specMachinesMap)
            {
                Debug.Assert(state.specMachinesMap.ContainsKey(tup.Key));
                tup.Value.DbgCompare(state.specMachinesMap[tup.Key]);
            }

            Debug.Assert(GetHashCode() == state.GetHashCode());
        }