/** Constructor. * @param da_1 The first DA * @param da_2 the second DA * @param trueloop_check Check for trueloops? * @param detailed_states Generate detailed descriptions of the states? */ //bool trueloop_check=true, bool detailed_states=false public DAUnionAlgorithm(DA da_1, DA da_2, bool trueloop_check, bool detailed_states) { _da_1 = da_1; _da_2 = da_2; _acceptance_calculator = new UnionAcceptanceCalculator(da_1.acceptance(), da_2.acceptance()); _trueloop_check = trueloop_check; _detailed_states = detailed_states; if (!(_da_1.getAPSet() == _da_2.getAPSet())) { throw new IllegalArgumentException("Can't create union of DAs: APSets don't match"); } APSet combined_ap = da_1.getAPSet(); if (!_da_1.isCompact() || !_da_2.isCompact()) { throw new IllegalArgumentException("Can't create union of DAs: Not compact"); } _result_da = da_1.createInstance(combined_ap); }
/** Constructor. * @param da_state_1_ index of the state in the first automaton * @param da_state_2_ index of the state in the second automaton * @param acceptance_calculator UnionAcceptanceCalculator */ //template <typename AcceptanceCalc> public UnionState(int da_state_1_, int da_state_2_, UnionAcceptanceCalculator acceptance_calculator) { da_state_1 = da_state_1_; da_state_2 = da_state_2_; signature = acceptance_calculator.calculateAcceptance(da_state_1, da_state_2); }