/** * 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); }
/** Is this state in U[pair_index] */ public bool isIn_U(int pair_index) { return(_acceptance.isStateInAcceptance_U(pair_index, _state_index)); }