Exemplo n.º 1
0
        /**
         * Calculate the acceptance signature for the union of two states.
         * @param da_state_1 index of the state in the first automaton
         * @param da_state_2 index of the state in the second automaton
         * @return A shared_ptr Rabin acceptance signature
         */
        public RabinSignature calculateAcceptance(int da_state_1, int da_state_2)
        {
            RabinSignature signature_p = new RabinSignature(_acc_size_1 + _acc_size_2);
            RabinSignature signature   = signature_p;

            for (int i = 0; i < _acc_size_1; i++)
            {
                if (_acc_1.isStateInAcceptance_L(i, da_state_1))
                {
                    signature.setL(i, true);
                }
                if (_acc_1.isStateInAcceptance_U(i, da_state_1))
                {
                    signature.setU(i, true);
                }
            }

            for (int j = 0; j < _acc_size_2; j++)
            {
                if (_acc_2.isStateInAcceptance_L(j, da_state_2))
                {
                    signature.setL(j + _acc_size_1, true);
                }
                if (_acc_2.isStateInAcceptance_U(j, da_state_2))
                {
                    signature.setU(j + _acc_size_1, true);
                }
            }

            return(signature_p);
        }
Exemplo n.º 2
0
 /** Is this state in U[pair_index] */
 public bool isIn_U(int pair_index)
 {
     return(_acceptance.isStateInAcceptance_U(pair_index, _state_index));
 }